[coreboot-gerrit] Change in coreboot[master]: wake_mask: Enable Active and Lazy wake masks

Jenny Tc (Code Review) gerrit at coreboot.org
Fri Aug 18 12:20:49 CEST 2017


Jenny Tc has uploaded this change for review. ( https://review.coreboot.org/21085


Change subject: wake_mask: Enable Active and Lazy wake masks
......................................................................

wake_mask: Enable Active and Lazy wake masks

Enable notion of active and lazy wake masks to configure wake masks
on the edge of sleep transition.

  In this flow coreboot can set
    1. S3 and S5 wake masks during boot or SMI.
    2. S0ix wake masks can be set during boot (since s0ix doesn't
	take SMI path)

Above two wake masks are referred to as lazy wake masks since they
don't get activated immediately. On the edge of sleep transition the
lazy wake masks become active and is referred to as active wake mask.
Active wake mask is used by EC wake logic to trigger system wake while
system is in sleep state

This approach helps to configure S0ix wake masks from coreboot so
that the wake mask programming remains the same across all sleep states

BRANCH=none
BUG=b:63969337
TEST=enable lazy_wakemak, powerd_dbus_suspend, verify ec command: hostevent

Change-Id: I4917a222c79b6aaecb71d7704ffde57bf3bc99d9
Signed-off-by: Jenny TC <jenny.tc at intel.com>
---
M src/ec/google/chromeec/Kconfig
M src/ec/google/chromeec/ec.c
M src/ec/google/chromeec/ec.h
M src/ec/google/chromeec/ec_commands.h
4 files changed, 58 insertions(+), 11 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/85/21085/1

diff --git a/src/ec/google/chromeec/Kconfig b/src/ec/google/chromeec/Kconfig
index 3e9cb29..f6cc642 100644
--- a/src/ec/google/chromeec/Kconfig
+++ b/src/ec/google/chromeec/Kconfig
@@ -165,3 +165,12 @@
 	help
 	  Enable support for Chrome OS mode switches provided by the Chrome OS
 	  EC.
+
+config LAZY_WAKE_MASK
+	depends on EC_GOOGLE_CHROMEEC
+	bool
+	help
+	  Enable lazy and active wake masks to configure wake events on the edge
+	  of sleep transition. When enabled coreboot notifies s3,s5 and s0ix
+	  lazy wake masks to EC. On the edge of sleep state transition EC configure
+	  active wake mask to trigger wakes on certain events
diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c
index 4d47982..87b8f25 100644
--- a/src/ec/google/chromeec/ec.c
+++ b/src/ec/google/chromeec/ec.c
@@ -550,19 +550,47 @@
 		EC_CMD_HOST_EVENT_SET_SMI_MASK, mask);
 }
 
+
+#if !IS_ENABLED(CONFIG_LAZY_WAKE_MASK)
 int google_chromeec_set_wake_mask(u32 mask)
 {
 	printk(BIOS_DEBUG, "Chrome EC: Set WAKE mask to 0x%08x\n", mask);
 	return google_chromeec_set_mask(
-		EC_CMD_HOST_EVENT_SET_WAKE_MASK, mask);
+		EC_CMD_HOST_EVENT_SET_ACTIVE_WAKE_MASK, mask);
+
 }
 
 u32 google_chromeec_get_wake_mask(void)
 {
 	return google_chromeec_get_mask(
-		EC_CMD_HOST_EVENT_GET_WAKE_MASK);
+		EC_CMD_HOST_EVENT_GET_ACTIVE_WAKE_MASK);
 }
 
