diff options
author | Chris Zhong <zyw@rock-chips.com> | 2014-12-24 04:47:01 -0800 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-12-29 17:45:33 +0000 |
commit | 8bd44bf4d5616bd6d476cbea99829059fe11dc68 (patch) | |
tree | 8ddc2c5465ce0e6c35ddadfd72ebd3e5dfd4c674 | |
parent | ff91ba5bb1cdddfbf0892855f0d8de4c3190ce66 (diff) | |
download | chrome-ec-8bd44bf4d5616bd6d476cbea99829059fe11dc68.tar.gz |
Veyron: cancel the long press timer when lost power_good
if power good is lost and the power button still press, we need cancel the long
press timer, otherwise EC will crash.
BUG=chrome-os-partner:34816
TEST=press power button during coreboot, and it can shutdown normally
BRANCH=None
Change-Id: Ia27c83137451abacce9d544741bbbe5787983215
Signed-off-by: Chris Zhong <zyw@rock-chips.com>
Reviewed-on: https://chromium-review.googlesource.com/237294
Reviewed-by: Jiazi Yang <Tomato_Yang@asus.com>
Reviewed-by: Alexandru Stan <amstan@chromium.org>
Commit-Queue: Eddie Cai <eddie.cai8848@gmail.com>
-rw-r--r-- | power/rockchip.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/power/rockchip.c b/power/rockchip.c index 2d71e2f697..1a5c6c656a 100644 --- a/power/rockchip.c +++ b/power/rockchip.c @@ -170,6 +170,7 @@ static int check_for_power_off_event(void) { timestamp_t now; int pressed = 0; + int ret = 0; /* * Check for power button press. @@ -206,13 +207,16 @@ static int check_for_power_off_event(void) timer_cancel(TASK_ID_CHIPSET); } - power_button_was_pressed = pressed; - /* POWER_GOOD released by AP : shutdown immediately */ - if (!power_has_signals(IN_POWER_GOOD)) - return 3; + if (!power_has_signals(IN_POWER_GOOD)) { + if (power_button_was_pressed) + timer_cancel(TASK_ID_CHIPSET); + ret = 3; + } - return 0; + power_button_was_pressed = pressed; + + return ret; } static void rockchip_lid_event(void) |