[Bug 282389] [i2c] Dell Precision 5690 touchpad unrecognized

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 07 Nov 2024 04:28:50 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=282389

--- Comment #8 from Austin Shafer <ashafer@badland.io> ---
Created attachment 254992
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=254992&action=edit
devinfo -rv

Here's the devinfo -rv output. I've tried disabling the touchscreen in the bios
to see if that had an effect but it did not. That's why the ELAN900C device
wasn't present.


> unknown pnpinfo _HID=VEN_27C6 _UID=0 _CID=PNP0C50 at handle=\_SB_.PC00.I2C3.TPD0
Here's the touchpad being unrecognized.

> unknown pnpinfo vendor=0x8086 device=0x7e7b subvendor=0x1028 subdevice=0x0cc8 class=0x0c8000 at slot=21 function=3 dbsf=pci0:0:21:3 handle=\_SB_.PC00.I2C3
Interestingly here is the i2c bus that holds the touchpad also not getting
recognized, which I feel silly for not noticing sooner.

Here's the relevant bit of pciconf -lv:
ig4iic0@pci0:0:21:0:    class=0x0c8000 rev=0x20 hdr=0x00 vendor=0x8086
device=0x7e78 subvendor=0x1028 subdevice=0x0cc8
    vendor     = 'Intel Corporation'
    device     = 'Meteor Lake-P Serial IO I2C Controller'
    class      = serial bus
none8@pci0:0:21:3:      class=0x0c8000 rev=0x20 hdr=0x00 vendor=0x8086
device=0x7e7b subvendor=0x1028 subdevice=0x0cc8
    vendor     = 'Intel Corporation'
    device     = 'Meteor Lake-P Serial IO I2C Controller'
    class      = serial bus

With the following patch my touchpad now works:
diff --git a/sys/dev/ichiic/ig4_pci.c b/sys/dev/ichiic/ig4_pci.c
index 138de77c35db..874d6a9abc55 100644
--- a/sys/dev/ichiic/ig4_pci.c
+++ b/sys/dev/ichiic/ig4_pci.c
@@ -172,6 +172,8 @@ static int ig4iic_pci_detach(device_t dev);
 #define PCI_CHIP_METEORLAKE_M_I2C_1    0x7e798086
 #define PCI_CHIP_METEORLAKE_M_I2C_2    0x7e508086
 #define PCI_CHIP_METEORLAKE_M_I2C_3    0x7e518086
+#define PCI_CHIP_METEORLAKE_M_I2C_4    0x7e7a8086
+#define PCI_CHIP_METEORLAKE_M_I2C_5    0x7e7b8086

 struct ig4iic_pci_device {
        uint32_t        devid;
@@ -288,6 +290,8 @@ static struct ig4iic_pci_device ig4iic_pci_devices[] = {
        { PCI_CHIP_METEORLAKE_M_I2C_1, "Intel Meteor Lake-M I2C Controller-1",
IG4_TIGERLAKE},
        { PCI_CHIP_METEORLAKE_M_I2C_2, "Intel Meteor Lake-M I2C Controller-2",
IG4_TIGERLAKE},
        { PCI_CHIP_METEORLAKE_M_I2C_3, "Intel Meteor Lake-M I2C Controller-3",
IG4_TIGERLAKE},
+       { PCI_CHIP_METEORLAKE_M_I2C_4, "Intel Meteor Lake-M I2C Controller-4",
IG4_TIGERLAKE},
+       { PCI_CHIP_METEORLAKE_M_I2C_5, "Intel Meteor Lake-M I2C Controller-5",
IG4_TIGERLAKE},
 };

It looks like we are missing other ids in addition to this one. For example I
added 0x7e7a in the above although it's not in my machine. Not sure if we want
to do a broader investigation and import a bunch of ids that we are missing?

-- 
You are receiving this mail because:
You are the assignee for the bug.