aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid
diff options
context:
space:
mode:
authorBenjamin Tissoires <benjamin.tissoires@enac.fr>2012-02-04 11:08:50 -0500
committerJiri Kosina <jkosina@suse.cz>2012-02-06 07:22:39 -0500
commit847672cd141c07db3d5fc1442b4c3e8a702488df (patch)
tree8717adf62ef0bc5e57e0946ef52d0879b33ded83 /drivers/hid
parent31ae9bddb935c74b51ead08d54948e5bea0f0344 (diff)
HID: multitouch: support Perixx PERIPAD 701
Perixx Peripad 701 is an hybrid device which presents a touchpad and a keyboard on the same surface. The switch between the two is controlled by a physical switch, and the firmware sends the events on the right interface (mouse, keyboard or multitouch). This patch enables the multitouch interface of this device to work. We need to manually set the device as a trackpad (we cannot infer it from the reports descriptors as the device works under Windows, a system that does not allow multitouch touchpad). We also need to set the hid feature MAX CONTACT NUMBER to 2 or the device stops sending events once it has been pressed by two touches. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Acked-by: Henrik Rydberg <rydberg@euromail.se> 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-ids.h1
-rw-r--r--drivers/hid/hid-multitouch.c11
3 files changed, 13 insertions, 0 deletions
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
index a421abdd1ab7..f7c43b6c3567 100644
--- a/drivers/hid/Kconfig
+++ b/drivers/hid/Kconfig
@@ -355,6 +355,7 @@ config HID_MULTITOUCH
355 - Lumio CrystalTouch panels 355 - Lumio CrystalTouch panels
356 - MosArt dual-touch panels 356 - MosArt dual-touch panels
357 - PenMount dual touch panels 357 - PenMount dual touch panels
358 - Perixx Peripad 701 touchpad
358 - PixArt optical touch screen 359 - PixArt optical touch screen
359 - Pixcir dual touch panels 360 - Pixcir dual touch panels
360 - Quanta panels 361 - Quanta panels
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index b8574cddd953..662a0b6a6642 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -659,6 +659,7 @@
659 659
660#define USB_VENDOR_ID_TOPSEED2 0x1784 660#define USB_VENDOR_ID_TOPSEED2 0x1784
661#define USB_DEVICE_ID_TOPSEED2_RF_COMBO 0x0004 661#define USB_DEVICE_ID_TOPSEED2_RF_COMBO 0x0004
662#define USB_DEVICE_ID_TOPSEED2_PERIPAD_701 0x0016
662 663
663#define USB_VENDOR_ID_TOPMAX 0x0663 664#define USB_VENDOR_ID_TOPMAX 0x0663
664#define USB_DEVICE_ID_TOPMAX_COBRAPAD 0x0103 665#define USB_DEVICE_ID_TOPMAX_COBRAPAD 0x0103
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index d0fa6a7e9bc0..387a72fb1c84 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -103,6 +103,7 @@ struct mt_device {
103#define MT_CLS_CYPRESS 0x0102 103#define MT_CLS_CYPRESS 0x0102
104#define MT_CLS_EGALAX 0x0103 104#define MT_CLS_EGALAX 0x0103
105#define MT_CLS_EGALAX_SERIAL 0x0104 105#define MT_CLS_EGALAX_SERIAL 0x0104
106#define MT_CLS_TOPSEED 0x0105
106 107
107#define MT_DEFAULT_MAXCONTACT 10 108#define MT_DEFAULT_MAXCONTACT 10
108 109
@@ -192,6 +193,11 @@ static struct mt_class mt_classes[] = {
192 .sn_move = 4096, 193 .sn_move = 4096,
193 .sn_pressure = 32, 194 .sn_pressure = 32,
194 }, 195 },
196 { .name = MT_CLS_TOPSEED,
197 .quirks = MT_QUIRK_ALWAYS_VALID,
198 .is_indirect = true,
199 .maxcontacts = 2,
200 },
195 201
196 { } 202 { }
197}; 203};
@@ -897,6 +903,11 @@ static const struct hid_device_id mt_devices[] = {
897 HID_USB_DEVICE(USB_VENDOR_ID_STANTUM_SITRONIX, 903 HID_USB_DEVICE(USB_VENDOR_ID_STANTUM_SITRONIX,
898 USB_DEVICE_ID_MTP_SITRONIX)}, 904 USB_DEVICE_ID_MTP_SITRONIX)},
899 905
906 /* TopSeed panels */
907 { .driver_data = MT_CLS_TOPSEED,
908 HID_USB_DEVICE(USB_VENDOR_ID_TOPSEED2,
909 USB_DEVICE_ID_TOPSEED2_PERIPAD_701) },
910
900 /* Touch International panels */ 911 /* Touch International panels */
901 { .driver_data = MT_CLS_DEFAULT, 912 { .driver_data = MT_CLS_DEFAULT,
902 HID_USB_DEVICE(USB_VENDOR_ID_TOUCH_INTL, 913 HID_USB_DEVICE(USB_VENDOR_ID_TOUCH_INTL,