The middle trackpoint button on the Thinkpad E470 (20H2) is not
recognized. The psmouse module warns about "failed to get extended
button data".
I tried to dive a bit deeper into trackpoint.c and track down the issue:
- trackpoint_read for TP_EXT_BTN fails.
- This read consists of two ps2_commands, first TP_COMMAND and then the
actual TP_EXT_BTN command
- The second ps2_command fails.
- In __ps2_command, it's the first ps2_sendbyte that fails.
- In ps2_sendbyte, serio_write returns 0. Waiting for the
acknowledgement does not timeout. But ps2dev->nak is 0xfe.
- Therefore ps2_sendbyte fails.
From there the whole stack unwinds, "failed to get extended button
data" is produced and button_info is set to 0. And finally
__set_bit(BTN_MIDDLE, psmouse->dev->keybit);
is not called. Manually calling it, or setting button_info to 0x33,
makes the middle button functional. Of course that's not a general solution.
Additionally, when loading the psmouse module with proto=imps the middle
mouse button is detected as discussed here:
https://bugs.freedesktop.org/show_bug.cgi?id=100694
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html