Root cause on HP OmniBook X Flip 16 (board 8DA1, BIOS F.20, ELAN2514 04F3:43F0):
The firmware's touchscreen power resource \_SB.PC00.I2C4.PTPL._ON calls \_SB.SGRA (TPI2, TPIP) with TPIP = T0IP = 0, which clears PADCFG0.GPIROUTIOXAPIC on the touchscreen interrupt pad (GPP_E_18, INTC105D:01 pin 44). TPL1._INI sets the same bit correctly with (T0IP ^ 1), and _OFF writes (TPIP ^ 1), so _ON/_OFF are inverted. Linux evaluates _ON at probe and on every D3->D0 transition, so the pad is disconnected from the IO-APIC and the level-triggered IRQ never deasserts: - PADCFG0 = 0x80000102 (bit 20 clear), RXSTATE = 1 (line idle) while the IRQ storms - ~630 i2c-hid reads/s while idle, ~95% return 0xffff - frames shifted by a leading 0xff, "incomplete report (67/7167)" - pen reports at ~25 Hz instead of ~268 Hz (measured on Windows, same machine, in-box hidi2c only) Windows does not appear to run _ON while _STA already reports the resource on, so it keeps the routing from _INI. Patch (i2c-hid-acpi calls \_SB.SGRA(\GPLI, 1) from power_up, DMI-limited to 8DA0/8DA1): https://patch.msgid.link/[email protected] Tested on 8DA1 with 7.2.8: idle IRQ rate 0/s after boot and after s2idle resume, PADCFG0 = 0x80100102, pen and touch normal. ACPI excerpts, transport traces and the Windows ETW comparison: https://github.com/iamwaqargulzar/hp-omnibook-x-flip-16-linux-touchscreen-pen-fix If you have a different board ID with the same symptom, please post the output of: cat /sys/class/dmi/id/board_name /sys/class/dmi/id/bios_version grep ELAN /proc/interrupts; sleep 1; grep ELAN /proc/interrupts -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2142384 Title: ELAN2514:00 (04F3:4428) stylus report rate extremely low (~10–25 Hz) on Ubuntu 24.04 kernel 6.17 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2142384/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
