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 d0367e38a9 ("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 <momohatt@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/86876
Reviewed-by: Eric Lai <ericllai@google.com>
Reviewed-by: Sam McNally <sammc@google.com>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Momoko Hattori 2025-03-13 22:14:06 +09:00 committed by Eric Lai
commit 9927094ef0
19 changed files with 29 additions and 0 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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