Commit 20b60e6d authored by Benjamin Tissoires's avatar Benjamin Tissoires Committed by Jiri Kosina

HID: multitouch: move ALWAYS_VALID quirk check

Win 8 device specification changed the requirements for the hid usages
of the multitouch devices. Now InRange is optional and must be only
used when the device supports hovering.

This ensures that the quirk ALWAYS_VALID is taken into account and
also ensures its precedence over the other VALID* quirks.
Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@gmail.com>
Reviewed-by: default avatarHenrik Rydberg <rydberg@euromail.se>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 349fd670
...@@ -502,7 +502,7 @@ static int mt_compute_slot(struct mt_device *td, struct input_dev *input) ...@@ -502,7 +502,7 @@ static int mt_compute_slot(struct mt_device *td, struct input_dev *input)
*/ */
static void mt_complete_slot(struct mt_device *td, struct input_dev *input) static void mt_complete_slot(struct mt_device *td, struct input_dev *input)
{ {
if (td->curvalid) { if (td->curvalid || (td->mtclass.quirks & MT_QUIRK_ALWAYS_VALID)) {
int slotnum = mt_compute_slot(td, input); int slotnum = mt_compute_slot(td, input);
struct mt_slot *s = &td->curdata; struct mt_slot *s = &td->curdata;
...@@ -553,9 +553,7 @@ static int mt_event(struct hid_device *hid, struct hid_field *field, ...@@ -553,9 +553,7 @@ static int mt_event(struct hid_device *hid, struct hid_field *field,
if (hid->claimed & HID_CLAIMED_INPUT) { if (hid->claimed & HID_CLAIMED_INPUT) {
switch (usage->hid) { switch (usage->hid) {
case HID_DG_INRANGE: case HID_DG_INRANGE:
if (quirks & MT_QUIRK_ALWAYS_VALID) if (quirks & MT_QUIRK_VALID_IS_INRANGE)
td->curvalid = true;
else if (quirks & MT_QUIRK_VALID_IS_INRANGE)
td->curvalid = value; td->curvalid = value;
break; break;
case HID_DG_TIPSWITCH: case HID_DG_TIPSWITCH:
......
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