From 16868bcaa276b6d40996ae70e5aba9d80c1ee3f5 Mon Sep 17 00:00:00 2001
From: Furquan Shaikh <furquan@google.com>
Date: Tue, 30 Jun 2020 16:13:47 -0700
Subject: mb/google/zork/var/morphius: Enable support for garaged stylus

This change adds support for pen insert/eject operations in S0 and
wake on pen eject from S3 for morphius.

BUG=b:158814699,b:158719244

Change-Id: I3530a0aa83ec69559436687205c64524b862799b
Signed-off-by: Kevin Chiu <kevin.chiu@quanta.corp-partner.google.com>
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/42950
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
---
 src/mainboard/google/zork/Kconfig                            |  1 +
 .../google/zork/variants/baseboard/gpio_baseboard_trembyle.c |  2 +-
 src/mainboard/google/zork/variants/morphius/overridetree.cb  | 12 ++++++++++++
 3 files changed, 14 insertions(+), 1 deletion(-)

(limited to 'src')

diff --git a/src/mainboard/google/zork/Kconfig b/src/mainboard/google/zork/Kconfig
index 885de149ac..3e7756b50c 100644
--- a/src/mainboard/google/zork/Kconfig
+++ b/src/mainboard/google/zork/Kconfig
@@ -15,6 +15,7 @@ config BOARD_SPECIFIC_OPTIONS
 	select VGA_BIOS
 	select BOARD_ROMSIZE_KB_16384
 	select DISABLE_SPI_FLASH_ROM_SHARING
+	select DRIVERS_GENERIC_GPIO_KEYS
 	select DRIVERS_I2C_GENERIC
 	select DRIVERS_I2C_HID
 	select EC_GOOGLE_CHROMEEC
diff --git a/src/mainboard/google/zork/variants/baseboard/gpio_baseboard_trembyle.c b/src/mainboard/google/zork/variants/baseboard/gpio_baseboard_trembyle.c
index f037b146f6..f7e30ef305 100644
--- a/src/mainboard/google/zork/variants/baseboard/gpio_baseboard_trembyle.c
+++ b/src/mainboard/google/zork/variants/baseboard/gpio_baseboard_trembyle.c
@@ -72,7 +72,7 @@ static const struct soc_amd_gpio gpio_set_stage_ram[] = {
 	/* PCIE_WAKE_L */
 	PAD_NF(GPIO_2, WAKE_L, PULL_UP),
 	/* PEN_DETECT_ODL */
-	PAD_GPI(GPIO_4, PULL_UP),
+	PAD_WAKE(GPIO_4, PULL_NONE, EDGE_HIGH, S3),
 	/* PEN_POWER_EN - Enabled*/
 	PAD_GPO(GPIO_5, HIGH),
 	/* FPMCU_INT_L */
diff --git a/src/mainboard/google/zork/variants/morphius/overridetree.cb b/src/mainboard/google/zork/variants/morphius/overridetree.cb
index 3faab0d0c3..1240aa66df 100644
--- a/src/mainboard/google/zork/variants/morphius/overridetree.cb
+++ b/src/mainboard/google/zork/variants/morphius/overridetree.cb
@@ -79,6 +79,18 @@ chip soc/amd/picasso
 			register "hid_desc_reg_offset" = "0x01"
 			device i2c 5d on end
 		end
+		chip drivers/generic/gpio_keys
+			register "name" = ""PENH""
+			register "gpio" = "ACPI_GPIO_INPUT_ACTIVE_LOW(GPIO_4)"
+			register "key.dev_name" = ""EJCT""
+			register "key.wakeup_event_action" = "EV_ACT_DEASSERTED"
+			register "key.linux_code" = "SW_PEN_INSERTED"
+			register "key.linux_input_type" = "EV_SW"
+			register "key.label" = ""pen_eject""
+			register "key.debounce_interval" = "100"
+			register "key.wakeup_route" = "WAKEUP_ROUTE_GPIO_IRQ"
+			device generic 0 on end
+		end
 	end
 
 	device mmio 0xfedca000 on
-- 
cgit v1.2.3