summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Zhong <zyw@rock-chips.com>2014-12-24 04:47:01 -0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-12-29 17:45:33 +0000
commit8bd44bf4d5616bd6d476cbea99829059fe11dc68 (patch)
tree8ddc2c5465ce0e6c35ddadfd72ebd3e5dfd4c674
parentff91ba5bb1cdddfbf0892855f0d8de4c3190ce66 (diff)
downloadchrome-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.c14
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)