From 9927094ef05d1248788f1c6f86dc11a32a9e990a Mon Sep 17 00:00:00 2001 From: Momoko Hattori Date: Thu, 13 Mar 2025 22:14:06 +0900 Subject: [PATCH] mb/google/brya: 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 the other non-4es brya variants with touchscreen. BUG=b:397355818 TEST=Dump SSDT and check that the _STA method of touchscreen (i2c3) 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 crota) Change-Id: I068faa97089ce0011727325ffc868450572bdf58 Signed-off-by: Momoko Hattori Reviewed-on: https://review.coreboot.org/c/coreboot/+/86876 Reviewed-by: Eric Lai Reviewed-by: Sam McNally Reviewed-by: Kapil Porwal Tested-by: build bot (Jenkins) --- src/mainboard/google/brya/variants/anahera/overridetree.cb | 2 ++ src/mainboard/google/brya/variants/brya0/overridetree.cb | 3 +++ src/mainboard/google/brya/variants/crota/overridetree.cb | 1 + src/mainboard/google/brya/variants/dochi/overridetree.cb | 2 ++ src/mainboard/google/brya/variants/felwinter/overridetree.cb | 1 + src/mainboard/google/brya/variants/gaelin/overridetree.cb | 1 + src/mainboard/google/brya/variants/gimble/overridetree.cb | 1 + src/mainboard/google/brya/variants/kano/overridetree.cb | 1 + src/mainboard/google/brya/variants/marasov/overridetree.cb | 1 + src/mainboard/google/brya/variants/mithrax/overridetree.cb | 1 + src/mainboard/google/brya/variants/nova/overridetree.cb | 1 + src/mainboard/google/brya/variants/omnigul/overridetree.cb | 2 ++ src/mainboard/google/brya/variants/primus/overridetree.cb | 2 ++ src/mainboard/google/brya/variants/skolas/overridetree.cb | 3 +++ src/mainboard/google/brya/variants/taeko/overridetree.cb | 2 ++ src/mainboard/google/brya/variants/taniks/overridetree.cb | 2 ++ src/mainboard/google/brya/variants/vell/overridetree.cb | 1 + src/mainboard/google/brya/variants/volmar/overridetree.cb | 1 + src/mainboard/google/brya/variants/zydron/overridetree.cb | 1 + 19 files changed, 29 insertions(+) diff --git a/src/mainboard/google/brya/variants/anahera/overridetree.cb b/src/mainboard/google/brya/variants/anahera/overridetree.cb index 95787eec85..2670e11a8e 100644 --- a/src/mainboard/google/brya/variants/anahera/overridetree.cb +++ b/src/mainboard/google/brya/variants/anahera/overridetree.cb @@ -281,6 +281,7 @@ chip soc/intel/alderlake register "stop_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" register "has_power_resource" = "true" + register "use_gpio_for_status" = "true" device i2c 10 on end end chip drivers/i2c/hid @@ -295,6 +296,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_C0)" 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 40 on end end diff --git a/src/mainboard/google/brya/variants/brya0/overridetree.cb b/src/mainboard/google/brya/variants/brya0/overridetree.cb index 3212a5b663..24612c10de 100644 --- a/src/mainboard/google/brya/variants/brya0/overridetree.cb +++ b/src/mainboard/google/brya/variants/brya0/overridetree.cb @@ -955,6 +955,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" 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 @@ -974,6 +975,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" 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 0x5d on end end @@ -991,6 +993,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_C0)" register "generic.enable_delay_ms" = "7" register "generic.has_power_resource" = "1" + register "generic.use_gpio_for_status" = "true" register "hid_desc_reg_offset" = "0x00" device i2c 5c on end end diff --git a/src/mainboard/google/brya/variants/crota/overridetree.cb b/src/mainboard/google/brya/variants/crota/overridetree.cb index 7b0fd59676..a55c68c98e 100644 --- a/src/mainboard/google/brya/variants/crota/overridetree.cb +++ b/src/mainboard/google/brya/variants/crota/overridetree.cb @@ -280,6 +280,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" 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 0x16 on end end diff --git a/src/mainboard/google/brya/variants/dochi/overridetree.cb b/src/mainboard/google/brya/variants/dochi/overridetree.cb index f74db6e9ac..8a10a7e88d 100644 --- a/src/mainboard/google/brya/variants/dochi/overridetree.cb +++ b/src/mainboard/google/brya/variants/dochi/overridetree.cb @@ -259,6 +259,7 @@ chip soc/intel/alderlake register "generic.enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_C0)" 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 end end @@ -276,6 +277,7 @@ chip soc/intel/alderlake register "generic.stop_delay_ms" = "150" 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 end end diff --git a/src/mainboard/google/brya/variants/felwinter/overridetree.cb b/src/mainboard/google/brya/variants/felwinter/overridetree.cb index ee8b584e7c..1865ac6966 100644 --- a/src/mainboard/google/brya/variants/felwinter/overridetree.cb +++ b/src/mainboard/google/brya/variants/felwinter/overridetree.cb @@ -304,6 +304,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" 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 10 on end end diff --git a/src/mainboard/google/brya/variants/gaelin/overridetree.cb b/src/mainboard/google/brya/variants/gaelin/overridetree.cb index 014be974b2..b7bd9f0942 100644 --- a/src/mainboard/google/brya/variants/gaelin/overridetree.cb +++ b/src/mainboard/google/brya/variants/gaelin/overridetree.cb @@ -209,6 +209,7 @@ chip soc/intel/alderlake register "generic.enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_C6)" register "generic.enable_delay_ms" = "6" register "generic.has_power_resource" = "1" + register "generic.use_gpio_for_status" = "true" device i2c 34 on end end end # I2C3 diff --git a/src/mainboard/google/brya/variants/gimble/overridetree.cb b/src/mainboard/google/brya/variants/gimble/overridetree.cb index 314899675b..4f1bcdcfb9 100644 --- a/src/mainboard/google/brya/variants/gimble/overridetree.cb +++ b/src/mainboard/google/brya/variants/gimble/overridetree.cb @@ -237,6 +237,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" 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 0x15 on end end diff --git a/src/mainboard/google/brya/variants/kano/overridetree.cb b/src/mainboard/google/brya/variants/kano/overridetree.cb index 6e3383eaea..c832f96301 100644 --- a/src/mainboard/google/brya/variants/kano/overridetree.cb +++ b/src/mainboard/google/brya/variants/kano/overridetree.cb @@ -434,6 +434,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" 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/brya/variants/marasov/overridetree.cb b/src/mainboard/google/brya/variants/marasov/overridetree.cb index add5181b2f..392fbdd715 100644 --- a/src/mainboard/google/brya/variants/marasov/overridetree.cb +++ b/src/mainboard/google/brya/variants/marasov/overridetree.cb @@ -306,6 +306,7 @@ chip soc/intel/alderlake register "stop_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" register "stop_off_delay_ms" = "1" register "has_power_resource" = "true" + register "use_gpio_for_status" = "true" device i2c 10 on probe TOUCH TOUCH_ELAN0001 end diff --git a/src/mainboard/google/brya/variants/mithrax/overridetree.cb b/src/mainboard/google/brya/variants/mithrax/overridetree.cb index 0e1ba0b736..15bebe2a1a 100644 --- a/src/mainboard/google/brya/variants/mithrax/overridetree.cb +++ b/src/mainboard/google/brya/variants/mithrax/overridetree.cb @@ -258,6 +258,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" 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 10 on end end diff --git a/src/mainboard/google/brya/variants/nova/overridetree.cb b/src/mainboard/google/brya/variants/nova/overridetree.cb index a615fdd70b..091edd52c0 100644 --- a/src/mainboard/google/brya/variants/nova/overridetree.cb +++ b/src/mainboard/google/brya/variants/nova/overridetree.cb @@ -218,6 +218,7 @@ chip soc/intel/alderlake register "generic.reset_delay_ms" = "200" 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 end end diff --git a/src/mainboard/google/brya/variants/omnigul/overridetree.cb b/src/mainboard/google/brya/variants/omnigul/overridetree.cb index a6c5eccf2c..20e3d41064 100644 --- a/src/mainboard/google/brya/variants/omnigul/overridetree.cb +++ b/src/mainboard/google/brya/variants/omnigul/overridetree.cb @@ -287,6 +287,7 @@ chip soc/intel/alderlake register "generic.stop_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" 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 40 on end end @@ -304,6 +305,7 @@ chip soc/intel/alderlake register "generic.stop_delay_ms" = "150" 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 end end diff --git a/src/mainboard/google/brya/variants/primus/overridetree.cb b/src/mainboard/google/brya/variants/primus/overridetree.cb index 893b3cf062..b2619ee67d 100644 --- a/src/mainboard/google/brya/variants/primus/overridetree.cb +++ b/src/mainboard/google/brya/variants/primus/overridetree.cb @@ -258,6 +258,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" 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 @@ -273,6 +274,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_C0)" 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 0x40 on end end diff --git a/src/mainboard/google/brya/variants/skolas/overridetree.cb b/src/mainboard/google/brya/variants/skolas/overridetree.cb index c87690c66a..dc3ef3d34f 100644 --- a/src/mainboard/google/brya/variants/skolas/overridetree.cb +++ b/src/mainboard/google/brya/variants/skolas/overridetree.cb @@ -954,6 +954,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" 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 @@ -973,6 +974,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" 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 0x5d on end end @@ -990,6 +992,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_C0)" register "generic.enable_delay_ms" = "7" register "generic.has_power_resource" = "1" + register "generic.use_gpio_for_status" = "true" register "hid_desc_reg_offset" = "0x00" device i2c 5c on end end diff --git a/src/mainboard/google/brya/variants/taeko/overridetree.cb b/src/mainboard/google/brya/variants/taeko/overridetree.cb index 964d83309b..ff25f7b638 100644 --- a/src/mainboard/google/brya/variants/taeko/overridetree.cb +++ b/src/mainboard/google/brya/variants/taeko/overridetree.cb @@ -478,6 +478,7 @@ chip soc/intel/alderlake # Parameter T4 >= 1ms 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 5d on end end @@ -493,6 +494,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_C0)" register "enable_delay_ms" = "1" register "has_power_resource" = "true" + register "use_gpio_for_status" = "true" device i2c 10 on end end end diff --git a/src/mainboard/google/brya/variants/taniks/overridetree.cb b/src/mainboard/google/brya/variants/taniks/overridetree.cb index ebe5853283..e11793ae4e 100644 --- a/src/mainboard/google/brya/variants/taniks/overridetree.cb +++ b/src/mainboard/google/brya/variants/taniks/overridetree.cb @@ -295,6 +295,7 @@ chip soc/intel/alderlake # Parameter T4 >= 1ms 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 5d on end end @@ -310,6 +311,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_C0)" register "enable_delay_ms" = "1" register "has_power_resource" = "true" + register "use_gpio_for_status" = "true" device i2c 10 on end end end diff --git a/src/mainboard/google/brya/variants/vell/overridetree.cb b/src/mainboard/google/brya/variants/vell/overridetree.cb index 6f9b325a19..273fb0e3ab 100644 --- a/src/mainboard/google/brya/variants/vell/overridetree.cb +++ b/src/mainboard/google/brya/variants/vell/overridetree.cb @@ -330,6 +330,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" 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/brya/variants/volmar/overridetree.cb b/src/mainboard/google/brya/variants/volmar/overridetree.cb index 96935170f1..f57b733931 100644 --- a/src/mainboard/google/brya/variants/volmar/overridetree.cb +++ b/src/mainboard/google/brya/variants/volmar/overridetree.cb @@ -295,6 +295,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" 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/brya/variants/zydron/overridetree.cb b/src/mainboard/google/brya/variants/zydron/overridetree.cb index 0acf4906c8..a3c4f34f6c 100644 --- a/src/mainboard/google/brya/variants/zydron/overridetree.cb +++ b/src/mainboard/google/brya/variants/zydron/overridetree.cb @@ -410,6 +410,7 @@ chip soc/intel/alderlake "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C6)" 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