summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@chromium.org>2017-06-29 23:57:13 -0700
committerDuncan Laurie <dlaurie@chromium.org>2017-07-01 02:49:01 +0000
commitaf81a9132a59b5c3abbb3e56574398fe236ba6f9 (patch)
treecfeee5993a4c5822c8b410b2536fac3d4bf54f26
parent7378a1792a986ca5137da9bd0868bbc1b496839d (diff)
mb/google/eve: Implement EC device events for S3 wake
Add support for waking from and logging device events that originate in the Embedded Controller. As this device uses Deep S3 it relies on the EC to wake the AP from the trackpad and DSP wake sources. BUG=b:30624430 TEST=manual testing on Eve: wake from Deep S3 via trackpad and DSP and verify the event log contains the expected device event. Change-Id: I0d6a9c5bfd4cea85e13446ffaa6fe3dab0db96a2 Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: https://review.coreboot.org/20428 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
-rw-r--r--src/mainboard/google/eve/ec.c4
-rw-r--r--src/mainboard/google/eve/ec.h6
-rw-r--r--src/mainboard/google/eve/smihandler.c2
3 files changed, 12 insertions, 0 deletions
diff --git a/src/mainboard/google/eve/ec.c b/src/mainboard/google/eve/ec.c
index 868714aac1..d5710f326d 100644
--- a/src/mainboard/google/eve/ec.c
+++ b/src/mainboard/google/eve/ec.c
@@ -24,6 +24,10 @@ void mainboard_ec_init(void)
google_chromeec_log_events(MAINBOARD_EC_LOG_EVENTS |
MAINBOARD_EC_S3_WAKE_EVENTS);
+ /* Log and clear device events that may wake the system */
+ google_chromeec_log_device_events(
+ MAINBOARD_EC_S3_DEVICE_EVENTS);
+
/* Disable SMI and wake events */
google_chromeec_set_smi_mask(0);
diff --git a/src/mainboard/google/eve/ec.h b/src/mainboard/google/eve/ec.h
index fa0dc21f75..81d591cb40 100644
--- a/src/mainboard/google/eve/ec.h
+++ b/src/mainboard/google/eve/ec.h
@@ -48,6 +48,7 @@
/* EC can wake from S3 with lid or power button or key press */
#define MAINBOARD_EC_S3_WAKE_EVENTS \
(MAINBOARD_EC_S5_WAKE_EVENTS |\
+ EC_HOST_EVENT_MASK(EC_HOST_EVENT_DEVICE) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_KEY_PRESSED))
/* Log EC wake events plus EC shutdown events */
@@ -56,6 +57,11 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_SHUTDOWN) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_PANIC))
+/* EC device events to enable and log in S3 */
+#define MAINBOARD_EC_S3_DEVICE_EVENTS \
+ (EC_DEVICE_EVENT_MASK(EC_DEVICE_EVENT_TRACKPAD) |\
+ EC_DEVICE_EVENT_MASK(EC_DEVICE_EVENT_DSP))
+
/*
* ACPI related definitions for ASL code.
*/
diff --git a/src/mainboard/google/eve/smihandler.c b/src/mainboard/google/eve/smihandler.c
index 493a3349e5..f51248cef5 100644
--- a/src/mainboard/google/eve/smihandler.c
+++ b/src/mainboard/google/eve/smihandler.c
@@ -36,6 +36,8 @@ void mainboard_smi_sleep(u8 slp_typ)
{
chromeec_smi_sleep(slp_typ, MAINBOARD_EC_S3_WAKE_EVENTS,
MAINBOARD_EC_S5_WAKE_EVENTS);
+ chromeec_smi_device_event_sleep(slp_typ,
+ MAINBOARD_EC_S3_DEVICE_EVENTS, 0);
mainboard_gpio_smi_sleep(slp_typ);
}