From 81f396ec2faefeda33b7e23d9cef380fce11a22c Mon Sep 17 00:00:00 2001 From: Momoko Hattori Date: Fri, 21 Mar 2025 18:34:40 +0900 Subject: [PATCH] mb/google/rex: Enable use_gpio_for_status for touchscreen The _STA method of touchscreen's power resource currently always returns true. This causes the touchscreen to be powered on by the kernel in a boot critical path (in acpi_bus_init_power) and block the boot for a while due to the long (~300ms depending on variants) sleeps in the _ON method of the power resource. To prevent it, enable use_gpio_for_status so that the implementation of _STA returns the touchscreen's actual power state and the kernel powers it on in another place that doesn't block boot. The similar change has already been made to mb/google/brya/var/redrix in commit d0367e38a9e5 ("mb/google/brya/var/redrix: Enable use_gpio_for_status for touchscreen") (CB:86749). This change applies it to all rex variants with touchscreen. BUG=b:397355818 TEST=Dump SSDT and check that the _STA method of touchscreen (i2c1) PowerResource doesn't always return true. TEST=Check that touchscreen works with the change. TEST=Check that kernel sleep during ACPI initialization is removed by checking the timestamps of 'New power resource' logs from ACPI in /var/log/messages. TEST=(Tested above on karis) Change-Id: Ibe7681884dc3edfb98c7c179b1af2063e35c4b46 Signed-off-by: Momoko Hattori Reviewed-on: https://review.coreboot.org/c/coreboot/+/87001 Reviewed-by: Subrata Banik Reviewed-by: Kapil Porwal Reviewed-by: Sam McNally Tested-by: build bot (Jenkins) --- src/mainboard/google/rex/variants/kanix/overridetree.cb | 1 + src/mainboard/google/rex/variants/karis/overridetree.cb | 1 + src/mainboard/google/rex/variants/rex0/overridetree.cb | 1 + src/mainboard/google/rex/variants/screebo/overridetree.cb | 2 ++ 4 files changed, 5 insertions(+) diff --git a/src/mainboard/google/rex/variants/kanix/overridetree.cb b/src/mainboard/google/rex/variants/kanix/overridetree.cb index 83663e8fbe..8f2aed31bf 100644 --- a/src/mainboard/google/rex/variants/kanix/overridetree.cb +++ b/src/mainboard/google/rex/variants/kanix/overridetree.cb @@ -444,6 +444,7 @@ chip soc/intel/meteorlake register "generic.stop_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C06)" register "generic.stop_off_delay_ms" = "1" register "generic.has_power_resource" = "1" + register "generic.use_gpio_for_status" = "true" register "hid_desc_reg_offset" = "0x01" device i2c 0x10 on end end diff --git a/src/mainboard/google/rex/variants/karis/overridetree.cb b/src/mainboard/google/rex/variants/karis/overridetree.cb index ea45d61981..2607ad776f 100644 --- a/src/mainboard/google/rex/variants/karis/overridetree.cb +++ b/src/mainboard/google/rex/variants/karis/overridetree.cb @@ -404,6 +404,7 @@ chip soc/intel/meteorlake register "generic.stop_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C06)" register "generic.stop_off_delay_ms" = "1" register "generic.has_power_resource" = "1" + register "generic.use_gpio_for_status" = "true" register "hid_desc_reg_offset" = "0x01" device i2c 0x10 on end end diff --git a/src/mainboard/google/rex/variants/rex0/overridetree.cb b/src/mainboard/google/rex/variants/rex0/overridetree.cb index 66b2bc9528..177e88781c 100644 --- a/src/mainboard/google/rex/variants/rex0/overridetree.cb +++ b/src/mainboard/google/rex/variants/rex0/overridetree.cb @@ -579,6 +579,7 @@ chip soc/intel/meteorlake register "generic.stop_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C06)" register "generic.stop_off_delay_ms" = "2" register "generic.has_power_resource" = "1" + register "generic.use_gpio_for_status" = "true" register "hid_desc_reg_offset" = "0x01" device i2c 10 on probe TOUCHSCREEN TOUCHSCREEN_I2C diff --git a/src/mainboard/google/rex/variants/screebo/overridetree.cb b/src/mainboard/google/rex/variants/screebo/overridetree.cb index d46d7c91ef..6e8f5fc028 100644 --- a/src/mainboard/google/rex/variants/screebo/overridetree.cb +++ b/src/mainboard/google/rex/variants/screebo/overridetree.cb @@ -451,6 +451,7 @@ chip soc/intel/meteorlake register "generic.enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_B17)" register "generic.enable_delay_ms" = "12" register "generic.has_power_resource" = "1" + register "generic.use_gpio_for_status" = "true" register "hid_desc_reg_offset" = "0x01" device i2c 41 on probe TOUCHSCREEN TOUCHSCREEN_ILITEK @@ -467,6 +468,7 @@ chip soc/intel/meteorlake register "generic.enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_B17)" register "generic.enable_delay_ms" = "1" register "generic.has_power_resource" = "1" + register "generic.use_gpio_for_status" = "true" register "hid_desc_reg_offset" = "0x01" device i2c 10 on probe TOUCHSCREEN TOUCHSCREEN_ELAN