diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2016-08-23 15:02:10 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-08-25 01:45:26 -0700 |
commit | 6fefca3d6acc0ea5b5adebabd8593ed17265f5c8 (patch) | |
tree | 326092280abe01d1cf15b7f400ca47624df55a3a /power/common.c | |
parent | 3071b82b5847396136b19acd8c2aa3f4e8f6cd42 (diff) | |
download | chrome-ec-6fefca3d6acc0ea5b5adebabd8593ed17265f5c8.tar.gz |
power: rk3399: Debounce PGOOD_AP signal
PGOOD_AP may go low for a period < 100ms during regulator output voltage
transitions, so ignore such pulses.
BRANCH=None
BUG=chrome-os-partner:54814
TEST=On kevin, verify suspend / resume succeeds for 10 cycles.
Change-Id: I5b6240a570472e1ea74de6e5f2341472ea7afe6b
Reviewed-on: https://chromium-review.googlesource.com/374524
Commit-Ready: Shawn N <shawnn@chromium.org>
Tested-by: Douglas Anderson <dianders@chromium.org>
Tested-by: Shunqian Zheng <zhengsq@rock-chips.com>
Tested-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'power/common.c')
-rw-r--r-- | power/common.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/power/common.c b/power/common.c index 1916758482..b0d474831d 100644 --- a/power/common.c +++ b/power/common.c @@ -134,16 +134,23 @@ int power_has_signals(uint32_t want) int power_wait_signals(uint32_t want) { + int ret = power_wait_signals_timeout(want, DEFAULT_TIMEOUT); + + if (ret == EC_ERROR_TIMEOUT) + CPRINTS("power timeout on input; wanted 0x%04x, got 0x%04x", + want, in_signals & want); + return ret; +} + +int power_wait_signals_timeout(uint32_t want, int timeout) +{ in_want = want; if (!want) return EC_SUCCESS; while ((in_signals & in_want) != in_want) { - if (task_wait_event(DEFAULT_TIMEOUT) == TASK_EVENT_TIMER) { + if (task_wait_event(timeout) == TASK_EVENT_TIMER) { power_update_signals(); - CPRINTS("power timeout on input; " - "wanted 0x%04x, got 0x%04x", - in_want, in_signals & in_want); return EC_ERROR_TIMEOUT; } /* |