Input: synaptics_rmi4 - register F03 port as pass-through serio
Subsystems (2)
Dmitry Torokhov
maintainerPATCH 1/1 Input: synaptics_rmi4 - register F03 port as pass-through serio
The 5th generation Thinkpad X1 Carbons use Synaptics touchpads accessible over SMBus/RMI, combined with ALPS or Elantech trackpoint devices instead of classic IBM/Lenovo trackpoints. Unfortunately there is no way for ALPS driver to detect whether it is dealing with touchpad + trackpoint combination or just a trackpoint, so we end up with a "phantom" dualpoint ALPS device in addition to real touchpad and trackpoint.
Given that we do not have any special advanced handling for ALPS or Elantech trackpoints (unlike IBM trackpoints that have separate driver and a host of options) we are better off keeping the trackpoints in PS/2 emulation mode. We achieve that by setting serio type to SERIO_PS_PSTHRU, which will limit number of protocols psmouse driver will try. In addition to getting rid of the "phantom" touchpads, this will also speed up probing of F03 pass-through port.
--- drivers/input/rmi4/rmi_f03.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/input/rmi4/rmi_f03.c +1 -1
@@ -146,7 +146,7 @@ static int rmi_f03_register_pt(struct f03_data *f03)if (!serio)return -ENOMEM ; - serio->id.type =SERIO_8042 ; + serio->id.type =SERIO_PS_PSTHRU ; serio->write = rmi_f03_pt_write; serio->port_data = f03;
Signature · 5 lines
2.13.0.506.g27d5fe0cd-goog -- Dmitry
Quoted 15 lines · Dmitry Torokhov
The 5th generation Thinkpad X1 Carbons use Synaptics touchpads accessible over SMBus/RMI, combined with ALPS or Elantech trackpoint devices instead of classic IBM/Lenovo trackpoints. Unfortunately there is no way for ALPS driver to detect whether it is dealing with touchpad + trackpoint combination or just a trackpoint, so we end up with a "phantom" dualpoint ALPS device in addition to real touchpad and trackpoint.
Given that we do not have any special advanced handling for ALPS or Elantech trackpoints (unlike IBM trackpoints that have separate driver and a host of options) we are better off keeping the trackpoints in PS/2 emulation mode. We achieve that by setting serio type to
SERIO_PS_PSTHRU, which will limit number of protocols psmouse driver will try. In addition to getting rid of the "phantom" touchpads, this will also speed up probing of F03 pass-through port.
Quoted 4 lines
Reported-by Damjan Georgievski <[email protected]>Suggested-by Benjamin Tissoires <[email protected]>Signed-off-by Dmitry Torokhov <[email protected]>---
Thanks for the extensive commit message :)
(tested on a t450s without problems).
Cheers,
Benjamin
Quoted 22 lines
drivers/input/rmi4/rmi_f03.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/input/rmi4/rmi_f03.c +1
-1@@ -146,7 +146,7 @@ static int rmi_f03_register_pt(struct f03_data *f03)if (!serio)return -ENOMEM ; - serio->id.type =SERIO_8042 ; + serio->id.type =SERIO_PS_PSTHRU ; serio->write = rmi_f03_pt_write; serio->port_data = f03;Signature · 5 lines
2.13.0.506.g27d5fe0cd-goog -- Dmitry
Dmitry Torokhov
maintainerQuoted 16 lines · Benjamin Tissoires
Quoted 15 lines · Dmitry Torokhov
The 5th generation Thinkpad X1 Carbons use Synaptics touchpads accessible over SMBus/RMI, combined with ALPS or Elantech trackpoint devices instead of classic IBM/Lenovo trackpoints. Unfortunately there is no way for ALPS driver to detect whether it is dealing with touchpad + trackpoint combination or just a trackpoint, so we end up with a "phantom" dualpoint ALPS device in addition to real touchpad and trackpoint.
Given that we do not have any special advanced handling for ALPS or Elantech trackpoints (unlike IBM trackpoints that have separate driver and a host of options) we are better off keeping the trackpoints in PS/2 emulation mode. We achieve that by setting serio type to
SERIO_PS_PSTHRU, which will limit number of protocols psmouse driver will try. In addition to getting rid of the "phantom" touchpads, this will also speed up probing of F03 pass-through port.
Quoted 8 lines
Quoted 4 lines
Reported-by Damjan Georgievski <[email protected]>Suggested-by Benjamin Tissoires <[email protected]>Signed-off-by Dmitry Torokhov <[email protected]>---
Thanks for the extensive commit message :)
Thanks Benjamin.
Damjan, could you please try this patch too before I send it Linus-wards.
Quoted 28 lines
(tested on a t450s without problems).
Cheers,
BenjaminQuoted 22 lines
drivers/input/rmi4/rmi_f03.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/input/rmi4/rmi_f03.c +1
-1@@ -146,7 +146,7 @@ static int rmi_f03_register_pt(struct f03_data *f03)if (!serio)return -ENOMEM ; - serio->id.type =SERIO_8042 ; + serio->id.type =SERIO_PS_PSTHRU ; serio->write = rmi_f03_pt_write; serio->port_data = f03;Signature · 5 lines
2.13.0.506.g27d5fe0cd-goog -- Dmitry
Signature · 1 line
Dmitry
Quoted 7 lines
Quoted 3 lines
Thanks for the extensive commit message :)
Thanks Benjamin.
Damjan, could you please try this patch too before I send it Linus-wards.
Hi Dmitry,
I'm not sure what to expect from the patch?
It didn't change anything for me with the default "modprobe psmouse".
when using modprobe psmouse synaptics_intertouch=1, I don't get the trackpoint (nor its buttons) at all.
$ xinput ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Synaptics TM3289-002 id=11 [slave pointer (2)]
Signature · 1 line
damjan