Created attachment 275599 [details]
Disassembled ACPI Table
I tried to get the touchscreen work for HP Envy x360(Ryzen 2500u) on current kernel and found out that the Interrupt for the GPIO driver get wrong detected and configured. Maybe a typical bug in the ACPI table from BIOS.
In ACPI Table the IRQ is defined as
Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
but in dmesg it prints
[ 0.098531] ACPI: IRQ 7 override to edge, high
I just made a dirty hack to force "level, low" for this IRQ (and a change related to other bug) and the touchscreen works as expected.
But it needs a true fix in the hardware detection and configuration.
Created attachment 275601 [details]
dmesg log 4.16.4
dmesg log of a vanilla 4.16.4 kernel
Thank you for pinpointing the problem like this for us. I don't see any really obvious nice answer here.
So I believe it is best to override the IRQ type manually in the AMD gpio driver to correct the acpi_get_override_irq() results from the ACPI core.
I've written a patch doing this, which although not really pretty should be upstreamable (and should not cause issues on other devices).
If you can give this patch a try that would be great. I will attach it here.
Created attachment 279527 [details]
[PATCH] pinctrl/amd: Take irq-type directly from the ACPI resource table
Created attachment 279553 [details]
[PATCH] ACPI / platform: Add SMB0001 HID to forbidden_id_list
So my previous patch was no good. As discussed in bug 198715 this patch actually fixes this and has been submitted upstream.
See the commit message inside the patch for a long explanation of what the problem was and how this patch fixes it.
Patch upstream since Kernel 4.20-rc4