[PATCH] i2c: acpi: Add DELL0A86 to i2c_acpi_force_100khz_device_ids

xiaoyueyoqwq posted 1 patch 1 month 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 DELL0A86 to i2c_acpi_force_100khz_device_ids
Posted by xiaoyueyoqwq 1 month ago
The ELAN 04F3:3185 touchpad exposed as DELL0A86 on the Dell Inspiron
13 5310 intermittently exhibits excessive smoothing when the I2C bus
runs at 400 kHz. During an affected period pointer movement becomes
severely sluggish and sticky for tens of seconds.

The ACPI firmware configures the touchpad bus for 400 kHz. Add DELL0A86
to i2c_acpi_force_100khz_device_ids so that the bus runs at 100 kHz, as
is already done for other touchpads exhibiting the same excessive
smoothing problem.

With the quirk applied, the kernel reports that the firmware requested
400 kHz and that the bus is forced to 100 kHz. The problem did not recur
during extended heavy use, including an S4 hibernate/resume cycle.

Assisted-by: Codex:GPT-5.6-Sol
Assisted-by: ChatGPT:GPT-5.6-Sol
Assisted-by: OpenCode:Ox Alpha (x-preview-f-free)
Signed-off-by: xiaoyueyoqwq <xiaoyueyoqwq@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 8f3bdd5..3af0e05 100644
--- a/drivers/i2c/i2c-core-acpi.c
+++ b/drivers/i2c/i2c-core-acpi.c
@@ -371,6 +371,7 @@ static const struct acpi_device_id 
i2c_acpi_force_100khz_device_ids[] = {
       * the device works without issues on Windows at what is expected 
to be
       * a 400KHz frequency. The root cause of the issue is not known.
       */
+    { "DELL0A86", 0 },
      { "DLL0945", 0 },
      { "ELAN0678", 0 },
      { "ELAN06FA", 0 },
-- 
2.53.0

[PATCH v2] i2c: acpi: Add DELL0A86 to i2c_acpi_force_100khz_device_ids
Posted by xiaoyueyoqwq 1 month ago
The ELAN 04F3:3185 touchpad exposed as DELL0A86 on the Dell Inspiron
13 5310 intermittently exhibits excessive smoothing when the I2C bus
runs at 400 kHz. During an affected period pointer movement becomes
severely sluggish and sticky for tens of seconds.

The ACPI firmware configures the touchpad bus for 400 kHz. Add DELL0A86
to i2c_acpi_force_100khz_device_ids so that the bus runs at 100 kHz, as
is already done for other touchpads exhibiting the same excessive
smoothing problem.

With the quirk applied, the kernel reports that the firmware requested
400 kHz and that the bus is forced to 100 kHz. The problem did not recur
during extended heavy use, including an S4 hibernate/resume cycle.

Assisted-by: Codex:ChatGPT-5.6-Sol
Assisted-by: OpenCode:Ox Alpha (x-preview-f-free)
Signed-off-by: xiaoyueyoqwq <xiaoyueyoqwq@gmail.com>
---
Changes in v2:
- Resend as non-flowed plain text; Thunderbird mangled whitespace in v1.
- No code changes.

 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 8f3bdd5..3af0e05 100644
--- a/drivers/i2c/i2c-core-acpi.c
+++ b/drivers/i2c/i2c-core-acpi.c
@@ -371,6 +371,7 @@ static const struct acpi_device_id i2c_acpi_force_100khz_device_ids[] = {
 	 * the device works without issues on Windows at what is expected to be
 	 * a 400KHz frequency. The root cause of the issue is not known.
 	 */
+	{ "DELL0A86", 0 },
 	{ "DLL0945", 0 },
 	{ "ELAN0678", 0 },
 	{ "ELAN06FA", 0 },
-- 
2.53.0
Re: [PATCH v2] i2c: acpi: Add DELL0A86 to i2c_acpi_force_100khz_device_ids
Posted by Mika Westerberg 1 month ago
+Andy

On Sun, Aug 23, 2026 at 08:33:10PM +0800, xiaoyueyoqwq wrote:
> The ELAN 04F3:3185 touchpad exposed as DELL0A86 on the Dell Inspiron
> 13 5310 intermittently exhibits excessive smoothing when the I2C bus
> runs at 400 kHz. During an affected period pointer movement becomes
> severely sluggish and sticky for tens of seconds.
> 
> The ACPI firmware configures the touchpad bus for 400 kHz. Add DELL0A86
> to i2c_acpi_force_100khz_device_ids so that the bus runs at 100 kHz, as
> is already done for other touchpads exhibiting the same excessive
> smoothing problem.
> 
> With the quirk applied, the kernel reports that the firmware requested
> 400 kHz and that the bus is forced to 100 kHz. The problem did not recur
> during extended heavy use, including an S4 hibernate/resume cycle.
> 
> Assisted-by: Codex:ChatGPT-5.6-Sol
> Assisted-by: OpenCode:Ox Alpha (x-preview-f-free)
> Signed-off-by: xiaoyueyoqwq <xiaoyueyoqwq@gmail.com>

You should use your full name here.

Anyway looks good to me.

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

> ---
> Changes in v2:
> - Resend as non-flowed plain text; Thunderbird mangled whitespace in v1.
> - No code changes.
> 
>  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 8f3bdd5..3af0e05 100644
> --- a/drivers/i2c/i2c-core-acpi.c
> +++ b/drivers/i2c/i2c-core-acpi.c
> @@ -371,6 +371,7 @@ static const struct acpi_device_id i2c_acpi_force_100khz_device_ids[] = {
>  	 * the device works without issues on Windows at what is expected to be
>  	 * a 400KHz frequency. The root cause of the issue is not known.
>  	 */
> +	{ "DELL0A86", 0 },
>  	{ "DLL0945", 0 },
>  	{ "ELAN0678", 0 },
>  	{ "ELAN06FA", 0 },
> -- 
> 2.53.0
Re: [PATCH v2] i2c: acpi: Add DELL0A86 to i2c_acpi_force_100khz_device_ids
Posted by Andy Shevchenko 1 month ago
On Mon, Aug 24, 2026 at 12:22:21PM +0200, Mika Westerberg wrote:
> +Andy
> 
> On Sun, Aug 23, 2026 at 08:33:10PM +0800, xiaoyueyoqwq wrote:
> > The ELAN 04F3:3185 touchpad exposed as DELL0A86 on the Dell Inspiron
> > 13 5310 intermittently exhibits excessive smoothing when the I2C bus
> > runs at 400 kHz. During an affected period pointer movement becomes
> > severely sluggish and sticky for tens of seconds.

Just for the confirmation (no need to include in the commit message) can
you share the DSDT excerpt of the device in question?

(acpidump -o tables.dat; acpixtract tables.dat; iasl -d dsdt.dat; # open dsdt.dsl)

> > The ACPI firmware configures the touchpad bus for 400 kHz. Add DELL0A86
> > to i2c_acpi_force_100khz_device_ids so that the bus runs at 100 kHz, as
> > is already done for other touchpads exhibiting the same excessive
> > smoothing problem.
> > 
> > With the quirk applied, the kernel reports that the firmware requested
> > 400 kHz and that the bus is forced to 100 kHz. The problem did not recur
> > during extended heavy use, including an S4 hibernate/resume cycle.

...

> > +	{ "DELL0A86", 0 },
> >  	{ "DLL0945", 0 },
> >  	{ "ELAN0678", 0 },
> >  	{ "ELAN06FA", 0 },

At some point this should be switched to C99 initialisers and dropped unused
driver_data.

-- 
With Best Regards,
Andy Shevchenko
Re: [PATCH v2] i2c: acpi: Add DELL0A86 to i2c_acpi_force_100khz_device_ids
Posted by xiaoyueyoqwq 1 month ago
Hi Andy,

Sure. The relevant DSDT excerpt is below.

    Scope (_SB.PC00.I2C1)
    {
        ...

        Device (TPD0)
        {
            Name (SBFB, ResourceTemplate ()
            {
                I2cSerialBusV2 (0x002C, ControllerInitiated, 0x00061A80,
                    AddressingMode7Bit, "\\_SB.PC00.I2C1",
                    0x00, ResourceConsumer, _Y55, Exclusive,
                    )
            })

            CreateWordField (SBFB, \_SB.PC00.I2C1.TPD0._Y55._ADR, BADR)
            CreateDWordField (SBFB, \_SB.PC00.I2C1.TPD0._Y55._SPE, SPED)

            Method (_INI, 0, NotSerialized)
            {
                ...

                HID2 = TPDH
                BADR = TPDB
                If ((TPDS == Zero))
                {
                    SPED = 0x000186A0
                }

                If ((TPDS == One))
                {
                    SPED = 0x00061A80
                }

                If ((TPDS == 0x02))
                {
                    SPED = 0x000F4240
                }
            }

            Name (ITPN, "DELL0A86")
            Method (_HID, 0, NotSerialized)
            {
                Return (ITPN)
            }

            ...

            Method (_CRS, 0, NotSerialized)
            {
                ...

                If ((TPDM == Zero))
                {
                    Return (ConcatenateResTemplate (I2CM (I2CX, BADR, SPED), SBFG))
                }

                Return (ConcatenateResTemplate (I2CM (I2CX, BADR, SPED), SBFI))
            }
        }
    }

The speed values are 100 kHz, 400 kHz and 1 MHz respectively. On this
machine Linux receives 400 kHz from ACPI, which is also confirmed by the
kernel log when the quirk is applied:

    DSDT uses known not-working I2C bus speed 400000, forcing it to 100000

And for now my PC touchpad has continued to work normally since applying the quirk, and the issue has still not recurred. :)

Thanks,
YuXin

在 2026/8/27 14:22, Andy Shevchenko 写道:
> On Mon, Aug 24, 2026 at 12:22:21PM +0200, Mika Westerberg wrote:
>> +Andy
>>
>> On Sun, Aug 23, 2026 at 08:33:10PM +0800, xiaoyueyoqwq wrote:
>>> The ELAN 04F3:3185 touchpad exposed as DELL0A86 on the Dell Inspiron
>>> 13 5310 intermittently exhibits excessive smoothing when the I2C bus
>>> runs at 400 kHz. During an affected period pointer movement becomes
>>> severely sluggish and sticky for tens of seconds.
> Just for the confirmation (no need to include in the commit message) can
> you share the DSDT excerpt of the device in question?
>
> (acpidump -o tables.dat; acpixtract tables.dat; iasl -d dsdt.dat; # open dsdt.dsl)
>
>>> The ACPI firmware configures the touchpad bus for 400 kHz. Add DELL0A86
>>> to i2c_acpi_force_100khz_device_ids so that the bus runs at 100 kHz, as
>>> is already done for other touchpads exhibiting the same excessive
>>> smoothing problem.
>>>
>>> With the quirk applied, the kernel reports that the firmware requested
>>> 400 kHz and that the bus is forced to 100 kHz. The problem did not recur
>>> during extended heavy use, including an S4 hibernate/resume cycle.
> ...
>
>>> +	{ "DELL0A86", 0 },
>>>  	{ "DLL0945", 0 },
>>>  	{ "ELAN0678", 0 },
>>>  	{ "ELAN06FA", 0 },
> At some point this should be switched to C99 initialisers and dropped unused
> driver_data.
>
Re: [PATCH v2] i2c: acpi: Add DELL0A86 to i2c_acpi_force_100khz_device_ids
Posted by Andy Shevchenko 1 month ago
On Mon, Aug 24, 2026 at 12:22:21PM +0200, Mika Westerberg wrote:
> +Andy

We need to convert the ID table to use C99 initialisers and drop the unused
driver_data. It may be done either before or after this change.

> On Sun, Aug 23, 2026 at 08:33:10PM +0800, xiaoyueyoqwq wrote:
> > The ELAN 04F3:3185 touchpad exposed as DELL0A86 on the Dell Inspiron
> > 13 5310 intermittently exhibits excessive smoothing when the I2C bus
> > runs at 400 kHz. During an affected period pointer movement becomes
> > severely sluggish and sticky for tens of seconds.
> > 
> > The ACPI firmware configures the touchpad bus for 400 kHz. Add DELL0A86
> > to i2c_acpi_force_100khz_device_ids so that the bus runs at 100 kHz, as
> > is already done for other touchpads exhibiting the same excessive
> > smoothing problem.
> > 
> > With the quirk applied, the kernel reports that the firmware requested
> > 400 kHz and that the bus is forced to 100 kHz. The problem did not recur
> > during extended heavy use, including an S4 hibernate/resume cycle.

Is here any bug report somewhere publicly made?

> > Assisted-by: Codex:ChatGPT-5.6-Sol
> > Assisted-by: OpenCode:Ox Alpha (x-preview-f-free)
> > Signed-off-by: xiaoyueyoqwq <xiaoyueyoqwq@gmail.com>
> 
> You should use your full name here.
> 
> Anyway looks good to me.
> 
> Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>

Otherwise agree with Mika's judgement.

-- 
With Best Regards,
Andy Shevchenko
[PATCH v3] i2c: acpi: Add DELL0A86 to i2c_acpi_force_100khz_device_ids
Posted by YuXin Xiao 1 month ago
The ELAN 04F3:3185 touchpad exposed as DELL0A86 on the Dell Inspiron
13 5310 intermittently exhibits excessive smoothing when the I2C bus
runs at 400 kHz. During an affected period pointer movement becomes
severely sluggish and sticky for tens of seconds.

The ACPI firmware configures the touchpad bus for 400 kHz. Add DELL0A86
to i2c_acpi_force_100khz_device_ids so that the bus runs at 100 kHz, as
is already done for other touchpads exhibiting the same excessive
smoothing problem.

With the quirk applied, the kernel reports that the firmware requested
400 kHz and that the bus is forced to 100 kHz. The problem did not recur
during extended heavy use, including an S4 hibernate/resume cycle.

Assisted-by: Codex:ChatGPT-5.6-Sol
Assisted-by: OpenCode:Ox Alpha (x-preview-f-free)

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: YuXin Xiao <xiaoyueyoqwq@gmail.com>
---
Changes in v3:
- Use the contributor's full name as requested by the maintainer.
- Preserve Mika Westerberg's Acked-by; no code changes.

 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 8f3bdd5..3af0e05 100644
--- a/drivers/i2c/i2c-core-acpi.c
+++ b/drivers/i2c/i2c-core-acpi.c
@@ -371,6 +371,7 @@ static const struct acpi_device_id i2c_acpi_force_100khz_device_ids[] = {
 	 * the device works without issues on Windows at what is expected to be
 	 * a 400KHz frequency. The root cause of the issue is not known.
 	 */
+	{ "DELL0A86", 0 },
 	{ "DLL0945", 0 },
 	{ "ELAN0678", 0 },
 	{ "ELAN06FA", 0 },
-- 
2.53.0
[PATCH v4] i2c: acpi: Add DELL0A86 to i2c_acpi_force_100khz_device_ids
Posted by YuXin Xiao 1 month ago
The ELAN 04F3:3185 touchpad exposed as DELL0A86 on the Dell Inspiron
13 5310 intermittently exhibits excessive smoothing when the I2C bus
runs at 400 kHz. During an affected period pointer movement becomes
severely sluggish and sticky for tens of seconds.

The ACPI firmware configures the touchpad bus for 400 kHz. Add DELL0A86
to i2c_acpi_force_100khz_device_ids so that the bus runs at 100 kHz, as
is already done for other touchpads exhibiting the same excessive
smoothing problem.

With the quirk applied, the kernel reports that the firmware requested
400 kHz and that the bus is forced to 100 kHz. The problem did not recur
during extended heavy use, including an S4 hibernate/resume cycle.

An independent 2021 report from another Dell Inspiron 13 5310 user
describes the same intermittent sticky behavior and identifies the same
DELL0A86 / 04F3:3185 touchpad.

Link: https://www.reddit.com/r/linuxquestions/comments/nsso5b/help_needed_with_sticky_touchpad_spoiling_brand/

Assisted-by: Codex:ChatGPT-5.6-Sol
Assisted-by: OpenCode:Ox Alpha (x-preview-f-free)

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: YuXin Xiao <xiaoyueyoqwq@gmail.com>
---
Changes in v4:
- Add an independent public report for the same model, device, and symptom.
- No code changes.

 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 8f3bdd5..3af0e05 100644
--- a/drivers/i2c/i2c-core-acpi.c
+++ b/drivers/i2c/i2c-core-acpi.c
@@ -371,6 +371,7 @@ static const struct acpi_device_id i2c_acpi_force_100khz_device_ids[] = {
 	 * the device works without issues on Windows at what is expected to be
 	 * a 400KHz frequency. The root cause of the issue is not known.
 	 */
+	{ "DELL0A86", 0 },
 	{ "DLL0945", 0 },
 	{ "ELAN0678", 0 },
 	{ "ELAN06FA", 0 },
-- 
2.53.0
Re: [PATCH v4] i2c: acpi: Add DELL0A86 to i2c_acpi_force_100khz_device_ids
Posted by Andi Shyti 1 month ago
Hi YuXin,

Please, next time don't send successive versions as in reply-to.

On Tue, Aug 25, 2026 at 02:15:59AM +0800, YuXin Xiao wrote:
> The ELAN 04F3:3185 touchpad exposed as DELL0A86 on the Dell Inspiron
> 13 5310 intermittently exhibits excessive smoothing when the I2C bus
> runs at 400 kHz. During an affected period pointer movement becomes
> severely sluggish and sticky for tens of seconds.
> 
> The ACPI firmware configures the touchpad bus for 400 kHz. Add DELL0A86
> to i2c_acpi_force_100khz_device_ids so that the bus runs at 100 kHz, as
> is already done for other touchpads exhibiting the same excessive
> smoothing problem.
> 
> With the quirk applied, the kernel reports that the firmware requested
> 400 kHz and that the bus is forced to 100 kHz. The problem did not recur
> during extended heavy use, including an S4 hibernate/resume cycle.
> 
> An independent 2021 report from another Dell Inspiron 13 5310 user
> describes the same intermittent sticky behavior and identifies the same
> DELL0A86 / 04F3:3185 touchpad.
> 
> Link: https://www.reddit.com/r/linuxquestions/comments/nsso5b/help_needed_with_sticky_touchpad_spoiling_brand/
> 
> Assisted-by: Codex:ChatGPT-5.6-Sol
> Assisted-by: OpenCode:Ox Alpha (x-preview-f-free)
> 

Please don't leave a blank line in between tags.

> Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> Signed-off-by: YuXin Xiao <xiaoyueyoqwq@gmail.com>
> ---
> Changes in v4:
> - Add an independent public report for the same model, device, and symptom.
> - No code changes.

Please, don't omit the rest of the changelog. I want to see v2,
v3 and v4.

Anyway, I merged your patch in i2c/i2c.

Thanks,
Andi

>  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 8f3bdd5..3af0e05 100644
> --- a/drivers/i2c/i2c-core-acpi.c
> +++ b/drivers/i2c/i2c-core-acpi.c
> @@ -371,6 +371,7 @@ static const struct acpi_device_id i2c_acpi_force_100khz_device_ids[] = {
>  	 * the device works without issues on Windows at what is expected to be
>  	 * a 400KHz frequency. The root cause of the issue is not known.
>  	 */
> +	{ "DELL0A86", 0 },
>  	{ "DLL0945", 0 },
>  	{ "ELAN0678", 0 },
>  	{ "ELAN06FA", 0 },
> -- 
> 2.53.0
>