On Sat, Jun 18, 2022 at 11:02:33PM +0200, Hans de Goede wrote: > On ACPI boards, when we cannot get the GPIOs to do a reset ourselves > if necessary, call acpi_device_fix_up_power() to force the ACPI _PS0 > method to run. > > On some devices without proper GPIO descriptions this will reset > the touchscreen for us and this may be necessary for us to be able > to communicate to the touchscreen at all. > > Specifically on an Aya Neo Next this change will cause the _PS0() > ACPI function to call INIT() which does: > > Method (INIT, 0, Serialized) > { > TP_I = 0x00A50000 > TP_R = 0x00A50000 > Sleep (0x0A) > TP_I = 0x00E50000 > Sleep (One) > TP_R = 0x00E50000 > Sleep (0x06) > TP_I = 0x00A50000 > Sleep (0x3C) > TP_I = 0x00041800 > } > > On older kernels the ACPI core assumed a power-on was necessary by itself > and would run _PS0 before our probe function runs, which can be seen from > the GPIO pin ctrl registers in /sys/kernel/debug/gpio which match > the above hex values with older kernels. > > With newer kernels before this change the GPIO pin ctrl registers do not > match, indicating INIT() has not run and probing the touchscreen fails. > > This change makes Linux run _PS0() again fixing the touchscreen not working > on the Aya Neo Next. > > Link: https://bugzilla.kernel.org/show_bug.cgi?id=209061 > Reported-and-tested-by: Maya Matuszczyk <maccraft123mc@xxxxxxxxx> > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> Applied, thank you. -- Dmitry