Skip to content

Commit 08b9a61

Browse files
JoseExpositoJiri Kosina
authored andcommitted
HID: multitouch: disable sticky fingers for UPERFECT Y
When a finger is on the screen, the UPERFECT Y portable touchscreen monitor reports a contact in the first place. However, after this initial report, contacts are not reported at the refresh rate of the screen as required by the Windows 8 specs. This behaviour triggers the release_timer, removing the fingers even though they are still present. To avoid it, add a new class, similar to MT_CLS_WIN_8 but without the MT_QUIRK_STICKY_FINGERS quirk for this device. Suggested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: José Expósito <jose.exposito89@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
1 parent 88a0404 commit 08b9a61

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

drivers/hid/hid-ids.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,6 +1276,9 @@
12761276
#define USB_DEVICE_ID_WEIDA_8752 0xC300
12771277
#define USB_DEVICE_ID_WEIDA_8755 0xC301
12781278

1279+
#define USB_VENDOR_ID_WINBOND 0x0416
1280+
#define USB_DEVICE_ID_TSTP_MTOUCH 0xc168
1281+
12791282
#define USB_VENDOR_ID_WISEGROUP 0x0925
12801283
#define USB_DEVICE_ID_SMARTJOY_PLUS 0x0005
12811284
#define USB_DEVICE_ID_SUPER_JOY_BOX_3 0x8888

drivers/hid/hid-multitouch.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ static void mt_post_parse(struct mt_device *td, struct mt_application *app);
193193
/* reserved 0x0014 */
194194
#define MT_CLS_WIN_8_FORCE_MULTI_INPUT 0x0015
195195
#define MT_CLS_WIN_8_DISABLE_WAKEUP 0x0016
196+
#define MT_CLS_WIN_8_NO_STICKY_FINGERS 0x0017
196197

197198
/* vendor specific classes */
198199
#define MT_CLS_3M 0x0101
@@ -294,6 +295,13 @@ static const struct mt_class mt_classes[] = {
294295
MT_QUIRK_WIN8_PTP_BUTTONS |
295296
MT_QUIRK_DISABLE_WAKEUP,
296297
.export_all_inputs = true },
298+
{ .name = MT_CLS_WIN_8_NO_STICKY_FINGERS,
299+
.quirks = MT_QUIRK_ALWAYS_VALID |
300+
MT_QUIRK_IGNORE_DUPLICATES |
301+
MT_QUIRK_HOVERING |
302+
MT_QUIRK_CONTACT_CNT_ACCURATE |
303+
MT_QUIRK_WIN8_PTP_BUTTONS,
304+
.export_all_inputs = true },
297305

298306
/*
299307
* vendor specific classes
@@ -2120,6 +2128,11 @@ static const struct hid_device_id mt_devices[] = {
21202128
MT_USB_DEVICE(USB_VENDOR_ID_VTL,
21212129
USB_DEVICE_ID_VTL_MULTITOUCH_FF3F) },
21222130

2131+
/* Winbond Electronics Corp. */
2132+
{ .driver_data = MT_CLS_WIN_8_NO_STICKY_FINGERS,
2133+
HID_DEVICE(HID_BUS_ANY, HID_GROUP_MULTITOUCH_WIN_8,
2134+
USB_VENDOR_ID_WINBOND, USB_DEVICE_ID_TSTP_MTOUCH) },
2135+
21232136
/* Wistron panels */
21242137
{ .driver_data = MT_CLS_NSMU,
21252138
MT_USB_DEVICE(USB_VENDOR_ID_WISTRON,

0 commit comments

Comments
 (0)