summaryrefslogtreecommitdiff
path: root/src/mainboard/google
diff options
context:
space:
mode:
authorShaunak Saha <shaunak.saha@intel.com>2016-07-24 22:54:13 -0700
committerMartin Roth <martinroth@google.com>2016-08-10 21:11:23 +0200
commit3922cec524745864b3505a038f0c64c2b3c67b18 (patch)
tree748a92ab61e2f6b6ab2bf3cc60898485f289c116 /src/mainboard/google
parent09115a92f6ac6123a6f1ed435c05fe60dc01d58c (diff)
downloadcoreboot-3922cec524745864b3505a038f0c64c2b3c67b18.tar.xz
google/reef: Add mainboard handler function for gpio SMI
This patch adds mainboard_smi_gpi_handler which handles the SMI event. This can happen in situations like lidclose and system goes to shutdown. BUG=chrome-os-partner:54977 TEST=When system is in firmware mode executing the command lidclose from ec console shuts down the system. Change-Id: I8ff6001e48dcbbd4cee5097e759352d8fea6189b Signed-off-by: Shaunak Saha <shaunak.saha@intel.com> Reviewed-on: https://review.coreboot.org/15834 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/mainboard/google')
-rw-r--r--src/mainboard/google/reef/ec.h3
-rw-r--r--src/mainboard/google/reef/smihandler.c7
2 files changed, 10 insertions, 0 deletions
diff --git a/src/mainboard/google/reef/ec.h b/src/mainboard/google/reef/ec.h
index f76c5a8876..c4b1505c2c 100644
--- a/src/mainboard/google/reef/ec.h
+++ b/src/mainboard/google/reef/ec.h
@@ -24,6 +24,9 @@
*/
#define EC_SCI_GPI GPE0_DW1_11
+/* EC SMI */
+#define EC_SMI_GPI GPIO_49
+
/*
* On lidopen/lidclose GPIO_22 from North Community gets toggled and
* is used in _PRW to wake up device from sleep. GPIO_22 maps to
diff --git a/src/mainboard/google/reef/smihandler.c b/src/mainboard/google/reef/smihandler.c
index 05d363f876..e26c176b1b 100644
--- a/src/mainboard/google/reef/smihandler.c
+++ b/src/mainboard/google/reef/smihandler.c
@@ -18,8 +18,15 @@
#include <cpu/x86/smm.h>
#include <ec/google/chromeec/smm.h>
#include <soc/pm.h>
+#include <soc/smm.h>
#include "ec.h"
+void mainboard_smi_gpi_handler(const struct gpi_status *sts)
+{
+ if (gpi_status_get(sts, EC_SMI_GPI))
+ chromeec_smi_process_events();
+}
+
void mainboard_smi_sleep(u8 slp_typ)
{
if (slp_typ == ACPI_S3)