aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid/hid-multitouch.c
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/hid-multitouch.c
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/hid-multitouch.c')
-rw-r--r--drivers/hid/hid-multitouch.c11
1 files changed, 11 insertions, 0 deletions
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,