Commit 08b9a61a authored by José Expósito's avatar José Expósito Committed by Jiri Kosina

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: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: default avatarJosé Expósito <jose.exposito89@gmail.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 88a04049
...@@ -1276,6 +1276,9 @@ ...@@ -1276,6 +1276,9 @@
#define USB_DEVICE_ID_WEIDA_8752 0xC300 #define USB_DEVICE_ID_WEIDA_8752 0xC300
#define USB_DEVICE_ID_WEIDA_8755 0xC301 #define USB_DEVICE_ID_WEIDA_8755 0xC301
#define USB_VENDOR_ID_WINBOND 0x0416
#define USB_DEVICE_ID_TSTP_MTOUCH 0xc168
#define USB_VENDOR_ID_WISEGROUP 0x0925 #define USB_VENDOR_ID_WISEGROUP 0x0925
#define USB_DEVICE_ID_SMARTJOY_PLUS 0x0005 #define USB_DEVICE_ID_SMARTJOY_PLUS 0x0005
#define USB_DEVICE_ID_SUPER_JOY_BOX_3 0x8888 #define USB_DEVICE_ID_SUPER_JOY_BOX_3 0x8888
......
...@@ -193,6 +193,7 @@ static void mt_post_parse(struct mt_device *td, struct mt_application *app); ...@@ -193,6 +193,7 @@ static void mt_post_parse(struct mt_device *td, struct mt_application *app);
/* reserved 0x0014 */ /* reserved 0x0014 */
#define MT_CLS_WIN_8_FORCE_MULTI_INPUT 0x0015 #define MT_CLS_WIN_8_FORCE_MULTI_INPUT 0x0015
#define MT_CLS_WIN_8_DISABLE_WAKEUP 0x0016 #define MT_CLS_WIN_8_DISABLE_WAKEUP 0x0016
#define MT_CLS_WIN_8_NO_STICKY_FINGERS 0x0017
/* vendor specific classes */ /* vendor specific classes */
#define MT_CLS_3M 0x0101 #define MT_CLS_3M 0x0101
...@@ -294,6 +295,13 @@ static const struct mt_class mt_classes[] = { ...@@ -294,6 +295,13 @@ static const struct mt_class mt_classes[] = {
MT_QUIRK_WIN8_PTP_BUTTONS | MT_QUIRK_WIN8_PTP_BUTTONS |
MT_QUIRK_DISABLE_WAKEUP, MT_QUIRK_DISABLE_WAKEUP,
.export_all_inputs = true }, .export_all_inputs = true },
{ .name = MT_CLS_WIN_8_NO_STICKY_FINGERS,
.quirks = MT_QUIRK_ALWAYS_VALID |
MT_QUIRK_IGNORE_DUPLICATES |
MT_QUIRK_HOVERING |
MT_QUIRK_CONTACT_CNT_ACCURATE |
MT_QUIRK_WIN8_PTP_BUTTONS,
.export_all_inputs = true },
/* /*
* vendor specific classes * vendor specific classes
...@@ -2120,6 +2128,11 @@ static const struct hid_device_id mt_devices[] = { ...@@ -2120,6 +2128,11 @@ static const struct hid_device_id mt_devices[] = {
MT_USB_DEVICE(USB_VENDOR_ID_VTL, MT_USB_DEVICE(USB_VENDOR_ID_VTL,
USB_DEVICE_ID_VTL_MULTITOUCH_FF3F) }, USB_DEVICE_ID_VTL_MULTITOUCH_FF3F) },
/* Winbond Electronics Corp. */
{ .driver_data = MT_CLS_WIN_8_NO_STICKY_FINGERS,
HID_DEVICE(HID_BUS_ANY, HID_GROUP_MULTITOUCH_WIN_8,
USB_VENDOR_ID_WINBOND, USB_DEVICE_ID_TSTP_MTOUCH) },
/* Wistron panels */ /* Wistron panels */
{ .driver_data = MT_CLS_NSMU, { .driver_data = MT_CLS_NSMU,
MT_USB_DEVICE(USB_VENDOR_ID_WISTRON, MT_USB_DEVICE(USB_VENDOR_ID_WISTRON,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment