[<prev] [next>] [day] [month] [year] [list]
Message-ID: <CALy8NDYVkOnRbzrO37BhX0cf4MHDwxv1LbV=JW3QOCg1+-kOqQ@mail.gmail.com>
Date: Sun, 5 Oct 2025 12:45:19 -0700
From: Matt Roberts <robertsmattb@...il.com>
To: linux-input@...r.kernel.org
Cc: jikos@...nel.org, bentiss@...nel.org, linux-kernel@...r.kernel.org
Subject: [PATCH] HID: multitouch: add IGNORE_DUPLICATES quirk for ELAN1206 (04f3:30f1)
From: Matthew Roberts <robertsmattb@...il.com>
Date: Sun, 5 Oct 2025 11:34:17 -0700
Subject: [PATCH] HID: multitouch: add IGNORE_DUPLICATES quirk for ELAN1206
(04f3:30f1)
Some ELAN1206 I2C touchpads intermittently report duplicate tracking IDs.
On recent kernels this can make libinput interpret a one-finger slide as
repeated hold/click events instead of continuous POINTER_MOTION.
Add MT_QUIRK_IGNORE_DUPLICATES for 04f3:30f1 so the driver filters
repeated contacts and reports motion correctly. This restores behavior
comparable to 6.1 LTS kernels where motion and clicks were normal.
Reproducer notes: with hid_multitouch enabled, sliding a single finger
produces repeated GESTURE_HOLD_BEGIN/END in libinput and logs the
"double tracking ID ... in slot 0" error. Attached are short traces:
- elan1206-bug.yaml (libinput record)
- elan1206-bug.evemu (evdev stream)
- elan1206-bug.hidraw0 (HID raw capture)
- elan1206-bug.libinput (debug stream)
System: Fedora 42 (kernel 6.16.9-200.fc42.x86_64,
libinput 1.29.1,
device ELAN1206:00 04F3:30F1)
Signed-off-by: Matthew Roberts <robertsmattb@...il.com>
---
drivers/hid/hid-multitouch.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index 2879e65cf..ed318c80e 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -2150,6 +2150,10 @@ static const struct hid_device_id mt_devices[] = {
HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8,
USB_VENDOR_ID_ELAN, 0x32ae) },
+ /* ELAN1206 touchpad: duplicate tracking IDs cause hold/click storms */
+ { .driver_data = MT_QUIRK_IGNORE_DUPLICATES,
+ HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH, 0x04f3, 0x30f1) },
+
/* Elitegroup panel */
{ .driver_data = MT_CLS_SERIAL,
MT_USB_DEVICE(USB_VENDOR_ID_ELITEGROUP,
--
2.51.0
Download attachment "elan1206-bug.yaml" of type "application/yaml" (34795 bytes)
Download attachment "elan1206-bug.evemu" of type "application/octet-stream" (24857 bytes)
Download attachment "elan1206-bug.hidraw0" of type "application/octet-stream" (2624 bytes)
Download attachment "elan1206-bug.libinput" of type "application/octet-stream" (3638 bytes)
Powered by blists - more mailing lists