From b9aae6180b41277bcd989766ed63091f4b3eb2b9 Mon Sep 17 00:00:00 2001 From: Simon Yang Date: Tue, 20 May 2025 19:10:46 +0800 Subject: [PATCH] mb/google/nissa/var/meliks: Link touchscreen device with display panel In some panels, the power supply for the display and the I2C touch screen comes from the same source. As a result, if the display is not powered on, the I2C bus will also be unpowered. This leads to a problem : if the Intel DRM driver has not yet reached the stage where it powers on the display, the I2C touch screen device integrated into the panel will remain unpowered as well. A similar issue can also occur after resuming from s0ix. In Linux-like systems, the Intel DRM driver and the generic I2C driver operate independently, so their execution order in the kernel cannot be guaranteed. Kernel patchsets link: https://lore.kernel.org/all/cover.1749199013.git.jani.nikula@intel.com/ Due to the required kernel changes mentioned above, an ACPI device LCD0 needs to be declared under GFX0, and a _DSD declaration must be added to the I2C touch screen device. An example that clearly illustrates the required ACPI change: Scope (\_SB.PCI0.GFX0) { ... Device (LCD0) { Name (_STA, 0x0F) // _STA: Status ... } } Scope (\_SB.PCI0.I2C1) { .... Name (_DSD, Package (0x02) // _DSD: Device-Specific Data { ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301") /* Device Properties for _DSD */, Package (0x02) { ... Package (0x02) { "panel", \_SB.PCI0.GFX0.LCD0 } } }) } BUG=b:398703068 TEST=Extracted SSDT contains a required _DSD entry within the I2C1 touchscreen device scope Cq-Depend: chromium:6626797 Change-Id: I73058851c35a7190d70a51a554cccf21253fc59b Signed-off-by: Simon Yang Reviewed-on: https://review.coreboot.org/c/coreboot/+/87762 Tested-by: build bot (Jenkins) Reviewed-by: Eric Lai Reviewed-by: Subrata Banik --- src/mainboard/google/brya/variants/meliks/overridetree.cb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mainboard/google/brya/variants/meliks/overridetree.cb b/src/mainboard/google/brya/variants/meliks/overridetree.cb index 203edb4686..9595616aaf 100644 --- a/src/mainboard/google/brya/variants/meliks/overridetree.cb +++ b/src/mainboard/google/brya/variants/meliks/overridetree.cb @@ -240,6 +240,10 @@ chip soc/intel/alderlake register "generic.reset_off_delay_ms" = "2" register "generic.has_power_resource" = "1" register "generic.use_gpio_for_status" = "true" + register "generic.property_count" = "1" + register "generic.property_list[0].type" = "ACPI_DP_TYPE_REFERENCE" + register "generic.property_list[0].name" = ""panel"" + register "generic.property_list[0].string" = ""\\_SB.PCI0.GFX0.LCD0"" register "hid_desc_reg_offset" = "0x1" device i2c 4F on end end