Last active
January 16, 2022 06:48
-
-
Save ursm/6d1007f44a1d6beeb670b3c3a6a78ea4 to your computer and use it in GitHub Desktop.
Fix TrackPoint / touchpad issue on ThinkPad X1 Carbon 5th (Linux 4.12)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ grep -E 'HID_RMI|RMI4_SMB' .config | |
CONFIG_RMI4_SMB=m | |
CONFIG_HID_RMI=m |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ 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)] |
This patch, soon to be merged from linux-input to linux-stable, seems to work around the problem mentioned above...
IMO not a good fix, but it works with the patches in this gist.
https://patchwork.kernel.org/patch/9944117/
https://patchwork.kernel.org/patch/9928843/
Seems someone has already submitted the patch.
Since 4.14 you can just add psmouse.synaptics_intertouch=1
in the boot parameters.
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.
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
I've just confirmed that these changes, included in 4.12.10, conflict with this patch set.
The middle click on the trackpoint will not work if both the commit and the changes in this gist are applied.