From 96b49b5acbf5328ce2d317a7393db588a928926e Mon Sep 17 00:00:00 2001 From: Tim Chu Date: Thu, 8 Dec 2022 10:12:18 +0000 Subject: [PATCH] soc/intel/cmn/block/pmc: Add pmc_or_mmio32 utility function Change-Id: I5f9845dd3ea098d990710eaaa2d5db495f876cdd Signed-off-by: Tim Chu Signed-off-by: Johnny Lin Reviewed-on: https://review.coreboot.org/c/coreboot/+/71099 Tested-by: build bot (Jenkins) Reviewed-by: Angel Pons --- .../intel/common/block/include/intelblocks/pmclib.h | 2 ++ src/soc/intel/common/block/pmc/pmclib.c | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/soc/intel/common/block/include/intelblocks/pmclib.h b/src/soc/intel/common/block/include/intelblocks/pmclib.h index 62f27a9d5a..36049ba48a 100644 --- a/src/soc/intel/common/block/include/intelblocks/pmclib.h +++ b/src/soc/intel/common/block/include/intelblocks/pmclib.h @@ -135,6 +135,8 @@ void pmc_disable_all_gpe(void); /* Clear STD and GPIO GPE status registers. */ void pmc_clear_all_gpe_status(void); +/* Write PMC MMIO register value with the provided bitmask. */ +void pmc_or_mmio32(uint32_t offset, uint32_t ormask); /* Clear status bits in Power and Reset Status (PRSTS) register */ void pmc_clear_prsts(void); diff --git a/src/soc/intel/common/block/pmc/pmclib.c b/src/soc/intel/common/block/pmc/pmclib.c index 68bde41568..4786fc1b5a 100644 --- a/src/soc/intel/common/block/pmc/pmclib.c +++ b/src/soc/intel/common/block/pmc/pmclib.c @@ -367,6 +367,17 @@ void soc_clear_pm_registers(uintptr_t pmc_bar) { } +void pmc_or_mmio32(uint32_t offset, uint32_t ormask) +{ + uint32_t reg; + uintptr_t pmc_bar; + + pmc_bar = soc_read_pmc_base(); + reg = read32p(pmc_bar + offset); + reg |= ormask; + write32p(pmc_bar + offset, reg); +} + void pmc_clear_prsts(void) { uint32_t prsts;