aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid
diff options
context:
space:
mode:
authorAaron Tian <aaron_tian@pixart.com.tw>2011-12-14 22:09:06 -0500
committerJiri Kosina <jkosina@suse.cz>2011-12-15 05:13:41 -0500
commitb7ea95ff9baab144dacdc30d752307938c5ab6bf (patch)
treef6bd75bc314ac943fece165ce968d48765010f59 /drivers/hid
parent545803651da8dde248eeb8ce3ed1e547e9e4ac0a (diff)
HID: multitouch: support PixArt optical touch screen
This patch modifies hid-multitouch driver for supporting PixArt optical touch screen. Because of the device does not have to set initial report, we apply "HID_QUIRK_NO_INIT_REPORTS" quirk and add the device into hid_blacklist[] Signed-off-by: Aaron Tian <aaron_tian@pixart.com.tw> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid')
-rw-r--r--drivers/hid/Kconfig1
-rw-r--r--drivers/hid/hid-core.c3
-rw-r--r--drivers/hid/hid-ids.h5
-rw-r--r--drivers/hid/hid-multitouch.c15
-rw-r--r--drivers/hid/usbhid/hid-quirks.c3
5 files changed, 27 insertions, 0 deletions
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
index ee14f78139f0..5d6eb4e5af30 100644
--- a/drivers/hid/Kconfig
+++ b/drivers/hid/Kconfig
@@ -349,6 +349,7 @@ config HID_MULTITOUCH
349 - Lumio CrystalTouch panels 349 - Lumio CrystalTouch panels
350 - MosArt dual-touch panels 350 - MosArt dual-touch panels
351 - PenMount dual touch panels 351 - PenMount dual touch panels
352 - PixArt optical touch screen
352 - Pixcir dual touch panels 353 - Pixcir dual touch panels
353 - Quanta panels 354 - Quanta panels
354 - eGalax dual-touch panels, including the Joojoo and Wetab tablets 355 - eGalax dual-touch panels, including the Joojoo and Wetab tablets
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 972f6040181f..2f8ad34a6a91 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1501,6 +1501,9 @@ static const struct hid_device_id hid_have_special_driver[] = {
1501 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) }, 1501 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) },
1502 { HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_PCI) }, 1502 { HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_PCI) },
1503 { HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) }, 1503 { HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) },
1504 { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN) },
1505 { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN1) },
1506 { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN2) },
1504 { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) }, 1507 { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) },
1505 { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH) }, 1508 { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH) },
1506 { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN) }, 1509 { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN) },
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index cddb639654cd..96e139f2351b 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -577,6 +577,11 @@
577#define USB_VENDOR_ID_PI_ENGINEERING 0x05f3 577#define USB_VENDOR_ID_PI_ENGINEERING 0x05f3
578#define USB_DEVICE_ID_PI_ENGINEERING_VEC_USB_FOOTPEDAL 0xff 578#define USB_DEVICE_ID_PI_ENGINEERING_VEC_USB_FOOTPEDAL 0xff
579 579
580#define USB_VENDOR_ID_PIXART 0x093a
581#define USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN 0x8001
582#define USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN1 0x8002
583#define USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN2 0x8003
584
580#define USB_VENDOR_ID_PLAYDOTCOM 0x0b43 585#define USB_VENDOR_ID_PLAYDOTCOM 0x0b43
581#define USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII 0x0003 586#define USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII 0x0003
582 587
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index de447d7fdc56..513329d9833f 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -93,6 +93,7 @@ struct mt_device {
93#define MT_CLS_DUAL_INRANGE_CONTACTID 0x0006 93#define MT_CLS_DUAL_INRANGE_CONTACTID 0x0006
94#define MT_CLS_DUAL_INRANGE_CONTACTNUMBER 0x0007 94#define MT_CLS_DUAL_INRANGE_CONTACTNUMBER 0x0007
95#define MT_CLS_DUAL_NSMU_CONTACTID 0x0008 95#define MT_CLS_DUAL_NSMU_CONTACTID 0x0008
96#define MT_CLS_INRANGE_CONTACTNUMBER 0x0009
96 97
97/* vendor specific classes */ 98/* vendor specific classes */
98#define MT_CLS_3M 0x0101 99#define MT_CLS_3M 0x0101
@@ -159,6 +160,9 @@ struct mt_class mt_classes[] = {
159 .quirks = MT_QUIRK_NOT_SEEN_MEANS_UP | 160 .quirks = MT_QUIRK_NOT_SEEN_MEANS_UP |
160 MT_QUIRK_SLOT_IS_CONTACTID, 161 MT_QUIRK_SLOT_IS_CONTACTID,
161 .maxcontacts = 2 }, 162 .maxcontacts = 2 },
163 { .name = MT_CLS_INRANGE_CONTACTNUMBER,
164 .quirks = MT_QUIRK_VALID_IS_INRANGE |
165 MT_QUIRK_SLOT_IS_CONTACTNUMBER },
162 166
163 /* 167 /*
164 * vendor specific classes 168 * vendor specific classes
@@ -784,6 +788,17 @@ static const struct hid_device_id mt_devices[] = {
784 HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, 788 HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT,
785 USB_DEVICE_ID_PENMOUNT_PCI) }, 789 USB_DEVICE_ID_PENMOUNT_PCI) },
786 790
791 /* PixArt optical touch screen */
792 { .driver_data = MT_CLS_INRANGE_CONTACTNUMBER,
793 HID_USB_DEVICE(USB_VENDOR_ID_PIXART,
794 USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN) },
795 { .driver_data = MT_CLS_INRANGE_CONTACTNUMBER,
796 HID_USB_DEVICE(USB_VENDOR_ID_PIXART,
797 USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN1) },
798 { .driver_data = MT_CLS_INRANGE_CONTACTNUMBER,
799 HID_USB_DEVICE(USB_VENDOR_ID_PIXART,
800 USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN2) },
801
787 /* PixCir-based panels */ 802 /* PixCir-based panels */
788 { .driver_data = MT_CLS_DUAL_INRANGE_CONTACTID, 803 { .driver_data = MT_CLS_DUAL_INRANGE_CONTACTID,
789 HID_USB_DEVICE(USB_VENDOR_ID_HANVON, 804 HID_USB_DEVICE(USB_VENDOR_ID_HANVON,
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
index 4ea464151c3b..b7962afa0b82 100644
--- a/drivers/hid/usbhid/hid-quirks.c
+++ b/drivers/hid/usbhid/hid-quirks.c
@@ -66,6 +66,9 @@ static const struct hid_blacklist {
66 { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_AXIS_295, HID_QUIRK_NOGET }, 66 { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_AXIS_295, HID_QUIRK_NOGET },
67 { USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC, HID_QUIRK_NOGET }, 67 { USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC, HID_QUIRK_NOGET },
68 { USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET }, 68 { USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET },
69 { USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN, HID_QUIRK_NO_INIT_REPORTS },
70 { USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN1, HID_QUIRK_NO_INIT_REPORTS },
71 { USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN2, HID_QUIRK_NO_INIT_REPORTS },
69 { USB_VENDOR_ID_PRODIGE, USB_DEVICE_ID_PRODIGE_CORDLESS, HID_QUIRK_NOGET }, 72 { USB_VENDOR_ID_PRODIGE, USB_DEVICE_ID_PRODIGE_CORDLESS, HID_QUIRK_NOGET },
70 { USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN, HID_QUIRK_NOGET }, 73 { USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN, HID_QUIRK_NOGET },
71 { USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET }, 74 { USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET },