From e69486efd7b71484646ba74bd7e4b39ee7b860ce Mon Sep 17 00:00:00 2001 From: Josie Nordrum Date: Thu, 24 Sep 2020 17:08:41 -0600 Subject: Keyboard: Add AP wakeup to PS2 trackpoint interrupt Wake up AP for PS2 interrupt using Device Event as trigger. AP must have device event wakeup mask enabled and board must select CONFIG_DEVICE_EVENT in EC. This device event is only triggered when the chipset is suspended to avoid triggering SCIs in S0. BUG=b:160345665 BRANCH=Zork TEST=Wake from S3 by trackpoint Signed-off-by: Josie Nordrum Change-Id: Ia431525ee8f572922c8f9bfe613d44e83308d9f8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2430288 Reviewed-by: Furquan Shaikh Reviewed-by: Denis Brockus Commit-Queue: Denis Brockus Tested-by: Denis Brockus --- common/keyboard_8042.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common/keyboard_8042.c b/common/keyboard_8042.c index b9e8335773..4e3a5b4b98 100644 --- a/common/keyboard_8042.c +++ b/common/keyboard_8042.c @@ -9,6 +9,7 @@ #include "button.h" #include "common.h" #include "console.h" +#include "device_event.h" #include "hooks.h" #include "host_command.h" #include "i8042_protocol.h" @@ -957,6 +958,10 @@ static void send_aux_data_to_host_deferred(void) { uint8_t data; + if (IS_ENABLED(CONFIG_DEVICE_EVENT) && + chipset_in_state(CHIPSET_STATE_ANY_SUSPEND)) + device_set_single_event(EC_DEVICE_EVENT_TRACKPAD); + while (!queue_is_empty(&aux_to_host_queue)) { queue_remove_unit(&aux_to_host_queue, &data); if (aux_chan_enabled && IS_ENABLED(CONFIG_8042_AUX)) -- cgit v1.2.1