All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: penhouse24@proton.me
Cc: "westeri@kernel.org" <westeri@kernel.org>,
	"andi.shyti@kernel.org" <andi.shyti@kernel.org>,
	"linux-i2c@vger.kernel.org" <linux-i2c@vger.kernel.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>
Subject: Re: [BUG] i2c: acpi: Dell XPS 17 9720 ELAN 04F3:311C touchpad (VEN_04F3) needs 100 kHz like DLL0945
Date: Wed, 11 Nov 2026 08:59:31 +0100	[thread overview]
Message-ID: <20261111075931.GG259790@black.igk.intel.com> (raw)
In-Reply-To: <lGd7ChJVtwyvhMVkRinryqLG3Lx32U7xoSjT4_inKH1pBNoAd4dvBKV1A4i9MOIVLKmgx8sVg98gfK-iUwb5Uoy0wX1CM2_c7I1vdTr2tYU=@proton.me>

Hi,

On Mon, Nov 09, 2026 at 08:57:13PM +0000, penhouse24@proton.me wrote:
> Hi Mika, 
> 
> Thank you for the response (I honestly wasn't expecting anyone to respond for this niche issue---so a welcome surprise). 
> 
> Yes my BIOS version (v1.41.0) is up to date. Currently, there are no updates available through Windows or from fwupd. I have received BIOS updates many times via Windows since purchasing this computer in 2022 and have had 0 change to this problem. 
> 
> For what it’s worth, the DSDT has a valid default ID. TPD0 starts with Name (ITPN, “DELL0AFF”), and _INI then overwrites it from the BIOS-provided TPHD variable, which yields “VEN_04F3”.
> 
> Please find attached the output of 'sudo dmidecode'. 
> 
> Thank you for helping me fix this. 

Can you try the below patch?

diff --git a/drivers/i2c/i2c-core-acpi.c b/drivers/i2c/i2c-core-acpi.c
index 84841ed13487..bed9260056b3 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,17 @@ 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"),
+			DMI_MATCH(DMI_BIOS_VERSION, "1.41.0"),
+		},
+	},
+	{ }
+};
+
 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 +389,14 @@ static const struct acpi_device_id i2c_acpi_force_100khz_device_ids[] = {
 	{ .id = "ELAN0678" },
 	{ .id = "ELAN06FA" },
 	{ .id = "ELAN1300" },
+	{
+		/*
+		 * Some Dell XPS 17 9720 is not using 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 +405,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 +419,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;

  reply	other threads:[~2026-11-11  7:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CYQ1dYF3ZUj0L_VRzN490SfuHRaulkT_y5NWcIEIl8OtpIgWgXyOlwEyUqZD_uz9bmVBXM2uLOo8bkyzcR-qCxNObstCqFUlK6lUYXK5euE=@proton.me>
2026-11-09 10:45 ` [BUG] i2c: acpi: Dell XPS 17 9720 ELAN 04F3:311C touchpad (VEN_04F3) needs 100 kHz like DLL0945 Mika Westerberg
2026-11-09 20:57   ` penhouse24
2026-11-11  7:59     ` Mika Westerberg [this message]
2026-11-12  2:18       ` penhouse24

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261111075931.GG259790@black.igk.intel.com \
    --to=mika.westerberg@linux.intel.com \
    --cc=andi.shyti@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=penhouse24@proton.me \
    --cc=westeri@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.