Shaunak Saha (shaunak.saha@intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/16298
-gerrit
commit 1be4447bb05a0dc0c250f2f6ec88f42f186b5f3e Author: Shaunak Saha shaunak.saha@intel.com Date: Mon Aug 22 21:55:23 2016 -0700
intel/apollolake: Power management utility function
This patch adds a power management utility function to clear wake status bits in ACPI GPE0 registers. We need to call this function before going to sleep from common smi handler function.
BUG=chrome-os-partner:55583 BRANCH=None TEST=Verified that system goes to sleep on lidclose and powerd_dbus_suspend command issued from inbuild keyboard.
Change-Id: Icd095d377c82f2e154f2e2db773f737aa49cda64 Signed-off-by: Shaunak Saha shaunak.saha@intel.com --- src/soc/intel/apollolake/include/soc/pm.h | 1 + src/soc/intel/apollolake/pmutil.c | 11 +++++++++++ 2 files changed, 12 insertions(+)
diff --git a/src/soc/intel/apollolake/include/soc/pm.h b/src/soc/intel/apollolake/include/soc/pm.h index 5641e54..f3b8f00 100644 --- a/src/soc/intel/apollolake/include/soc/pm.h +++ b/src/soc/intel/apollolake/include/soc/pm.h @@ -173,6 +173,7 @@ uint16_t clear_pm1_status(void); uint32_t clear_tco_status(void); uint32_t clear_gpe_status(void); void clear_pmc_status(void); +void clear_wake_sts(void); uint32_t get_smi_en(void); void enable_smi(uint32_t mask); void disable_smi(uint32_t mask); diff --git a/src/soc/intel/apollolake/pmutil.c b/src/soc/intel/apollolake/pmutil.c index aaa4018..61d6ff2 100644 --- a/src/soc/intel/apollolake/pmutil.c +++ b/src/soc/intel/apollolake/pmutil.c @@ -246,6 +246,17 @@ void disable_all_gpe(void) disable_gpe(~0); }
+/* Clear the wake status bits in ACPI registers */ +void clear_wake_sts(void) +{ + int i; + + for (i = 1; i < GPE0_REG_MAX; i++) { + uint32_t gpe_sts = inl(ACPI_PMIO_BASE + GPE0_STS(i)); + outl(gpe_sts, ACPI_PMIO_BASE + GPE0_STS(i)); + } +} +
static uint32_t reset_gpe_status(void) {