HID: multitouch: fix Asus ExpertBook P2 P2451FA trackpoint

Message ID 20221128165705.7008-1-jose.exposito89@gmail.com
State New
Headers
Series HID: multitouch: fix Asus ExpertBook P2 P2451FA trackpoint |

Commit Message

José Expósito Nov. 28, 2022, 4:57 p.m. UTC
  The HID descriptor of this device contains two mouse collections, one
for mouse emulation and the other for the trackpoint.

Both collections get merged and, because the first one defines X and Y,
the movemenent events reported by the trackpoint collection are
ignored.

Set the MT_CLS_WIN_8_FORCE_MULTI_INPUT class for this device to be able
to receive its reports.

This fix is similar to/based on commit 40d5bb87377a ("HID: multitouch:
enable multi-input as a quirk for some devices").

Link: https://gitlab.freedesktop.org/libinput/libinput/-/issues/825
Reported-by: Akito <the@akito.ooo>
Tested-by: Akito <the@akito.ooo>
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
---
 drivers/hid/hid-multitouch.c | 4 ++++
 1 file changed, 4 insertions(+)
  

Comments

Jiri Kosina Dec. 20, 2022, 2:34 p.m. UTC | #1
On Mon, 28 Nov 2022, José Expósito wrote:

> The HID descriptor of this device contains two mouse collections, one
> for mouse emulation and the other for the trackpoint.
> 
> Both collections get merged and, because the first one defines X and Y,
> the movemenent events reported by the trackpoint collection are
> ignored.
> 
> Set the MT_CLS_WIN_8_FORCE_MULTI_INPUT class for this device to be able
> to receive its reports.
> 
> This fix is similar to/based on commit 40d5bb87377a ("HID: multitouch:
> enable multi-input as a quirk for some devices").
> 
> Link: https://gitlab.freedesktop.org/libinput/libinput/-/issues/825
> Reported-by: Akito <the@akito.ooo>
> Tested-by: Akito <the@akito.ooo>
> Signed-off-by: José Expósito <jose.exposito89@gmail.com>

Applied, thank you!
  

Patch

diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index 91a4d3fc30e0..372cbdd223e0 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -1967,6 +1967,10 @@  static const struct hid_device_id mt_devices[] = {
 		HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8,
 			USB_VENDOR_ID_ELAN, 0x313a) },
 
+	{ .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT,
+		HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8,
+			USB_VENDOR_ID_ELAN, 0x3148) },
+
 	/* Elitegroup panel */
 	{ .driver_data = MT_CLS_SERIAL,
 		MT_USB_DEVICE(USB_VENDOR_ID_ELITEGROUP,