Quick note on the touchpad Linux kernel config for the 12th gen based laptop

Quick note in case anyone else runs into this problem: When configuring a Linux kernel to get the touchpad to work on the 12th gen based laptop, the kernel still requires the flag “CONFIG_PIN_CTRL_TIGERLAKE” and does not use “CONFIG_PIN_CTRL_ALDERLAKE”, at least for the touchpad on kernel version 5.18.19. This took a long time to figure out since the laptop uses an Alder Lake processor and not Tiger Lake. Not sure why. There’s a variety of other options that are likely required and it’s difficult for me to disambiguate each and list them here. Mostly, I’m leaving a note for other people to find.

1 Like

Since we havent heard of this issue so far, i assume this is specific to 5.18.19 or something else is fishy.
I havent had any touchpad issues with 5.18.x or 5.19.x so far.
Which distro are you using?
What excactly is the behaviour you are getting without the flag? Sounds like the touchpad didnt work at all?

1 Like

I’m using Gentoo with sys-kernel/gentoo-sources-5.18.19-r1. More specifically:

Linux mycomputer 5.18.19-gentoo-r1 #40 SMP PREEMPT_DYNAMIC Mon Sep 5 23:24:04 CDT 2022 x86_64 12th Gen Intel(R) Core(TM) i7-1280P GenuineIntel GNU/Linux

Without the flag CONFIG_PIN_CTRL_TIGERLAKE, the device just doesn’t show up at all in dmesg and certainly does not work. That said, PS/2 emulation did work. I currently have PS/2 emulation disabled in the bios. When the device does appear, I receive the following in dmesg:

[    4.115132] input: PIXA3854:00 093A:0274 Mouse as /devices/pci0000:00/0000:00:15.3/i2c_designware.2/i2c-16/i2c-PIXA3854:00/0018:093A:0274.0002/input/input19
[    4.117988] input: PIXA3854:00 093A:0274 Touchpad as /devices/pci0000:00/0000:00:15.3/i2c_designware.2/i2c-16/i2c-PIXA3854:00/0018:093A:0274.0002/input/input20
[    4.121039] hid-multitouch 0018:093A:0274.0002: input,hidraw0: I2C HID v1.00 Mouse [PIXA3854:00 093A:0274] on i2c-PIXA3854:00

I just reverified that removing this singular configuration flag prevents the device from working. I’ll also mention that enabling both PIN_CTRL_TIGERLAKE and PIN_CTRL_ALDERLAKE simultaneously allows the device to work as well.

As a side note, the Arch install disk uses kernel 5.18.16 and the touchpad works just fine. However, that configuration for the kernel enables all of the flags in Intel pinctrl drivers. In addition, the output from dmesg is slightly different. On those boots, dmesg reports:

[   12.679551] input: FRMW0001:00 32AC:0006 Wireless Radio Control as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-15/i2c-FRMW0001:00/0018:32AC:0006.0001/input/input5
[   12.679618] input: FRMW0001:00 32AC:0006 Consumer Control as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-15/i2c-FRMW0001:00/0018:32AC:0006.0001/input/input6
[   12.679644] input: FRMW0001:00 32AC:0006 as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-15/i2c-FRMW0001:00/0018:32AC:0006.0001/input/input7
[   12.679671] hid-generic 0018:32AC:0006.0001: input,hidraw0: I2C HID v1.00 Device [FRMW0001:00 32AC:0006] on i2c-FRMW0001:00
[   12.707680] input: PIXA3854:00 093A:0274 Mouse as /devices/pci0000:00/0000:00:15.3/i2c_designware.2/i2c-16/i2c-PIXA3854:00/0018:093A:0274.0002/input/input8
[   12.707892] input: PIXA3854:00 093A:0274 Touchpad as /devices/pci0000:00/0000:00:15.3/i2c_designware.2/i2c-16/i2c-PIXA3854:00/0018:093A:0274.0002/input/input9
[   12.708116] hid-generic 0018:093A:0274.0002: input,hidraw1: I2C HID v1.00 Mouse [PIXA3854:00 093A:0274] on i2c-PIXA3854:00
[   17.642133] input: PIXA3854:00 093A:0274 Mouse as /devices/pci0000:00/0000:00:15.3/i2c_designware.2/i2c-16/i2c-PIXA3854:00/0018:093A:0274.0002/input/input25
[   17.667676] input: PIXA3854:00 093A:0274 Touchpad as /devices/pci0000:00/0000:00:15.3/i2c_designware.2/i2c-16/i2c-PIXA3854:00/0018:093A:0274.0002/input/input26
[   17.667924] hid-multitouch 0018:093A:0274.0002: input,hidraw0: I2C HID v1.00 Mouse [PIXA3854:00 093A:0274] on i2c-PIXA3854:00

