[coreboot-gerrit] Patch set updated for coreboot: intel/apollolake: Add power management utility function

Shaunak Saha (shaunak.saha@intel.com) gerrit at coreboot.org
Tue Aug 23 21:08:43 CEST 2016


Shaunak Saha (shaunak.saha at intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/16298

-gerrit

commit 2c397ec6cdbcccae3333dbe73d73669f5fe5b2c8
Author: Shaunak Saha <shaunak.saha at intel.com>
Date:   Mon Aug 22 21:55:23 2016 -0700

    intel/apollolake: Add 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 built-in
         keyboard.
    
    Change-Id: Icd095d377c82f2e154f2e2db773f737aa49cda64
    Signed-off-by: Shaunak Saha <shaunak.saha at intel.com>
---
 src/soc/intel/apollolake/include/soc/pm.h |  1 +
 src/soc/intel/apollolake/pmutil.c         | 10 ++++++++++
 2 files changed, 11 insertions(+)

diff --git a/src/soc/intel/apollolake/include/soc/pm.h b/src/soc/intel/apollolake/include/soc/pm.h
index 5641e54..7eb5930 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_gpi_gpe_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..39edc45 100644
--- a/src/soc/intel/apollolake/pmutil.c
+++ b/src/soc/intel/apollolake/pmutil.c
@@ -246,6 +246,16 @@ void disable_all_gpe(void)
 	disable_gpe(~0);
 }
 
+/* Clear the gpio gpe0 status bits in ACPI registers */
+void clear_gpi_gpe_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)
 {



More information about the coreboot-gerrit mailing list