mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:04:51 +01:00
HID: multitouch: Keep latency normal on deactivate for reactivation gesture
Uniwill devices have a built in gesture in the touchpad to de- and reactivate it by double taping the upper left corner. This gesture stops working when latency is set to high, so this patch keeps the latency on normal. Cc: stable@vger.kernel.org Signed-off-by: Werner Sembach <wse@tuxedocomputers.com> [jkosina@suse.com: change bit from 24 to 25] [jkosina@suse.com: update shortlog] Signed-off-by: Jiri Kosina <jkosina@suse.com>
This commit is contained in:
parent
7c698de0dc
commit
ec3070f01f
1 changed files with 29 additions and 3 deletions
|
|
@ -77,6 +77,7 @@ MODULE_LICENSE("GPL");
|
|||
#define MT_QUIRK_ORIENTATION_INVERT BIT(22)
|
||||
#define MT_QUIRK_APPLE_TOUCHBAR BIT(23)
|
||||
#define MT_QUIRK_YOGABOOK9I BIT(24)
|
||||
#define MT_QUIRK_KEEP_LATENCY_ON_CLOSE BIT(25)
|
||||
|
||||
#define MT_INPUTMODE_TOUCHSCREEN 0x02
|
||||
#define MT_INPUTMODE_TOUCHPAD 0x03
|
||||
|
|
@ -214,6 +215,7 @@ static void mt_post_parse(struct mt_device *td, struct mt_application *app);
|
|||
#define MT_CLS_WIN_8_DISABLE_WAKEUP 0x0016
|
||||
#define MT_CLS_WIN_8_NO_STICKY_FINGERS 0x0017
|
||||
#define MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU 0x0018
|
||||
#define MT_CLS_WIN_8_KEEP_LATENCY_ON_CLOSE 0x0019
|
||||
|
||||
/* vendor specific classes */
|
||||
#define MT_CLS_3M 0x0101
|
||||
|
|
@ -335,6 +337,15 @@ static const struct mt_class mt_classes[] = {
|
|||
MT_QUIRK_CONTACT_CNT_ACCURATE |
|
||||
MT_QUIRK_WIN8_PTP_BUTTONS,
|
||||
.export_all_inputs = true },
|
||||
{ .name = MT_CLS_WIN_8_KEEP_LATENCY_ON_CLOSE,
|
||||
.quirks = MT_QUIRK_ALWAYS_VALID |
|
||||
MT_QUIRK_IGNORE_DUPLICATES |
|
||||
MT_QUIRK_HOVERING |
|
||||
MT_QUIRK_CONTACT_CNT_ACCURATE |
|
||||
MT_QUIRK_STICKY_FINGERS |
|
||||
MT_QUIRK_WIN8_PTP_BUTTONS |
|
||||
MT_QUIRK_KEEP_LATENCY_ON_CLOSE,
|
||||
.export_all_inputs = true },
|
||||
|
||||
/*
|
||||
* vendor specific classes
|
||||
|
|
@ -855,7 +866,8 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
|
|||
if ((cls->name == MT_CLS_WIN_8 ||
|
||||
cls->name == MT_CLS_WIN_8_FORCE_MULTI_INPUT ||
|
||||
cls->name == MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU ||
|
||||
cls->name == MT_CLS_WIN_8_DISABLE_WAKEUP) &&
|
||||
cls->name == MT_CLS_WIN_8_DISABLE_WAKEUP ||
|
||||
cls->name == MT_CLS_WIN_8_KEEP_LATENCY_ON_CLOSE) &&
|
||||
(field->application == HID_DG_TOUCHPAD ||
|
||||
field->application == HID_DG_TOUCHSCREEN))
|
||||
app->quirks |= MT_QUIRK_CONFIDENCE;
|
||||
|
|
@ -1768,7 +1780,8 @@ static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi)
|
|||
int ret;
|
||||
|
||||
if (td->is_haptic_touchpad && (td->mtclass.name == MT_CLS_WIN_8 ||
|
||||
td->mtclass.name == MT_CLS_WIN_8_FORCE_MULTI_INPUT)) {
|
||||
td->mtclass.name == MT_CLS_WIN_8_FORCE_MULTI_INPUT ||
|
||||
td->mtclass.name == MT_CLS_WIN_8_KEEP_LATENCY_ON_CLOSE)) {
|
||||
if (hid_haptic_input_configured(hdev, td->haptic, hi) == 0)
|
||||
td->is_haptic_touchpad = false;
|
||||
} else {
|
||||
|
|
@ -2081,7 +2094,12 @@ static void mt_on_hid_hw_open(struct hid_device *hdev)
|
|||
|
||||
static void mt_on_hid_hw_close(struct hid_device *hdev)
|
||||
{
|
||||
mt_set_modes(hdev, HID_LATENCY_HIGH, TOUCHPAD_REPORT_NONE);
|
||||
struct mt_device *td = hid_get_drvdata(hdev);
|
||||
|
||||
if (td->mtclass.quirks & MT_QUIRK_KEEP_LATENCY_ON_CLOSE)
|
||||
mt_set_modes(hdev, HID_LATENCY_NORMAL, TOUCHPAD_REPORT_NONE);
|
||||
else
|
||||
mt_set_modes(hdev, HID_LATENCY_HIGH, TOUCHPAD_REPORT_NONE);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -2468,6 +2486,14 @@ static const struct hid_device_id mt_devices[] = {
|
|||
MT_USB_DEVICE(USB_VENDOR_ID_UNITEC,
|
||||
USB_DEVICE_ID_UNITEC_USB_TOUCH_0A19) },
|
||||
|
||||
/* Uniwill touchpads */
|
||||
{ .driver_data = MT_CLS_WIN_8_KEEP_LATENCY_ON_CLOSE,
|
||||
HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8,
|
||||
USB_VENDOR_ID_PIXART, 0x0255) },
|
||||
{ .driver_data = MT_CLS_WIN_8_KEEP_LATENCY_ON_CLOSE,
|
||||
HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8,
|
||||
USB_VENDOR_ID_PIXART, 0x0274) },
|
||||
|
||||
/* VTL panels */
|
||||
{ .driver_data = MT_CLS_VTL,
|
||||
MT_USB_DEVICE(USB_VENDOR_ID_VTL,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue