diff options
Diffstat (limited to 'drivers/hid/hid-multitouch.c')
-rw-r--r-- | drivers/hid/hid-multitouch.c | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c index b03a0b0e9b63..f1c909f1b239 100644 --- a/drivers/hid/hid-multitouch.c +++ b/drivers/hid/hid-multitouch.c | |||
@@ -47,10 +47,11 @@ MODULE_LICENSE("GPL"); | |||
47 | #define MT_QUIRK_SLOT_IS_CONTACTID (1 << 1) | 47 | #define MT_QUIRK_SLOT_IS_CONTACTID (1 << 1) |
48 | #define MT_QUIRK_CYPRESS (1 << 2) | 48 | #define MT_QUIRK_CYPRESS (1 << 2) |
49 | #define MT_QUIRK_SLOT_IS_CONTACTNUMBER (1 << 3) | 49 | #define MT_QUIRK_SLOT_IS_CONTACTNUMBER (1 << 3) |
50 | #define MT_QUIRK_VALID_IS_INRANGE (1 << 4) | 50 | #define MT_QUIRK_ALWAYS_VALID (1 << 4) |
51 | #define MT_QUIRK_VALID_IS_CONFIDENCE (1 << 5) | 51 | #define MT_QUIRK_VALID_IS_INRANGE (1 << 5) |
52 | #define MT_QUIRK_EGALAX_XYZ_FIXUP (1 << 6) | 52 | #define MT_QUIRK_VALID_IS_CONFIDENCE (1 << 6) |
53 | #define MT_QUIRK_SLOT_IS_CONTACTID_MINUS_ONE (1 << 7) | 53 | #define MT_QUIRK_EGALAX_XYZ_FIXUP (1 << 7) |
54 | #define MT_QUIRK_SLOT_IS_CONTACTID_MINUS_ONE (1 << 8) | ||
54 | 55 | ||
55 | struct mt_slot { | 56 | struct mt_slot { |
56 | __s32 x, y, p, w, h; | 57 | __s32 x, y, p, w, h; |
@@ -86,11 +87,12 @@ struct mt_class { | |||
86 | /* classes of device behavior */ | 87 | /* classes of device behavior */ |
87 | #define MT_CLS_DEFAULT 0x0001 | 88 | #define MT_CLS_DEFAULT 0x0001 |
88 | 89 | ||
89 | #define MT_CLS_CONFIDENCE 0x0002 | 90 | #define MT_CLS_SERIAL 0x0002 |
90 | #define MT_CLS_CONFIDENCE_MINUS_ONE 0x0003 | 91 | #define MT_CLS_CONFIDENCE 0x0003 |
91 | #define MT_CLS_DUAL_INRANGE_CONTACTID 0x0004 | 92 | #define MT_CLS_CONFIDENCE_MINUS_ONE 0x0004 |
92 | #define MT_CLS_DUAL_INRANGE_CONTACTNUMBER 0x0005 | 93 | #define MT_CLS_DUAL_INRANGE_CONTACTID 0x0005 |
93 | #define MT_CLS_DUAL_NSMU_CONTACTID 0x0006 | 94 | #define MT_CLS_DUAL_INRANGE_CONTACTNUMBER 0x0006 |
95 | #define MT_CLS_DUAL_NSMU_CONTACTID 0x0007 | ||
94 | 96 | ||
95 | /* vendor specific classes */ | 97 | /* vendor specific classes */ |
96 | #define MT_CLS_3M 0x0101 | 98 | #define MT_CLS_3M 0x0101 |
@@ -134,6 +136,8 @@ static int find_slot_from_contactid(struct mt_device *td) | |||
134 | struct mt_class mt_classes[] = { | 136 | struct mt_class mt_classes[] = { |
135 | { .name = MT_CLS_DEFAULT, | 137 | { .name = MT_CLS_DEFAULT, |
136 | .quirks = MT_QUIRK_NOT_SEEN_MEANS_UP }, | 138 | .quirks = MT_QUIRK_NOT_SEEN_MEANS_UP }, |
139 | { .name = MT_CLS_SERIAL, | ||
140 | .quirks = MT_QUIRK_ALWAYS_VALID}, | ||
137 | { .name = MT_CLS_CONFIDENCE, | 141 | { .name = MT_CLS_CONFIDENCE, |
138 | .quirks = MT_QUIRK_VALID_IS_CONFIDENCE }, | 142 | .quirks = MT_QUIRK_VALID_IS_CONFIDENCE }, |
139 | { .name = MT_CLS_CONFIDENCE_MINUS_ONE, | 143 | { .name = MT_CLS_CONFIDENCE_MINUS_ONE, |
@@ -445,7 +449,9 @@ static int mt_event(struct hid_device *hid, struct hid_field *field, | |||
445 | if (hid->claimed & HID_CLAIMED_INPUT && td->slots) { | 449 | if (hid->claimed & HID_CLAIMED_INPUT && td->slots) { |
446 | switch (usage->hid) { | 450 | switch (usage->hid) { |
447 | case HID_DG_INRANGE: | 451 | case HID_DG_INRANGE: |
448 | if (quirks & MT_QUIRK_VALID_IS_INRANGE) | 452 | if (quirks & MT_QUIRK_ALWAYS_VALID) |
453 | td->curvalid = true; | ||
454 | else if (quirks & MT_QUIRK_VALID_IS_INRANGE) | ||
449 | td->curvalid = value; | 455 | td->curvalid = value; |
450 | break; | 456 | break; |
451 | case HID_DG_TIPSWITCH: | 457 | case HID_DG_TIPSWITCH: |
@@ -672,6 +678,11 @@ static const struct hid_device_id mt_devices[] = { | |||
672 | HID_USB_DEVICE(USB_VENDOR_ID_GOODTOUCH, | 678 | HID_USB_DEVICE(USB_VENDOR_ID_GOODTOUCH, |
673 | USB_DEVICE_ID_GOODTOUCH_000f) }, | 679 | USB_DEVICE_ID_GOODTOUCH_000f) }, |
674 | 680 | ||
681 | /* Ideacom panel */ | ||
682 | { .driver_data = MT_CLS_SERIAL, | ||
683 | HID_USB_DEVICE(USB_VENDOR_ID_IDEACOM, | ||
684 | USB_DEVICE_ID_IDEACOM_IDC6650) }, | ||
685 | |||
675 | /* Ilitek dual touch panel */ | 686 | /* Ilitek dual touch panel */ |
676 | { .driver_data = MT_CLS_DEFAULT, | 687 | { .driver_data = MT_CLS_DEFAULT, |
677 | HID_USB_DEVICE(USB_VENDOR_ID_ILITEK, | 688 | HID_USB_DEVICE(USB_VENDOR_ID_ILITEK, |