Skip to content

ig4: Add Lunar Lake-M I2C controllers 4 and 5 - #2406

Open
kk1987 wants to merge 1 commit into
freebsd:mainfrom
kk1987:ig4-lunarlake-i2c45
Open

ig4: Add Lunar Lake-M I2C controllers 4 and 5#2406
kk1987 wants to merge 1 commit into
freebsd:mainfrom
kk1987:ig4-lunarlake-i2c45

Conversation

@kk1987

@kk1987 kk1987 commented Sep 3, 2026

Copy link
Copy Markdown

Commit 851dffe (#1995) added the Lunar Lake-M I2C controllers 0-3 (0xa878-0xa87b), which live on PCI device 0x15. The platform has two more controllers, 0xa850 and 0xa851 on PCI device 0x19, reported by Intel as I2C #⁠4 and #⁠5. Arrow Lake-U already lists both of its ranges (0x777x and 0x775x), and so does Panther Lake-H.

This is not just completeness. 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 are missing — with main as it stands the machine has no touchscreen and no touchpad:

  • 00:19.0 (0xa850, I2C #⁠4) → ELAN2514 touchscreen
  • 00:19.1 (0xa851, I2C #⁠5) → SYNA3503 touchpad

0xa879 and 0xa87b are not present at all, and 0xa87a only carries the CS35L41 audio amplifiers, so none of the four currently supported IDs is of any use on this machine.

Testing

Two ig4.ko variants were built on 15.1-RELEASE with the current main ID table backported: one with controllers 0-3 only (equivalent to main today) and one with this patch on top.

Before — controllers 0-3 only:

ig4iic0: <Intel Lunar Lake-M I2C Controller-0> at device 21.0 on pci0
iicbus0: <Philips I2C bus (ACPI-hinted)> on ig4iic0
ig4iic1: <Intel Lunar Lake-M I2C Controller-2> at device 21.2 on pci0
iicbus1: <Philips I2C bus (ACPI-hinted)> on ig4iic1
iicbus1: <unknown card> at addr 0x40
ig4iic0@pci0:0:21:0: class=0x0c8000 vendor=0x8086 device=0xa878 subvendor=0x103c subdevice=0x8da1
ig4iic1@pci0:0:21:2: class=0x0c8000 vendor=0x8086 device=0xa87a subvendor=0x103c subdevice=0x8da1
none8@pci0:0:25:0:   class=0x0c8000 vendor=0x8086 device=0xa850 subvendor=0x103c subdevice=0x8da1
none9@pci0:0:25:1:   class=0x0c8000 vendor=0x8086 device=0xa851 subvendor=0x103c subdevice=0x8da1

0xa850 and 0xa851 get no driver, and no iichid child is created anywhere.

After — with this patch:

ig4iic2: <Intel Lunar Lake-M I2C Controller-4> at device 25.0 on pci0
ig4iic2: Using MSI
iicbus2: <Philips I2C bus (ACPI-hinted)> on ig4iic2
iichid0: <ELAN2514:04 04F3:43EF I2C HID device> at addr 0x10 irq 108 on iicbus2
hidbus1: <HID bus> on iichid0
ig4iic3: <Intel Lunar Lake-M I2C Controller-5> at device 25.1 on pci0
ig4iic3: Using MSI
iicbus3: <Philips I2C bus (ACPI-hinted)> on ig4iic3
iichid1: <SYNA3503:00 06CB:CFC6 I2C HID device> at addr 0x2c irq 84 on iicbus3
hidbus2: <HID bus> on iichid1
hmt0: <ELAN2514:04 04F3:43EF TouchScreen> on hidbus1
hmt0: Multitouch touchscreen with 0 external buttons
hmt0: 10 contacts with [CWH] properties. Report range [0:0] - [3984:2256]
hmt1: <SYNA3503:00 06CB:CFC6 TouchPad> on hidbus2
hmt1: Multitouch touchpad with 0 external buttons, click-pad
hmt1: 5 contacts with [C] properties. Report range [0:0] - [1572:984]

Both the touchscreen and the touchpad work.

Notes

These controllers use the Tiger Lake revision of the I2C IP like the other four; Linux routes 0xa850/0xa851 through the same ehl_i2c_info as 0xa878-0xa87b in drivers/mfd/intel-lpss-pci.c.

cc @Defenso-EBO, who added the first four.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

Thank you for taking the time to contribute to FreeBSD!

All issues resolved.

Commit 851dffe 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 freebsd#4 and freebsd#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)
MFC after:	2 weeks

Signed-off-by: Kang Kang <kk1987@gmail.com>
@kk1987
kk1987 force-pushed the ig4-lunarlake-i2c45 branch from 48b33f0 to 76f6acb Compare September 3, 2026 20:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant