aboutsummaryrefslogtreecommitdiff
path: root/src/soc/intel/common/block/pmc/pmclib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/common/block/pmc/pmclib.c')
-rw-r--r--src/soc/intel/common/block/pmc/pmclib.c29
1 files changed, 8 insertions, 21 deletions
diff --git a/src/soc/intel/common/block/pmc/pmclib.c b/src/soc/intel/common/block/pmc/pmclib.c
index d7362b6dc4..82b391b958 100644
--- a/src/soc/intel/common/block/pmc/pmclib.c
+++ b/src/soc/intel/common/block/pmc/pmclib.c
@@ -420,37 +420,24 @@ int pmc_fill_power_state(struct chipset_power_state *ps)
}
#if CONFIG(PMC_GLOBAL_RESET_ENABLE_LOCK)
-/*
- * If possible, lock 0xcf9. Once the register is locked, it can't be changed.
- * This lock is reset on cold boot, hard reset, soft reset and Sx.
- */
-void pmc_global_reset_lock(void)
+void pmc_global_reset_disable_and_lock(void)
{
- /* Read PMC base address from soc */
- uintptr_t etr = soc_read_pmc_base() + ETR;
+ uint32_t *etr = soc_pmc_etr_addr();
uint32_t reg;
- reg = read32((void *)etr);
- if (reg & CF9_LOCK)
- return;
- reg |= CF9_LOCK;
- write32((void *)etr, reg);
+ reg = read32(etr);
+ reg = (reg & ~CF9_GLB_RST) | CF9_LOCK;
+ write32(etr, reg);
}
-/*
- * Enable or disable global reset. If global reset is enabled, hard reset and
- * soft reset will trigger global reset, where both host and TXE are reset.
- * This is cleared on cold boot, hard reset, soft reset and Sx.
- */
void pmc_global_reset_enable(bool enable)
{
- /* Read PMC base address from soc */
- uintptr_t etr = soc_read_pmc_base() + ETR;
+ uint32_t *etr = soc_pmc_etr_addr();
uint32_t reg;
- reg = read32((void *)etr);
+ reg = read32(etr);
reg = enable ? reg | CF9_GLB_RST : reg & ~CF9_GLB_RST;
- write32((void *)etr, reg);
+ write32(etr, reg);
}
#endif // CONFIG_PMC_GLOBAL_RESET_ENABLE_LOCK