* [PATCH] i2c: acpi: Force Dell XPS 17 9720 touchpad to 100 kHz
@ 2026-11-13 8:39 Mika Westerberg
2026-11-13 9:52 ` Hans de Goede
2026-11-13 12:22 ` Andy Shevchenko
0 siblings, 2 replies; 4+ messages in thread
From: Mika Westerberg @ 2026-11-13 8:39 UTC (permalink / raw)
To: Andi Shyti
Cc: Andy Shevchenko, Hans de Goede, penhouse24, linux-i2c, linux-acpi,
Mika Westerberg
The Dell XPS 17 9720 touchpad has the same lagging issue as with others
when run at 400 kHz as the ACPI tables describe. This particular system
does not use standard ACPI ID but it seems to use "Windows Device ID"
VEN_04F3 for whatever reason. Add this one to the 100 kHz quirk list as
well but since this is not a standard ACPI ID match it also via DMI
strings just to be on the safe side.
Reported-by: penhouse24@proton.me
Link: https://lore.kernel.org/linux-i2c/20261109104542.GL176724@black.igk.intel.com/
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
---
drivers/i2c/i2c-core-acpi.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/drivers/i2c/i2c-core-acpi.c b/drivers/i2c/i2c-core-acpi.c
index 84841ed13487..98a8d63e3fb8 100644
--- a/drivers/i2c/i2c-core-acpi.c
+++ b/drivers/i2c/i2c-core-acpi.c
@@ -7,6 +7,7 @@
#include <linux/acpi.h>
#include <linux/device.h>
+#include <linux/dmi.h>
#include <linux/err.h>
#include <linux/i2c.h>
#include <linux/list.h>
@@ -356,6 +357,16 @@ static const struct acpi_device_id i2c_acpi_force_400khz_device_ids[] = {
{ }
};
+static const struct dmi_system_id i2c_acpi_dell_xps_17_9720_dmi_ids[] = {
+ {
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ DMI_MATCH(DMI_PRODUCT_NAME, "XPS 17 9720"),
+ },
+ },
+ { }
+};
+
static const struct acpi_device_id i2c_acpi_force_100khz_device_ids[] = {
/*
* When a 400KHz freq is used on this model of ELAN touchpad in Linux,
@@ -377,6 +388,14 @@ static const struct acpi_device_id i2c_acpi_force_100khz_device_ids[] = {
{ .id = "ELAN0678" },
{ .id = "ELAN06FA" },
{ .id = "ELAN1300" },
+ {
+ /*
+ * Some Dell XPS 17 9720 systems do not use standard
+ * ACPI IDs so we need to match also via DMI strings.
+ */
+ .id = "VEN_04F3",
+ .driver_data = (kernel_ulong_t)i2c_acpi_dell_xps_17_9720_dmi_ids,
+ },
{ }
};
@@ -385,6 +404,7 @@ static acpi_status i2c_acpi_lookup_speed(acpi_handle handle, u32 level,
{
struct i2c_acpi_lookup *lookup = data;
struct acpi_device *adev = acpi_fetch_acpi_dev(handle);
+ const struct acpi_device_id *id;
if (!adev || i2c_acpi_do_lookup(adev, lookup))
return AE_OK;
@@ -398,7 +418,9 @@ static acpi_status i2c_acpi_lookup_speed(acpi_handle handle, u32 level,
if (acpi_match_device_ids(adev, i2c_acpi_force_400khz_device_ids) == 0)
lookup->force_speed = I2C_MAX_FAST_MODE_FREQ;
- if (acpi_match_device_ids(adev, i2c_acpi_force_100khz_device_ids) == 0)
+ id = acpi_match_acpi_device(i2c_acpi_force_100khz_device_ids, adev);
+ if (id && (!id->driver_data ||
+ dmi_check_system((const struct dmi_system_id *)id->driver_data)))
lookup->force_speed = I2C_MAX_STANDARD_MODE_FREQ;
return AE_OK;
--
2.53.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] i2c: acpi: Force Dell XPS 17 9720 touchpad to 100 kHz
2026-11-13 8:39 [PATCH] i2c: acpi: Force Dell XPS 17 9720 touchpad to 100 kHz Mika Westerberg
@ 2026-11-13 9:52 ` Hans de Goede
2026-11-13 11:17 ` Mika Westerberg
2026-11-13 12:22 ` Andy Shevchenko
1 sibling, 1 reply; 4+ messages in thread
From: Hans de Goede @ 2026-11-13 9:52 UTC (permalink / raw)
To: Mika Westerberg, Andi Shyti
Cc: Andy Shevchenko, penhouse24, linux-i2c, linux-acpi
Hi,
On 13-Nov-26 09:39, Mika Westerberg wrote:
> The Dell XPS 17 9720 touchpad has the same lagging issue as with others
> when run at 400 kHz as the ACPI tables describe. This particular system
> does not use standard ACPI ID but it seems to use "Windows Device ID"
> VEN_04F3 for whatever reason. Add this one to the 100 kHz quirk list as
> well but since this is not a standard ACPI ID match it also via DMI
> strings just to be on the safe side.
>
> Reported-by: penhouse24@proton.me
> Link: https://lore.kernel.org/linux-i2c/20261109104542.GL176724@black.igk.intel.com/
> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Thank you for your patch.
> ---
> drivers/i2c/i2c-core-acpi.c | 24 +++++++++++++++++++++++-
> 1 file changed, 23 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/i2c/i2c-core-acpi.c b/drivers/i2c/i2c-core-acpi.c
> index 84841ed13487..98a8d63e3fb8 100644
> --- a/drivers/i2c/i2c-core-acpi.c
> +++ b/drivers/i2c/i2c-core-acpi.c
> @@ -7,6 +7,7 @@
>
> #include <linux/acpi.h>
> #include <linux/device.h>
> +#include <linux/dmi.h>
> #include <linux/err.h>
> #include <linux/i2c.h>
> #include <linux/list.h>
> @@ -356,6 +357,16 @@ static const struct acpi_device_id i2c_acpi_force_400khz_device_ids[] = {
> { }
> };
>
> +static const struct dmi_system_id i2c_acpi_dell_xps_17_9720_dmi_ids[] = {
> + {
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_NAME, "XPS 17 9720"),
> + },
> + },
> + { }
> +};
> +
> static const struct acpi_device_id i2c_acpi_force_100khz_device_ids[] = {
> /*
> * When a 400KHz freq is used on this model of ELAN touchpad in Linux,
> @@ -377,6 +388,14 @@ static const struct acpi_device_id i2c_acpi_force_100khz_device_ids[] = {
> { .id = "ELAN0678" },
> { .id = "ELAN06FA" },
> { .id = "ELAN1300" },
> + {
> + /*
> + * Some Dell XPS 17 9720 systems do not use standard
> + * ACPI IDs so we need to match also via DMI strings.
> + */
> + .id = "VEN_04F3",
04F3 is ELAN's USB/I2C-HID vendor ID and the commonality between all touchpads
with needs this seems to be them being from ELAN.
Also a quick grep through my DSDT collection shows 0 uses of VEN_04F3,
which makes me think this is pretty unique.
So all in all I think we can just add a match on "VEN_04F3" without
requiring / adding DMI matching ?
Regards,
Hans
> + .driver_data = (kernel_ulong_t)i2c_acpi_dell_xps_17_9720_dmi_ids,
> + },
> { }
> };
>
> @@ -385,6 +404,7 @@ static acpi_status i2c_acpi_lookup_speed(acpi_handle handle, u32 level,
> {
> struct i2c_acpi_lookup *lookup = data;
> struct acpi_device *adev = acpi_fetch_acpi_dev(handle);
> + const struct acpi_device_id *id;
>
> if (!adev || i2c_acpi_do_lookup(adev, lookup))
> return AE_OK;
> @@ -398,7 +418,9 @@ static acpi_status i2c_acpi_lookup_speed(acpi_handle handle, u32 level,
> if (acpi_match_device_ids(adev, i2c_acpi_force_400khz_device_ids) == 0)
> lookup->force_speed = I2C_MAX_FAST_MODE_FREQ;
>
> - if (acpi_match_device_ids(adev, i2c_acpi_force_100khz_device_ids) == 0)
> + id = acpi_match_acpi_device(i2c_acpi_force_100khz_device_ids, adev);
> + if (id && (!id->driver_data ||
> + dmi_check_system((const struct dmi_system_id *)id->driver_data)))
> lookup->force_speed = I2C_MAX_STANDARD_MODE_FREQ;
>
> return AE_OK;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] i2c: acpi: Force Dell XPS 17 9720 touchpad to 100 kHz
2026-11-13 9:52 ` Hans de Goede
@ 2026-11-13 11:17 ` Mika Westerberg
0 siblings, 0 replies; 4+ messages in thread
From: Mika Westerberg @ 2026-11-13 11:17 UTC (permalink / raw)
To: Hans de Goede
Cc: Andi Shyti, Andy Shevchenko, penhouse24, linux-i2c, linux-acpi
Hi,
On Fri, Nov 13, 2026 at 10:52:09AM +0100, Hans de Goede wrote:
> Hi,
>
> On 13-Nov-26 09:39, Mika Westerberg wrote:
> > The Dell XPS 17 9720 touchpad has the same lagging issue as with others
> > when run at 400 kHz as the ACPI tables describe. This particular system
> > does not use standard ACPI ID but it seems to use "Windows Device ID"
> > VEN_04F3 for whatever reason. Add this one to the 100 kHz quirk list as
> > well but since this is not a standard ACPI ID match it also via DMI
> > strings just to be on the safe side.
> >
> > Reported-by: penhouse24@proton.me
> > Link: https://lore.kernel.org/linux-i2c/20261109104542.GL176724@black.igk.intel.com/
> > Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
>
> Thank you for your patch.
>
> > ---
> > drivers/i2c/i2c-core-acpi.c | 24 +++++++++++++++++++++++-
> > 1 file changed, 23 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/i2c/i2c-core-acpi.c b/drivers/i2c/i2c-core-acpi.c
> > index 84841ed13487..98a8d63e3fb8 100644
> > --- a/drivers/i2c/i2c-core-acpi.c
> > +++ b/drivers/i2c/i2c-core-acpi.c
> > @@ -7,6 +7,7 @@
> >
> > #include <linux/acpi.h>
> > #include <linux/device.h>
> > +#include <linux/dmi.h>
> > #include <linux/err.h>
> > #include <linux/i2c.h>
> > #include <linux/list.h>
> > @@ -356,6 +357,16 @@ static const struct acpi_device_id i2c_acpi_force_400khz_device_ids[] = {
> > { }
> > };
> >
> > +static const struct dmi_system_id i2c_acpi_dell_xps_17_9720_dmi_ids[] = {
> > + {
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > + DMI_MATCH(DMI_PRODUCT_NAME, "XPS 17 9720"),
> > + },
> > + },
> > + { }
> > +};
> > +
> > static const struct acpi_device_id i2c_acpi_force_100khz_device_ids[] = {
> > /*
> > * When a 400KHz freq is used on this model of ELAN touchpad in Linux,
> > @@ -377,6 +388,14 @@ static const struct acpi_device_id i2c_acpi_force_100khz_device_ids[] = {
> > { .id = "ELAN0678" },
> > { .id = "ELAN06FA" },
> > { .id = "ELAN1300" },
> > + {
> > + /*
> > + * Some Dell XPS 17 9720 systems do not use standard
> > + * ACPI IDs so we need to match also via DMI strings.
> > + */
> > + .id = "VEN_04F3",
>
> 04F3 is ELAN's USB/I2C-HID vendor ID and the commonality between all touchpads
> with needs this seems to be them being from ELAN.
>
> Also a quick grep through my DSDT collection shows 0 uses of VEN_04F3,
> which makes me think this is pretty unique.
>
> So all in all I think we can just add a match on "VEN_04F3" without
> requiring / adding DMI matching ?
Works for me. I'll do that in v2.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] i2c: acpi: Force Dell XPS 17 9720 touchpad to 100 kHz
2026-11-13 8:39 [PATCH] i2c: acpi: Force Dell XPS 17 9720 touchpad to 100 kHz Mika Westerberg
2026-11-13 9:52 ` Hans de Goede
@ 2026-11-13 12:22 ` Andy Shevchenko
1 sibling, 0 replies; 4+ messages in thread
From: Andy Shevchenko @ 2026-11-13 12:22 UTC (permalink / raw)
To: Mika Westerberg
Cc: Andi Shyti, Hans de Goede, penhouse24, linux-i2c, linux-acpi
On Fri, Nov 13, 2026 at 09:39:40AM +0100, Mika Westerberg wrote:
> The Dell XPS 17 9720 touchpad has the same lagging issue as with others
> when run at 400 kHz as the ACPI tables describe. This particular system
> does not use standard ACPI ID but it seems to use "Windows Device ID"
> VEN_04F3 for whatever reason. Add this one to the 100 kHz quirk list as
> well but since this is not a standard ACPI ID match it also via DMI
> strings just to be on the safe side.
...
> Reported-by: penhouse24@proton.me
> Link: https://lore.kernel.org/linux-i2c/20261109104542.GL176724@black.igk.intel.com/
> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Isn't this https://bugzilla.kernel.org/show_bug.cgi?id=214597 as well?
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-11-13 12:22 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-13 8:39 [PATCH] i2c: acpi: Force Dell XPS 17 9720 touchpad to 100 kHz Mika Westerberg
2026-11-13 9:52 ` Hans de Goede
2026-11-13 11:17 ` Mika Westerberg
2026-11-13 12:22 ` Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox