Skip to content

Instantly share code, notes, and snippets.

@ursm
Last active January 16, 2022 06:48
Show Gist options
  • Save ursm/6d1007f44a1d6beeb670b3c3a6a78ea4 to your computer and use it in GitHub Desktop.
Save ursm/6d1007f44a1d6beeb670b3c3a6a78ea4 to your computer and use it in GitHub Desktop.
Fix TrackPoint / touchpad issue on ThinkPad X1 Carbon 5th (Linux 4.12)
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
index 16c3046..ca912ce 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
@@ -173,6 +173,7 @@ static const char * const smbus_pnp_ids[] = {
"LEN0046", /* X250 */
"LEN004a", /* W541 */
"LEN200f", /* T450s */
+ "LEN0073", /* X1 Carbon 5 (Elantech) */
NULL
};
diff --git a/drivers/input/rmi4/rmi_smbus.c b/drivers/input/rmi4/rmi_smbus.c
index 225025a..2939a2f 100644
--- a/drivers/input/rmi4/rmi_smbus.c
+++ b/drivers/input/rmi4/rmi_smbus.c
@@ -322,7 +322,7 @@ static int rmi_smb_probe(struct i2c_client *client,
rmi_dbg(RMI_DEBUG_XPORT, &client->dev, "Smbus version is %d",
smbus_version);
- if (smbus_version != 2) {
+ if (smbus_version != 2 && smbus_version != 3) {
dev_err(&client->dev, "Unrecognized SMB version %d\n",
smbus_version);
return -ENODEV;
$ grep -E 'HID_RMI|RMI4_SMB' .config
CONFIG_RMI4_SMB=m
CONFIG_HID_RMI=m
$ dmesg | grep -E 'psmouse|rmi4'
[ 1.537742] psmouse serio1: synaptics: queried max coordinates: x [..5678], y [..4758]
[ 1.572729] psmouse serio1: synaptics: queried min coordinates: x [1266..], y [1094..]
[ 1.574280] psmouse serio1: synaptics: Trying to set up SMBus access
[ 1.578731] psmouse serio1: synaptics: SMbus companion is not ready yet
[ 1.645578] psmouse serio1: synaptics: Touchpad model: 1, fw: 8.2, id: 0x1e2a1, caps: 0xf003a3/0x940300/0x12e800/0x0, board id: 3288, fw id: 2538625
[ 1.647134] psmouse serio1: synaptics: serio: Synaptics pass-through port at isa0060/serio1/input0
[ 2.056868] psmouse serio2: Failed to reset mouse on synaptics-pt/serio0
[ 7.696884] psmouse serio2: Failed to enable mouse on synaptics-pt/serio0
[ 8.997307] psmouse serio1: synaptics: queried max coordinates: x [..5678], y [..4758]
[ 9.032026] psmouse serio1: synaptics: queried min coordinates: x [1266..], y [1094..]
[ 9.032037] psmouse serio1: synaptics: Trying to set up SMBus access
[ 9.045519] rmi4_smbus 6-002c: registering SMbus-connected sensor
[ 9.108224] rmi4_f01 rmi4-00.fn01: found RMI device, manufacturer: Synaptics, product: TM3288-003, fw id: 2538625
[ 9.178951] input: Synaptics TM3288-003 as /devices/rmi4-00/input/input9
[ 10.541603] input: PS/2 Generic Mouse as /devices/rmi4-00/rmi4-00.fn03/serio3/input/input18
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Synaptics TM3288-003 id=11 [slave pointer (2)]
⎜ ↳ PS/2 Generic Mouse id=12 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=9 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=10 [slave keyboard (3)]
@oblique
Copy link

oblique commented Nov 26, 2017

Since 4.14 you can just add psmouse.synaptics_intertouch=1 in the boot parameters.

@tomoyat1
Copy link

tomoyat1 commented Feb 20, 2018

I can confirm the params make my trackpad work on 4.15.

I wonder why it works with those kernel params, even though the LEN0073 part is not merged in.

@wf34
Copy link

wf34 commented Jul 30, 2018

psmouse.synaptics_intertouch=1 helps with the trackpad on T460p!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment