summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorFurquan Shaikh <furquan@chromium.org>2017-04-12 12:50:40 -0700
committerchrome-bot <chrome-bot@chromium.org>2017-04-17 16:23:50 -0700
commite3b520b27a57198bf12670311b7b9bc39af3ad76 (patch)
treedbc2b0e8a697ed1e39736c064a1b11360631bae0 /common
parentc5332f6fe7d4d5197ac2154319f5e7dd4436d62a (diff)
downloadchrome-ec-e3b520b27a57198bf12670311b7b9bc39af3ad76.tar.gz
power_button_x86: Reset power button setting on chipset transitions
Power button pulse is disabled by the host whenever it wants to treat the power button as an input and not trigger SMI. Clear this setting whenever there is a chipset state transition to default pulse enabled. BUG=b:37277943 BRANCH=None TEST=make -j buildall Change-Id: Id0cb3748bf7e25ad9111170116113151d9bed69e Signed-off-by: Furquan Shaikh <furquan@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/476090 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/power_button_x86.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/common/power_button_x86.c b/common/power_button_x86.c
index f9903b2782..f83d0f81ab 100644
--- a/common/power_button_x86.c
+++ b/common/power_button_x86.c
@@ -472,3 +472,24 @@ static int hc_config_powerbtn_x86(struct host_cmd_handler_args *args)
}
DECLARE_HOST_COMMAND(EC_CMD_CONFIG_POWER_BUTTON, hc_config_powerbtn_x86,
EC_VER_MASK(0));
+
+
+/*
+ * Currently, the only reason why we disable power button pulse is to allow
+ * detachable menu on AP to use power button for selection purpose without
+ * triggering SMI. Thus, re-enable the pulse any time there is a chipset
+ * state transition event.
+ */
+static void power_button_pulse_setting_reset(void)
+{
+ power_button_pulse_enabled = 1;
+}
+
+DECLARE_HOOK(HOOK_CHIPSET_STARTUP, power_button_pulse_setting_reset,
+ HOOK_PRIO_DEFAULT);
+DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, power_button_pulse_setting_reset,
+ HOOK_PRIO_DEFAULT);
+DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, power_button_pulse_setting_reset,
+ HOOK_PRIO_DEFAULT);
+DECLARE_HOOK(HOOK_CHIPSET_RESUME, power_button_pulse_setting_reset,
+ HOOK_PRIO_DEFAULT);