Patrick Georgi merged this change.

View Change

Approvals: build bot (Jenkins): Verified Furquan Shaikh: Looks good to me, approved
drivers/generic/gpio_keys: Add trigger for wakeup event action

Currently without any trigger the wakeup event is generated on both the
rising and falling edges of the GPIO input. Add support to specify the
trigger explicitly so that the configuration can be passed to the

TEST=Ensure that the system boots to ChromeOS. Ensure that the stylus tools
open on pen eject. Ensure that the system wakes on Pen Eject. Ensure that
the system enters S0ix and S3 states after the pen is ejected. Ensure that
the system enters S0ix and S3 states when the pen remains inserted in its
holder. Ensured that the system does not wake when the pen is inserted.
Ensure that the suspend_stress_test runs successfully for 25 iterations
with the pen placed in its holder and ejected from its holder.

Change-Id: Ifb08ba01106031aa2655c1ae2faab284926f1ceb
Signed-off-by: Karthikeyan Ramasubramanian <>
Tested-by: build bot (Jenkins) <>
Reviewed-by: Furquan Shaikh <>
M src/drivers/generic/gpio_keys/chip.h
M src/drivers/generic/gpio_keys/gpio_keys.c
2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/drivers/generic/gpio_keys/chip.h b/src/drivers/generic/gpio_keys/chip.h
index 818f14c..9d33b4f 100644
--- a/src/drivers/generic/gpio_keys/chip.h
+++ b/src/drivers/generic/gpio_keys/chip.h
@@ -30,6 +30,13 @@

+/* Trigger for wakeup event action */
+enum {
/* Details of the child node defining key */
struct key_info {
/* Device name of the child node - Mandatory */
@@ -47,6 +54,8 @@
bool is_wakeup_source;
/* Wake GPE */
unsigned int wake;
+ /* Trigger for Wakeup Event Action as defined in EV_ACT_* enum */
+ unsigned int wakeup_event_action;
/* Can this key be disabled? */
bool can_be_disabled;
/* Debounce interval time in milliseconds */
diff --git a/src/drivers/generic/gpio_keys/gpio_keys.c b/src/drivers/generic/gpio_keys/gpio_keys.c
index 77e7740..f9869d6 100644
--- a/src/drivers/generic/gpio_keys/gpio_keys.c
+++ b/src/drivers/generic/gpio_keys/gpio_keys.c
@@ -43,8 +43,12 @@
if (key->is_wakeup_source)
acpi_dp_add_integer(dsd, "wakeup-source",
- if (key->wake)
+ if (key->wake) {
acpigen_write_PRW(key->wake, 3);
+ acpi_dp_add_integer(dsd, "wakeup-event-action",
+ key->wakeup_event_action);
+ }
if (key->can_be_disabled)
acpi_dp_add_integer(dsd, "linux,can-disable",

To view, visit change 30451. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: Ifb08ba01106031aa2655c1ae2faab284926f1ceb
Gerrit-Change-Number: 30451
Gerrit-PatchSet: 3
Gerrit-Owner: Karthik Ramasubramanian <>
Gerrit-Reviewer: Aaron Durbin <>
Gerrit-Reviewer: Furquan Shaikh <>
Gerrit-Reviewer: Justin TerAvest <>
Gerrit-Reviewer: Karthik Ramasubramanian <>
Gerrit-Reviewer: Karthikeyan Ramasubramanian <>
Gerrit-Reviewer: Patrick Georgi <>
Gerrit-Reviewer: build bot (Jenkins) <>
Gerrit-MessageType: merged