summaryrefslogtreecommitdiff
path: root/power/common.c
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2016-08-23 15:02:10 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-08-25 01:45:26 -0700
commit6fefca3d6acc0ea5b5adebabd8593ed17265f5c8 (patch)
tree326092280abe01d1cf15b7f400ca47624df55a3a /power/common.c
parent3071b82b5847396136b19acd8c2aa3f4e8f6cd42 (diff)
downloadchrome-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.c15
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;
}
/*