summaryrefslogtreecommitdiff
path: root/power
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2016-08-11 17:02:41 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-08-12 13:45:35 -0700
commitde4d25964de310effe8ede09e5ba6fa2f40dc52b (patch)
treeff590ba65dfe3063d9c9e504f89bbd760e838f92 /power
parent88428882b827b818df9b99ca37ef26b8f1927e9a (diff)
downloadchrome-ec-de4d25964de310effe8ede09e5ba6fa2f40dc52b.tar.gz
mkbp_event: Allow host to report sleep state for non-wake event skipping
Allow the host to self-report its sleep state through EC_CMD_HOST_SLEEP_EVENT, which will typically be sent with SUSPEND param when the host begins its sleep process. While the host has self-reported that it is in SUSPEND, don't assert the interrupt line, except for designated wake events. BUG=chrome-os-partner:56156 BRANCH=None TEST=On kevin, run 'ectool hostsleepstate suspend', verify that interrupt assertion is skipped for battery host event. Run 'ectool hostsleepstate resume' and verify interrupt is again asserted by the battery host event. Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Change-Id: I74288465587ccf7185cec717f7c1810602361b8c Reviewed-on: https://chromium-review.googlesource.com/368391 Commit-Ready: Shawn N <shawnn@chromium.org> Tested-by: Shawn N <shawnn@chromium.org> Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'power')
-rw-r--r--power/common.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/power/common.c b/power/common.c
index 696fed1fb0..7f5d1aa873 100644
--- a/power/common.c
+++ b/power/common.c
@@ -686,3 +686,24 @@ DECLARE_CONSOLE_COMMAND(pause_in_s5, command_pause_in_s5,
"Should the AP pause in S5 during shutdown?",
NULL);
#endif /* CONFIG_POWER_SHUTDOWN_PAUSE_IN_S5 */
+
+#ifdef CONFIG_POWER_TRACK_HOST_SLEEP_STATE
+/* Track last reported sleep event */
+static enum host_sleep_event host_sleep_state;
+
+static int host_command_host_sleep_event(struct host_cmd_handler_args *args)
+{
+ const struct ec_params_host_sleep_event *p = args->params;
+
+ host_sleep_state = p->sleep_event;
+ return EC_RES_SUCCESS;
+}
+DECLARE_HOST_COMMAND(EC_CMD_HOST_SLEEP_EVENT,
+ host_command_host_sleep_event,
+ EC_VER_MASK(0));
+
+enum host_sleep_event power_get_host_sleep_state(void)
+{
+ return host_sleep_state;
+}
+#endif /* CONFIG_POWER_TRACK_HOST_SLEEP_STATE */