diff options
author | Aaron Durbin <adurbin@chromium.org> | 2013-05-29 11:54:47 -0500 |
---|---|---|
committer | ChromeBot <chrome-bot@google.com> | 2013-06-04 10:08:30 -0700 |
commit | 72a69f66694f00eb595bf40bef5958c09204140a (patch) | |
tree | 2e2c3225db36b16709f0bf348b8830c991d6ba22 /board/link/board.c | |
parent | 7abe696281506f7cddfd0e107c1fb34928ef8728 (diff) | |
download | chrome-ec-72a69f66694f00eb595bf40bef5958c09204140a.tar.gz |
haswell: fix driving of WAKE# pin on power button press
The WAKE# pin was being driven low when the power button was
pressed and no other events were occuring. This causes a PCIE
wake event to be observed on the host. This is incorrect. Therefore
only assert the WAKE# pin when any other event but the power button
has occured.
The implementation introduces a board-specific callback,
board_process_wake_events(), which handles the specific logic
for the wake events.
BUG=chrome-os-partner:19810
BRANCH=None
TEST=Manual. Both power button wakeup and lid events were tested. The
presence of PCIE Wake no longer exists for S5->S0 transitions.
Change-Id: If1311ccc36629b04d2d9e021c3e103e379836a3a
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/56970
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Diffstat (limited to 'board/link/board.c')
-rw-r--r-- | board/link/board.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/board/link/board.c b/board/link/board.c index c0a4dd5108..4a5e3ea999 100644 --- a/board/link/board.c +++ b/board/link/board.c @@ -215,3 +215,15 @@ void board_enable_wireless(uint8_t enabled) gpio_set_level(GPIO_RADIO_ENABLE_BT, enabled & EC_WIRELESS_SWITCH_BLUETOOTH); } + +/** + * Perform necessary actions on host events. + */ +void board_process_wake_events(uint32_t active_wake_events) +{ + /* Update level-sensitive wake signal */ + if (active_wake_events) + gpio_set_level(GPIO_PCH_WAKE_L, 0); + else + gpio_set_level(GPIO_PCH_WAKE_L, 1); +} |