From 25cc76ff48d36f2718dbcce152424c60cda1ffc3 Mon Sep 17 00:00:00 2001 From: Shaunak Saha Date: Thu, 28 Sep 2017 15:13:05 -0700 Subject: soc/intel/common/block: Move power button SMI functions to common PMC block This patch moves the functions update_pm1_enable and read_pm1_enable to common block PMC. We rename the functions to pmc_update_pm1_enable and pmc_read_pm1_enable to keep semantics consistent. Change-Id: I9a73a6348fc22367ee2e68bf2c31823ebfefc525 Signed-off-by: Shaunak Saha Reviewed-on: https://review.coreboot.org/21755 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin Reviewed-by: Paul Menzel --- src/soc/intel/common/block/include/intelblocks/pmclib.h | 5 +++++ src/soc/intel/common/block/pmc/pmclib.c | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) (limited to 'src/soc/intel/common/block') diff --git a/src/soc/intel/common/block/include/intelblocks/pmclib.h b/src/soc/intel/common/block/include/intelblocks/pmclib.h index 4093599aca..fe0a7657e3 100644 --- a/src/soc/intel/common/block/include/intelblocks/pmclib.h +++ b/src/soc/intel/common/block/include/intelblocks/pmclib.h @@ -42,6 +42,11 @@ uint32_t soc_get_smi_status(uint32_t generic_sts); */ int soc_prev_sleep_state(const struct chipset_power_state *ps, int prev_sleep_state); + +/* PM1 */ +void pmc_update_pm1_enable(uint16_t events); +uint16_t pmc_read_pm1_enable(void); + /* * Function to print, clear, and return SMI status bits in SMI_STS * register. This function internally calls pmc_reset_smi_status with diff --git a/src/soc/intel/common/block/pmc/pmclib.c b/src/soc/intel/common/block/pmc/pmclib.c index e741332f88..78b43e44e9 100644 --- a/src/soc/intel/common/block/pmc/pmclib.c +++ b/src/soc/intel/common/block/pmc/pmclib.c @@ -72,6 +72,23 @@ static uint32_t print_smi_status(uint32_t smi_sts) return smi_sts; } +/* + * Update supplied events in PM1_EN register. This does not disable any already + * set events. + */ +void pmc_update_pm1_enable(u16 events) +{ + u16 pm1_en = pmc_read_pm1_enable(); + pm1_en |= events; + pmc_enable_pm1(pm1_en); +} + +/* Read events set in PM1_EN register. */ +uint16_t pmc_read_pm1_enable(void) +{ + return inw(ACPI_BASE_ADDRESS + PM1_EN); +} + uint32_t pmc_clear_smi_status(void) { uint32_t sts = pmc_reset_smi_status(); -- cgit v1.2.3