Outside of the repeated detection of the touchpad, it also shows the Wireless Radio Control and the Consumer Control. I’m not sure what those are and thus far it has not affected me. WiFi works fine.

As some more information, the DesignWare I2C adapter does appear in i2cdetect -l whether PIN_CTRL_TIGERLAKE or PIN_CTRL_ALDERLAKE is enabled individually:

i2c-0   i2c             i915 gmbus dpa                          I2C adapter
i2c-1   i2c             i915 gmbus dpb                          I2C adapter
i2c-2   i2c             i915 gmbus dpc                          I2C adapter
i2c-3   i2c             i915 gmbus tc1                          I2C adapter
i2c-4   i2c             i915 gmbus tc2                          I2C adapter
i2c-5   i2c             i915 gmbus tc3                          I2C adapter
i2c-6   i2c             i915 gmbus tc4                          I2C adapter
i2c-7   i2c             i915 gmbus tc5                          I2C adapter
i2c-8   i2c             i915 gmbus tc6                          I2C adapter
i2c-9   i2c             AUX A/DDI A/PHY A                       I2C adapter
i2c-10  i2c             AUX USBC1/DDI TC1/PHY TC1               I2C adapter
i2c-11  i2c             AUX USBC2/DDI TC2/PHY TC2               I2C adapter
i2c-12  i2c             AUX USBC3/DDI TC3/PHY TC3               I2C adapter
i2c-13  i2c             AUX USBC4/DDI TC4/PHY TC4               I2C adapter
i2c-14  i2c             Synopsys DesignWare I2C adapter         I2C adapter
i2c-15  i2c             Synopsys DesignWare I2C adapter         I2C adapter
i2c-16  i2c             Synopsys DesignWare I2C adapter         I2C adapter
i2c-17  smbus           SMBus I801 adapter at efa0              SMBus adapter

By comparing the lsmod output from a recent Gentoo LiveUSB (which handled the touchpad fine) and my sorry mess of a .config, I found that this option needed to be set:
CONFIG_I2C_HID_ACPI=y
( Linux Kernel Configuration → Device Drivers → HID support → I2C HID support → HID over I2C transport layer ACPI driver)

It looks like doing so also enables this option:
CONFIG_I2C_HID_CORE=y

(on top of the settings in the Gentoo wiki for Framework Laptops)

1 Like

@Ruzgfpegk, would you mind checking if you have CONFIG_PIN_CTRL_TIGERLAKE and/or CONFIG_PIN_CTRL_ALDERLAKE enabled? It should be under Device Drivers -> Pin Controllers -> Intel pinctrl drivers. My recollection was those two flags you mentioned, CONFIG_I2C_HID_ACPI and CONFIG_I2C_HID_CORE were not enough, at least for me.

I only enabled CONFIG_PIN_CTRL_TIGERLAKE, following the wiki instructions.

It’s not related to the touchscreen but on my (stable) 5.15.75-gentoo kernel, the firmware files that worked for the rest of the 12th gen config were (Device Drivers → Generic Driver Options → Firmware loader): “iwlwifi-ty-a0-gf-a0-59.ucode i915/tgl_huc_7.9.3.bin i915/adlp_guc_62.0.3.bin i915/adlp_dmc_ver2_10.bin”.

OK, cool. That’s what I have as well. Mostly, I find it non-intuitive that an Alder Lake chip uses a Tiger Lake flag, but I suppose it’s fine if it works. Thanks for checking!

Damn, took me the whole weekend to figure that out :sweat_smile: I’ve updated the Gentoo Wiki

2 Likes