diff options
author | Duncan Laurie <dlaurie@chromium.org> | 2013-08-09 13:47:56 -0700 |
---|---|---|
committer | ChromeBot <chrome-bot@google.com> | 2013-08-09 13:52:08 -0700 |
commit | a21ff2e54b0f4e8962f284588066c28e46590dd6 (patch) | |
tree | d17154222d23b1f35b135eff292c5444525105e0 | |
parent | e1b4e49e38ede730ea4d4b5a3c2d58bbba3940a8 (diff) | |
download | chrome-ec-a21ff2e54b0f4e8962f284588066c28e46590dd6.tar.gz |
Fix leaving keyboard scanning disabled on brief power button press
If the power button is pressed for a shorter period than the debounce
timeout, then the debounced state never changes. This was causing the
power button state machine to disable scanning (in the interrupt
handler) but never re-enable it (in the deferred handler).
Easy fix; just re-enable based on whether the current state is
released, not whether the debounced state is transitioning to
released.
BUG=chrome-os-partner:21772
BRANCH=all (falco, pit, etc.)
TEST=type on console. briefly flick power button. type more; should work.
Original-Change-Id: I9723a6aa10f122fcee62702b85ce7981b1c8103a
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/65238
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
(cherry picked from commit ffed16cae4c34a4326eead22af690ff101b3780d)
Change-Id: Idbeb214c671ecea6725d62d534357b83afecf575
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/65376
-rw-r--r-- | common/power_button.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/common/power_button.c b/common/power_button.c index c26fb8d5d4..bbbe205ba6 100644 --- a/common/power_button.c +++ b/common/power_button.c @@ -67,6 +67,10 @@ static void power_button_change_deferred(void) { const int new_pressed = raw_power_button_pressed(); + /* Re-enable keyboard scanning if power button is no longer pressed */ + if (!new_pressed) + keyboard_scan_enable(1); + /* If power button hasn't changed state, nothing to do */ if (new_pressed == debounced_power_pressed) return; @@ -75,10 +79,6 @@ static void power_button_change_deferred(void) CPRINTF("[%T power button %s]\n", new_pressed ? "pressed" : "released"); - /* Re-enable keyboard scanning if power button is no longer pressed */ - if (!new_pressed) - keyboard_scan_enable(1); - /* Call hooks */ hook_notify(HOOK_POWER_BUTTON_CHANGE); |