+int google_chromeec_set_s0ix_lazy_wake_mask(u32 mask) { return 0; }
+#else
+int google_chromeec_set_wake_mask(u32 mask)
+{
+	printk(BIOS_DEBUG, "Chrome EC: Set LAZY S3_S5 WAKE mask to 0x%08x\n", mask);
+	return google_chromeec_set_mask(
+		EC_CMD_SET_S3_S5_LAZY_WAKE_MASK, mask);
+
+}
+
+u32 google_chromeec_get_wake_mask(void)
+{
+	return google_chromeec_get_mask(
+		EC_CMD_GET_S3_S5_LAZY_WAKE_MASK);
+}
+
+int google_chromeec_set_s0ix_lazy_wake_mask(u32 mask)
+{
+	printk(BIOS_DEBUG, "Chrome EC: Set LAZY S0IX WAKE mask to 0x%08x\n", mask);
+	return google_chromeec_set_mask(
+		EC_CMD_SET_S0IX_LAZY_WAKE_MASK, mask);
+}
+#endif
+
+
 void google_chromeec_log_events(u32 mask)
 {
 #if IS_ENABLED(CONFIG_ELOG)
diff --git a/src/ec/google/chromeec/ec.h b/src/ec/google/chromeec/ec.h
index 60d5a32..a562300 100644
--- a/src/ec/google/chromeec/ec.h
+++ b/src/ec/google/chromeec/ec.h
@@ -30,6 +30,7 @@
 int google_chromeec_set_sci_mask(u32 mask);
 int google_chromeec_set_smi_mask(u32 mask);
 int google_chromeec_set_wake_mask(u32 mask);
+int google_chromeec_set_s0ix_lazy_wake_mask(u32 mask);
 u8 google_chromeec_get_event(void);
 int google_ec_running_ro(void);
 void google_chromeec_init(void);
diff --git a/src/ec/google/chromeec/ec_commands.h b/src/ec/google/chromeec/ec_commands.h
index 46ab905..8c6484d 100644
--- a/src/ec/google/chromeec/ec_commands.h
+++ b/src/ec/google/chromeec/ec_commands.h
@@ -3063,17 +3063,26 @@
 };
 
 /* These all use ec_response_host_event_mask */
-#define EC_CMD_HOST_EVENT_GET_B         0x0087
-#define EC_CMD_HOST_EVENT_GET_SMI_MASK  0x0088
-#define EC_CMD_HOST_EVENT_GET_SCI_MASK  0x0089
-#define EC_CMD_HOST_EVENT_GET_WAKE_MASK 0x008D
+#define EC_CMD_HOST_EVENT_GET_B                 0x0087
+#define EC_CMD_HOST_EVENT_GET_SMI_MASK          0x0088
+#define EC_CMD_HOST_EVENT_GET_SCI_MASK          0x0089
+#define EC_CMD_HOST_EVENT_GET_ACTIVE_WAKE_MASK  0x008D
 
 /* These all use ec_params_host_event_mask */
-#define EC_CMD_HOST_EVENT_SET_SMI_MASK  0x008A
-#define EC_CMD_HOST_EVENT_SET_SCI_MASK  0x008B
-#define EC_CMD_HOST_EVENT_CLEAR         0x008C
-#define EC_CMD_HOST_EVENT_SET_WAKE_MASK 0x008E
-#define EC_CMD_HOST_EVENT_CLEAR_B       0x008F
+#define EC_CMD_HOST_EVENT_SET_SMI_MASK          0x008A
+#define EC_CMD_HOST_EVENT_SET_SCI_MASK          0x008B
+#define EC_CMD_HOST_EVENT_CLEAR                 0x008C
+#define EC_CMD_HOST_EVENT_SET_ACTIVE_WAKE_MASK  0x008E
+#define EC_CMD_HOST_EVENT_CLEAR_B               0x008F
+
+/* Lazy wake masks */
+
+/*  These all use ec_response_host_event_mask */
+#define EC_CMD_GET_S3_S5_LAZY_WAKE_MASK      0x00A4
+
+/*  These all use ec_params_host_event_mask */
+#define EC_CMD_SET_S3_S5_LAZY_WAKE_MASK      0x00A6
+#define EC_CMD_SET_S0IX_LAZY_WAKE_MASK       0x00A7
 
 /*****************************************************************************/
 /* Switch commands */

-- 
To view, visit https://review.coreboot.org/21085
To unsubscribe, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4917a222c79b6aaecb71d7704ffde57bf3bc99d9
Gerrit-Change-Number: 21085
Gerrit-PatchSet: 1
Gerrit-Owner: Jenny Tc <jenny.tc at intel.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20170818/c4bb4d84/attachment-0001.html>


More information about the coreboot-gerrit mailing list