[PATCH] i2c: acpi: Add ELAN0678 to i2c_acpi_force_100khz_device_ids

Niels Franke posted 1 patch 1 month, 4 weeks ago
There is a newer version of this series
drivers/i2c/i2c-core-acpi.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] i2c: acpi: Add ELAN0678 to i2c_acpi_force_100khz_device_ids
Posted by Niels Franke 1 month, 4 weeks ago
The ELAN0678 touchpad (04F3:3195) found in the Lenovo ThinkPad X13
exhibits excessive smoothing when the I2C bus runs at 400KHz, making
the touchpad feel sluggish when plugged into AC power. This is the
same issue previously fixed for ELAN06FA.

The device's ACPI table (Lenovo TP-R22) specifies 0x00061A80 (400KHz)
for the I2cSerialBusV2 descriptor. Forcing the bus to 100KHz eliminates
the sluggish behavior.

Signed-off-by: Niels Franke <nielsfranke@gmail.com>
---
 drivers/i2c/i2c-core-acpi.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/i2c/i2c-core-acpi.c b/drivers/i2c/i2c-core-acpi.c
index 2cbd31f77..96d339df0 100644
--- a/drivers/i2c/i2c-core-acpi.c
+++ b/drivers/i2c/i2c-core-acpi.c
@@ -372,6 +372,7 @@ static const struct acpi_device_id i2c_acpi_force_100khz_device_ids[] = {
 	 */
 	{ "DLL0945", 0 },
 	{ "ELAN06FA", 0 },
+	{ "ELAN0678", 0 },
 	{}
 };
 
-- 
2.53.0
Re: [PATCH] i2c: acpi: Add ELAN0678 to i2c_acpi_force_100khz_device_ids
Posted by Wolfram Sang 1 month, 1 week ago
On Sat, Apr 18, 2026 at 07:37:19AM +0200, Niels Franke wrote:
> The ELAN0678 touchpad (04F3:3195) found in the Lenovo ThinkPad X13
> exhibits excessive smoothing when the I2C bus runs at 400KHz, making
> the touchpad feel sluggish when plugged into AC power. This is the
> same issue previously fixed for ELAN06FA.
> 
> The device's ACPI table (Lenovo TP-R22) specifies 0x00061A80 (400KHz)
> for the I2cSerialBusV2 descriptor. Forcing the bus to 100KHz eliminates
> the sluggish behavior.
> 
> Signed-off-by: Niels Franke <nielsfranke@gmail.com>

Kept the sorting (alphanumeric) and applied to for-current, thanks!

Re: [PATCH] i2c: acpi: Add ELAN0678 to i2c_acpi_force_100khz_device_ids
Posted by Odoben 1 month ago
Hi,

I have what appears to be the same issue on a ThinkPad X13 Gen 2 with 
Intel i5-1145G7, but with ACPI HID ELAN0676 instead of ELAN0678.

The touchpad is:

ELAN0676:00 04F3:3195 Touchpad

libinput reports:

Id: i2c:04f3:3195

dmesg shows:

i2c_designware.0 -> i2c-ELAN0676:00 -> hid-multitouch

The ACPI table contains:

Package (0x06)
{
0x04F3,
0x3195,
0x15,
One,
One,
"ELAN0676"
}

and the surrounding firmware logic maps the fifth field to speed:

Local5 == Zero -> SPED = 0x000186A0 = 100 kHz
Local5 == One -> SPED = 0x00061A80 = 400 kHz

So this machine also configures the 04F3:3195 ELAN touchpad at 400 
kHz. The symptom is very frequent rubbery/sluggish pointer movement, 
consistent with the excessive smoothing described for ELAN0678.

Would it make sense to include ELAN0676 in the 
same i2c_acpi_force_100khz_device_ids quirk?

Thanks,
Odoben

On 2026-05-04 11:19, Wolfram Sang wrote:
> On Sat, Apr 18, 2026 at 07:37:19AM +0200, Niels Franke wrote:
>> The ELAN0678 touchpad (04F3:3195) found in the Lenovo ThinkPad X13
>> exhibits excessive smoothing when the I2C bus runs at 400KHz, making
>> the touchpad feel sluggish when plugged into AC power. This is the
>> same issue previously fixed for ELAN06FA.
>>
>> The device's ACPI table (Lenovo TP-R22) specifies 0x00061A80 (400KHz)
>> for the I2cSerialBusV2 descriptor. Forcing the bus to 100KHz eliminates
>> the sluggish behavior.
>>
>> Signed-off-by: Niels Franke <nielsfranke@gmail.com>
> Kept the sorting (alphanumeric) and applied to for-current, thanks!
>
Re: [PATCH] i2c: acpi: Add ELAN0678 to i2c_acpi_force_100khz_device_ids
Posted by Mika Westerberg 1 month ago
Hi,

On Tue, May 12, 2026 at 11:36:26PM +0200, Odoben wrote:
> Hi,
> 
> I have what appears to be the same issue on a ThinkPad X13 Gen 2 with
> Intel i5-1145G7, but with ACPI HID ELAN0676 instead of ELAN0678.
> 
> The touchpad is:
> 
> ELAN0676:00 04F3:3195 Touchpad
> 
> libinput reports:
> 
> Id: i2c:04f3:3195
> 
> dmesg shows:
> 
> i2c_designware.0 -> i2c-ELAN0676:00 -> hid-multitouch
> 
> The ACPI table contains:
> 
> Package (0x06)
> {
> 0x04F3,
> 0x3195,
> 0x15,
> One,
> One,
> "ELAN0676"
> }
> 
> and the surrounding firmware logic maps the fifth field to speed:
> 
> Local5 == Zero -> SPED = 0x000186A0 = 100 kHz
> Local5 == One -> SPED = 0x00061A80 = 400 kHz
> 
> So this machine also configures the 04F3:3195 ELAN touchpad at 400 kHz. The
> symptom is very frequent rubbery/sluggish pointer movement, consistent with
> the excessive smoothing described for ELAN0678.
> 
> Would it make sense to include ELAN0676 in the
> same i2c_acpi_force_100khz_device_ids quirk?

Did you try 100Hz and it made the problem go away? In that case yes it
makes sense to add the quirk.
Re: [PATCH] i2c: acpi: Add ELAN0678 to i2c_acpi_force_100khz_device_ids
Posted by Wolfram Sang 1 month ago
Hi,

> I have what appears to be the same issue on a ThinkPad X13 Gen 2 with
> Intel i5-1145G7, but with ACPI HID ELAN0676 instead of ELAN0678.

...

> Would it make sense to include ELAN0676 in the
> same i2c_acpi_force_100khz_device_ids quirk?

Sounds much like it. Can you create such a patch? Or can you test such
a patch if we provide you one?

Happy hacking,

   Wolfram

Re: [PATCH] i2c: acpi: Add ELAN0678 to i2c_acpi_force_100khz_device_ids
Posted by Mika Westerberg 1 month, 3 weeks ago
On Sat, Apr 18, 2026 at 07:37:19AM +0200, Niels Franke wrote:
> The ELAN0678 touchpad (04F3:3195) found in the Lenovo ThinkPad X13
> exhibits excessive smoothing when the I2C bus runs at 400KHz, making
> the touchpad feel sluggish when plugged into AC power. This is the
> same issue previously fixed for ELAN06FA.
> 
> The device's ACPI table (Lenovo TP-R22) specifies 0x00061A80 (400KHz)
> for the I2cSerialBusV2 descriptor. Forcing the bus to 100KHz eliminates
> the sluggish behavior.
> 
> Signed-off-by: Niels Franke <nielsfranke@gmail.com>

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>