diff options
author | Benjamin Tissoires <benjamin.tissoires@enac.fr> | 2012-02-04 11:08:50 -0500 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2012-02-06 07:22:39 -0500 |
commit | 847672cd141c07db3d5fc1442b4c3e8a702488df (patch) | |
tree | 8717adf62ef0bc5e57e0946ef52d0879b33ded83 /drivers/hid/hid-multitouch.c | |
parent | 31ae9bddb935c74b51ead08d54948e5bea0f0344 (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.c | 11 |
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, |