summaryrefslogtreecommitdiff
path: root/board/link/board.c
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2013-05-29 11:54:47 -0500
committerChromeBot <chrome-bot@google.com>2013-06-04 10:08:30 -0700
commit72a69f66694f00eb595bf40bef5958c09204140a (patch)
tree2e2c3225db36b16709f0bf348b8830c991d6ba22 /board/link/board.c
parent7abe696281506f7cddfd0e107c1fb34928ef8728 (diff)
downloadchrome-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.c12
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);
+}