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

Reply via email to