Re: [PATCH] i2c: acpi: Add ELAN0662 to i2c_acpi_force_100khz_device_ids
From: Yuqi Xu
Date: Sun Oct 04 2026 - 23:27:50 EST
Hi Andi, Mika,
Please don't apply this patch. I was wrong about the fix, and I'm
sorry for the time already spent on it.
I treated this as the same 100 kHz quirk as the other ELAN touchpads.
That was a mistake. On this machine, forcing ELAN0662 to 100 kHz does
not stop the touch jumps.
The firmware already asks for 400 kHz. \_SB.I2CA (_HID AMDI0010)
publishes the timings through _DSM. iasl marks the UUID unknown, and
I could not find a public AMD specification for it:
Method (_DSM, 4, Serialized)
{
If ((Arg0 == ToUUID ("d93e4d1c-58bb-493c-a06a-605a717f9e2e")))
{
Switch (ToInteger (Arg2))
{
Case (Zero)
{
Return (Buffer (One) { 0x03 })
}
Case (One)
{
Return (Buffer (0x04) { 0xE5, 0x00, 0x6A, 0x00 })
}
}
}
}
The same UUID is present on other Lenovo AMD platforms. AMD's
amdi2c.sys 1.2.0.126 reads function 1 as two little-endian words,
LCNT 0x00E5 (229) and HCNT 0x006A (106), and programs IC_SDA_HOLD
with 0x48. I could not find that layout written down anywhere else.
i2c-designware does not evaluate this _DSM. It derives HCNT/LCNT from
the 150 MHz input clock and leaves SDA hold at the reset value of 1.
The comment above i2c_acpi_force_100khz_device_ids already suspects
those default counters, and notes that Windows works at 400 kHz.
Forcing 100 kHz only avoids the bad fast-mode counters.
Programming the values from the _DSM changed the result:
100 kHz, SDA hold 45: touch jumps within about a minute
400 kHz, FS HCNT/LCNT 106/229, SDA hold 0x48:
i2c_designware AMDI0010:00: SDA Hold Time TX:RX = 72:1
i2c_designware AMDI0010:00: Fast Mode HCNT:LCNT = 106:229
i2c_designware AMDI0010:00: Bus speed: Fast Mode (400 kHz)
the same use no longer logged "Touch jump detected".
So this entry does not belong in
i2c_acpi_force_100khz_device_ids. The follow-up will be a separate
i2c-designware patch: in i2c_dw_acpi_configure(), when SSCN/FMCN are
absent, take fast-mode HCNT/LCNT from that _DSM and set SDA hold to
0x48, and leave the bus at the firmware speed. Please drop this one.
Thank you for the Ack, Mika, and sorry again.
Yuqi