git: 5a19be15c90c - stable/14 - ig4: Add Lunar Lake-M I2C controllers 4 and 5

From: Ahmad Khalifa <vexeduxr_at_FreeBSD.org>
Date: Thu, 24 Sep 2026 02:34:05 UTC
The branch stable/14 has been updated by vexeduxr:

URL: https://cgit.FreeBSD.org/src/commit/?id=5a19be15c90c2a5f0a1d8c469cda6d3d4283f016

commit 5a19be15c90c2a5f0a1d8c469cda6d3d4283f016
Author:     Kang Kang <kk1987@gmail.com>
AuthorDate: 2026-09-03 20:18:51 +0000
Commit:     Ahmad Khalifa <vexeduxr@FreeBSD.org>
CommitDate: 2026-09-24 02:29:31 +0000

    ig4: Add Lunar Lake-M I2C controllers 4 and 5
    
    Commit 851dffef532a added the Lunar Lake-M I2C controllers 0 through 3
    (0xa878-0xa87b), which sit on PCI device 0x15.  The platform exposes two
    further controllers at 0xa850 and 0xa851 on PCI device 0x19, reported by
    Intel as I2C #4 and #5.  This mirrors the layout already handled for
    Arrow Lake-U, where both the 0x777x and 0x775x ranges are listed.
    
    On an HP OmniBook X Flip 16-as0xxx (Core Ultra 9 288V) the firmware
    enables only four of the six controllers, and both HID devices sit on
    the two that were missing: an ELAN2514 touchscreen on controller 4 and
    a SYNA3503 touchpad on controller 5.  Neither attaches without this
    change, so the machine has no working pointing device.
    
    Like the other four, these use the Tiger Lake revision of the I2C IP;
    Linux treats 0xa850/0xa851 identically to 0xa878-0xa87b in
    intel-lpss-pci.c.
    
    Tested on:      HP OmniBook X Flip 16-as0xxx (Intel Core Ultra 9 288V)
    Reviewed by:    vexeduxr
    MFC after:      2 weeks
    Signed-off-by:  Kang Kang <kk1987@gmail.com>
    Pull Request:   https://github.com/freebsd/freebsd-src/pull/2406
    
    (cherry picked from commit 6b92093fdf65a80cba01af74710bdfe7ac7ef252)
---
 sys/dev/ichiic/ig4_pci.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/sys/dev/ichiic/ig4_pci.c b/sys/dev/ichiic/ig4_pci.c
index b1562d3c5b5f..1893d5e43513 100644
--- a/sys/dev/ichiic/ig4_pci.c
+++ b/sys/dev/ichiic/ig4_pci.c
@@ -184,6 +184,8 @@ static int ig4iic_pci_detach(device_t dev);
 #define PCI_CHIP_LUNARLAKE_M_I2C_1      0xa8798086
 #define PCI_CHIP_LUNARLAKE_M_I2C_2      0xa87a8086
 #define PCI_CHIP_LUNARLAKE_M_I2C_3      0xa87b8086
+#define PCI_CHIP_LUNARLAKE_M_I2C_4      0xa8508086
+#define PCI_CHIP_LUNARLAKE_M_I2C_5      0xa8518086
 
 struct ig4iic_pci_device {
 	uint32_t	devid;
@@ -312,6 +314,8 @@ static struct ig4iic_pci_device ig4iic_pci_devices[] = {
 	{ PCI_CHIP_LUNARLAKE_M_I2C_1, "Intel Lunar Lake-M I2C Controller-1", IG4_TIGERLAKE},
 	{ PCI_CHIP_LUNARLAKE_M_I2C_2, "Intel Lunar Lake-M I2C Controller-2", IG4_TIGERLAKE},
 	{ PCI_CHIP_LUNARLAKE_M_I2C_3, "Intel Lunar Lake-M I2C Controller-3", IG4_TIGERLAKE},
+	{ PCI_CHIP_LUNARLAKE_M_I2C_4, "Intel Lunar Lake-M I2C Controller-4", IG4_TIGERLAKE},
+	{ PCI_CHIP_LUNARLAKE_M_I2C_5, "Intel Lunar Lake-M I2C Controller-5", IG4_TIGERLAKE},
 };
 
 static int