summaryrefslogtreecommitdiff
path: root/power
diff options
context:
space:
mode:
authorBen Lok <ben.lok@mediatek.com>2015-10-20 20:38:34 +0800
committerchrome-bot <chrome-bot@chromium.org>2015-11-03 09:08:20 -0800
commitb1a3d8eda54e06bf2cf99bc7dd6abfa368a5bdab (patch)
treeb9b1d186ff0dec9f2699b8b5b378e3a7d8429b0e /power
parent80b997dc276b099714e1c5b6eeea02adbae44081 (diff)
downloadchrome-ec-b1a3d8eda54e06bf2cf99bc7dd6abfa368a5bdab.tar.gz
oak: handle the warm reset key from servo board
Warm reset key from servo board lets the POWER_GOOD signal deasserted temporarily (about 1~2 seconds) since Oak rev4. In order to detect this case, check the AP_RESET_L status, ignore the transient state if reset key is pressing. BUG=chrome-os-partner:46655 BRANCH=none TEST=make buildall -j; Press warm reset key of servo board, AP should reset normally. Change-Id: Ib9f111d2273cde61354e72367fe74d4ee15d2291 Signed-off-by: Ben Lok <ben.lok@mediatek.com> Reviewed-on: https://chromium-review.googlesource.com/307201 Tested-by: Yidi Lin <yidi.lin@mediatek.com> Reviewed-by: Rong Chang <rongchang@chromium.org>
Diffstat (limited to 'power')
-rw-r--r--power/mediatek.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/power/mediatek.c b/power/mediatek.c
index 49b9154edf..87ccec5629 100644
--- a/power/mediatek.c
+++ b/power/mediatek.c
@@ -225,6 +225,18 @@ static int is_power_good_asserted(void)
*/
static int is_power_good_deasserted(void)
{
+ /*
+ * Warm reset key from servo board lets the POWER_GOOD signal
+ * deasserted temporarily (about 1~2 seconds) on rev4.
+ * In order to detect this case, check the AP_RESET_L status,
+ * ignore the transient state if reset key is pressing.
+ */
+ if (system_get_board_version() >= 4) {
+ if (0 == gpio_get_level(GPIO_AP_RESET_L)) {
+ return 0;
+ }
+ }
+
if (!(power_get_signals() & IN_POWER_GOOD))
usleep(POWER_DEBOUNCE_TIME);