summaryrefslogtreecommitdiffstats
path: root/drivers/hid/hid-multitouch.c
Commit message (Collapse)AuthorAgeFilesLines
* HID: hid-multitouch: fix wrong protocol detectionBenjamin Tissoires2012-05-101-12/+46
| | | | | | | | | | | | | | The previous implementation introduced a randomness in the splitting of the different touches reported by the device. This version is more robust as we don't rely on hi->input->absbit, but on our own structure. This also prepares hid-multitouch to better support Win8 devices. [Jiri Kosina <jkosina@suse.cz>: fix build] Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Acked-by: Henrik Rydberg <rydberg@euromail.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: multitouch: MT interface matching for BaantoJiri Kosina2012-05-051-1/+1
| | | | | | | | Baanto device entry needs to be altered in the same way other device entries have been changed in 2c2110e90b5 ("HID: hid-multitouch: Only match MT interfaces"). Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* Merge branch 'multitouch' into device-groupsJiri Kosina2012-05-051-0/+4
|\ | | | | | | | | | | | | | | I am merging multitouch branch into device-groups so that support for Baanto device can be adjusted accordingly to the new autoloading patches. Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: multitouch: Add support for Baanto touchscreenJiri Kosina2012-04-201-0/+4
| | | | | | | | | | | | Reported-by: Tvrtko Ursulin <tvrtko.ursulin@onelan.co.uk> Tested-by: Tvrtko Ursulin <tvrtko.ursulin@onelan.co.uk> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: hid-multitouch: Only match MT interfacesHenrik Rydberg2012-05-051-70/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All known hid-multitouch devices currently match any device group. However, some devices present interfaces belonging to different groups, resulting in a race between the hid-generic and hid-multitouch modules. This patch narrows the MT device list to match only HID_GROUP_MULTITOUCH, which solves the problem. As an exception, the USB_DEVICE_ID_CYPRESS_TRUETOUCH panel is not modified, in order to suppress the unwanted extra interfaces of the device. Reported-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> Signed-off-by: Henrik Rydberg <rydberg@euromail.se> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: hid-multitouch: Switch to device groupsHenrik Rydberg2012-05-011-9/+19
|/ | | | | | | | | | | | | | | | | | | Switch the driver over to device group handling. By adding the HID_GROUP_MULTITOUCH group to hid-core, hid-generic will no longer match multitouch devices. By adding the HID_GROUP_MULTITOUCH entry to the device list, hid-multitouch will match all unknown multitouch devices, and udev will automatically load the module. Since HID_QUIRK_MULTITOUCH never gets set, the special quirks handling can be removed. Since all HID MT devices have HID_DG_CONTACTID, they can be removed from the hid_have_special_driver list. With this patch, the unknown device ids are no longer NULL, so the code is modified to check for the generic entry instead. Signed-off-by: Henrik Rydberg <rydberg@euromail.se> Acked-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* Merge branch 'upstream' into for-linusJiri Kosina2012-03-201-0/+5
|\ | | | | | | | | Conflicts: drivers/hid/Makefile
| * HID: multitouch: add PID for Fructel productAndreas Nielsen2012-03-201-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | Adds multitouch support for the Gametel Android game controller. The multitouch events are emulated by the Gametel device. Each physical button is configured to generate a MT event on a specific coordinate. This seems to be the only way for us to support Android games that doesn't support HID gamepads. It is possible to inject MT events at Android level, but this requires root on the phone. Signed-off-by: Andreas Nielsen <eas@svep.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: multitouch: detect serial protocolBenjamin Tissoires2012-03-121-0/+13
| | | | | | | | | | | | | | | | | | Microsoft's documentation about multitouch protocols tells that if a device presents one touch per report, then it should be treated as a serial protocol. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: handle all multitouch devices through hid-multitouchBenjamin Tissoires2012-03-121-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | When the quirk HID_QUIRK_MULTITOUCH is present and when hid-multitouch is loaded, let's pass the device to hid-multitouch even if it has not been registered in hid-multitouch. If any other driver wants to take precedence over hid-multitouch, the usual way of adding it to hid_have_special_driver will work as the quirk HID_QUIRK_MULTITOUCH won't be set by the generic hid layer. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: multitouch: fix handling of buggy reports descriptors for Dell ST2220TBenjamin Tissoires2012-03-121-39/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | LG multitouch panels, such as the one found in Dell ST2220T, has buggy reports descriptors. With the previous implementation, it was impossible to rely on the reports descriptors to determine how the different touches are emitted from the device. This patch changes the splitting of the different touches in the report in a more robust way. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: multitouch: add support for eGalax 0x722aBenjamin Tissoires2012-03-091-0/+3
| | | | | | | | | | Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: multitouch: add more eGalax devicesBenjamin Tissoires2012-03-061-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | This is a list of devices that should be handled by hid-multitouch. They all present the HID usage "Contact ID" and won't be handled by hid-input. Some of them have _not_ been tested (though I have their report descriptors), but I've been guaranted by eeti that they follow the same protocol. The tested ones are also blacklisted in hid-core.c. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Acked-by: Henrik Rydberg <rydberg@euromail.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: multitouch: add new PID from IdeacomBenjamin Tissoires2012-03-061-0/+3
| | | | | | | | | | | | Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Acked-by: Henrik Rydberg <rydberg@euromail.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: multitouch: add support for Atmel maXTouch 03eb:2118Benjamin Tissoires2012-03-061-0/+3
| | | | | | | | | | | | Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Acked-by: Henrik Rydberg <rydberg@euromail.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: multitouch: add support of Panasonic multitouch panelsDenis Kovalev2012-02-211-4/+15
| | | | | | | | | | | | | | While at it, also fix some minor codingstyle issues. Signed-off-by: Denis Kovalev <Denis.Kovalev@dataart.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: multitouch: support Perixx PERIPAD 701Benjamin Tissoires2012-02-061-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | HID: multitouch: add control of the feature "Maximum Contact Number"Benjamin Tissoires2012-02-061-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some devices, like Perixx Peripad 701 do not work if the feature "Maximum Contact Number" is not set to the right value. This patch allows hid-multitouch to control this feature. If the programmer fills the field maxcontacts in the mt_class, then the driver will set the feature to this value. It is safe for current drivers as the feature is read/write in the HID norm and all devices should implement the norm. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Acked-by: Henrik Rydberg <rydberg@euromail.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* | HID: multitouch: add support for trackpadsBenjamin Tissoires2012-02-061-6/+34
|/ | | | | | | | | | | | | * some multitouch trackpads present the touch usage. This needs to be filtered as it will conflict with mt-implementation. * trackpads send BTN_TOOL_* to notify how many fingers are present (this is used by xorg to use synaptics instead of generic evdev) * trackpads like Perixx 701 are not different from a hid point of view from a touchscreen, and we need to manually set them as touchpad. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Acked-by: Henrik Rydberg <rydberg@euromail.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
*-. Merge branches 'hyperv', 'multitouch', 'roccat', 'upstream', ↵Jiri Kosina2012-01-051-44/+169
|\ \ | | | | | | | | | 'upstream-fixes', 'wacom' and 'wiimote' into for-linus
| | * HID: multitouch: make struct mt_classess staticJiri Kosina2011-11-221-1/+1
| |/ |/| | | | | Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: hid-multitouch: add support 9 new Xiroku devicesMasatoshi Hoshikawa2012-01-051-0/+29
| | | | | | | | | | | | | | This patch adds support for the Xiroku Inc. panels (SPX/MPX/CSR/etc.). Signed-off-by: Masatoshi Hoshikawa <hoshikawa@xiroku.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: multitouch: add support for 3M 32"Benjamin Tissoires2012-01-021-0/+3
| | | | | | | | | | | | Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> Acked-by: Henrik Rydberg <rydberg@euromail.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: multitouch: add support of Atmel multitouch panelsBenjamin Tissoires2012-01-021-0/+5
| | | | | | | | | | | | Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> Acked-by: Henrik Rydberg <rydberg@euromail.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: multitouch: support PixArt optical touch screenAaron Tian2011-12-151-0/+15
| | | | | | | | | | | | | | | | | | 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>
| * HID: hid-multitouch: add support for new Hanvon panelsBenjamin Tissoires2011-11-301-0/+5
| | | | | | | | | | | | Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Acked-by: Henrik Rydberg <rydberg@euromail.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: multitouch: merge quanta driver into hid-multitouchBenjamin Tissoires2011-11-301-4/+19
| | | | | | | | | | | | | | | | | | | | This patch merge the last old-style hid multitouch driver to the generic one. It also adds 2 more quanta pids. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> Acked-by: Henrik Rydberg <rydberg@euromail.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: multitouch: correct eGalax a001 protocolBenjamin Tissoires2011-11-231-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | This device use another protocol while sending the events. It's the same as the one described as "serial" by Microsoft. We are keeping here the sn_move and sn_pressure parameters for egalax devices. CC: Cedric Sodhi <manday@gmx.net> CC: Chris Bagwell <chris@cnpbagwell.com> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: multitouch: add support for the MSI Windpad 110WBenjamin Tissoires2011-11-231-0/+3
| | | | | | | | | | | | | | | | | | Just another eGalax device. Please note that adding this device to have_special_driver in hid-core.c is not required anymore. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: multitouch: Add egalax ID for Acer Iconia W500Marek Vasut2011-11-231-0/+3
| | | | | | | | | | | | | | | | | | | | This patch adds USB ID for the touchpanel in Acer Iconia W500. The panel supports up to five fingers, therefore the need for a new addition of panel types. Signed-off-by: Marek Vasut <marek.vasut@gmail.com> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: multitouch: cleanup with eGalax PID definitionsBenjamin Tissoires2011-11-231-12/+12
| | | | | | | | | | | | | | | | | | This is just a renaming of USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH{N} to USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_{PID} to handle more eGalax devices. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: multitouch: remove .maxcontacts field for eGalaxBenjamin Tissoires2011-11-231-1/+0
| | | | | | | | | | | | | | | | Some eGalax devices are 4 or 5 fingers touches, wereas others are 2. This patch removes the limit in which all eGalax presents 2 touches. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: multitouch: cleanup eGalax quirksBenjamin Tissoires2011-11-231-10/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous implementation of eGalax protocol was not satisfying as we had to manually set x/y ranges as they were corrupted after reading the report descriptor. Indeed, the report descriptor provided a stylus input interface which override the correct values. This patch omits this input, thus leaving the correct value untouched, and the MT_QUIRK_EGALAX_XYZ_FIXUP not required anymore. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: multitouch: create sysfs attribute to control quirks from user-spaceBenjamin Tissoires2011-11-231-18/+59
| | | | | | | | | | Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: hid-multitouch - add another eGalax idChris Bagwell2011-11-231-0/+3
|/ | | | | | | | This allows ASUS Eee Slate touchscreens to work. Signed-off-by: Chris Bagwell <chris@cnpbagwell.com> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* Revert "HID: multitouch: decide if hid-multitouch needs to handle mt devices"Henrik Rydberg2011-11-011-43/+4
| | | | | | | | | | | | | | | | This reverts commit 0db3bfc72adf0c (""HID: multitouch: decide if hid-multitouch needs to handle mt devices"). The generic detection of hid-mt devices has two major flaws, and was merged prematurely. Firstly, the hid-multitouch gets loaded even when the device is handled by a special device. Secondly, the patch only partially duplicates the device whitelist already present in hid-core, effectively rendering a number of devices non-functional. Reported-by: Sean Young <sean@mess.org> Tested-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> Signed-off-by: Henrik Rydberg <rydberg@euromail.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: multitouch: decide if hid-multitouch needs to handle mt devicesBenjamin Tissoires2011-09-261-4/+43
| | | | | | | | | | | | Now that hid-generic ignores all win7 compatible multitouch devices, this patch allows hid-multitouch to catch them. The idea is to rely on the quirk HID_QUIRK_MULTITOUCH to drop the device if no ContactID is given. There is the need for a blacklist here as other devices may need a special driver (ntrig for instance). Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: hid-multitouch: add support for the IDEACOM 6650 chipStephane Chatty2011-09-201-10/+21
| | | | | | | | | | | | The IDEACOM 6650 multitouch chip, present in various all-in-one computers, uses the serial version of the HID multitouch protocol. No existing class supports this. In principle, the new MT_CLS_SERIAL should work for other serial panels as well, perhaps including some eGalax panels. Signed-off-by: Stephane Chatty <chatty@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: hid-multitouch: Add LG Display Multitouch device.Jeff Brown2011-08-161-0/+5
| | | | | | | | This panel is also known as the Dell ST2220Tc. Signed-off-by: jeffbrown@android.com Reviewed-By: Benjamin Tissoires <Benjamin_Tissoires@logitech.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: hid-multitouch: Filter collections by application usage.Jeff Brown2011-08-161-0/+10
| | | | | | | | | | | | | | | | This change fixes two problems. First, it ensures that the hid-multitouch driver does not incorrectly map GenericDesktop usages that are intended for other applications, such as a Mouse. Second, it sets the appropriate input properties so that user-space can distinguish TouchScreen devices (INPUT_PROP_DIRECT) from TouchPad devices (INPUT_PROP_POINTER) and configure them accordingly. Signed-off-by: jeffbrown@android.com Acked-By: Benjamin Tissoires <Benjamin_Tissoires@logitech.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
*-. Merge branches 'roccat', 'upstream' and 'wiimote' into for-linusJiri Kosina2011-07-221-23/+55
|\ \
| | * HID: hid-multitouch: add support for a new Lumio dual-touch panelBenjamin Tissoires2011-06-241-0/+3
| | | | | | | | | | | | | | | Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| | * HID: hid-multitouch: correct VID for Stantum panelsBenjamin Tissoires2011-06-241-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | while merging hid-stantum into hid-multitouch, I did not correctly copy/paste the VIDs for those devices. This patch fixes it. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| | * HID: hid-multitouch: ensure slots are initializedBenjamin Tissoires2011-06-241-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In case a device does not provide the feature "Maximum Contact Count", or set it at 0, the maxcontacts field may be at 0 while calling input_mt_init_slots. This patch ensures that hid-multitouch will allways report ABS_MT_SLOT and ABS_MT_TRACKING_ID to the user space. This corrects a bug found with some Ilitek devices that has been integrated in 3.0-rc0. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| | * HID: hid-multitouch: fix broken eGalaxBenjamin Tissoires2011-06-121-18/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since the inclusion of eGalax devices in 2.6.39, I've got some bug reports for 480d and other devices. The problem lies in the reports descriptors: eGalax supports both pen and fingers, and so the reports descriptors contained both. But hid-multitouch relies on them to detect the last item in each field to send the multitouch events. In 480d, the last item is not Y as it should but Pressure. That means that the fields are not aligned and X,Y are at 0,0 (the other touch coordinates of the report). With this patch, the detection is made only when the field ContactID has been detected inside the collection. There is still a problem with the detections of the range as stylus and fingers may not have the same min/max, but it's a start. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Reviewed-by: Henrik Rydberg <rydberg@euromail.se> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| | * HID: hid-multitouch: add support for Chunghwa multi-touch panelAustin Zhang2011-06-071-0/+5
| |/ |/| | | | | | | | | | | | | Added Chunghwa hid multitouch panel support into hid-multitouch. Signed-off-by: Austin Zhang <zhang.austin@gmail.com> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
| * HID: hid-multitouch: add one new multitouch device's VID/PIDice chien2011-07-211-0/+4
|/ | | | | | | This patch adds support for the CSR panel built by XAT. Signed-off-by: Ice Chien <ice.chien@accupoint.com.tw> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: hid-multitouch: cosmetic changes, sort classes and devicesBenjamin Tissoires2011-05-231-43/+50
| | | | | | | | | | | | This patch sorts the defs for the MT_CLS. I choose to split generic classes and device specific ones to be able to add more generic classes in the future. It also put eGalax devices at their right place (alphabetically) in mt_devices. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: hid-multitouch: class MT_CLS_STANTUM is redundant with MT_CLS_CONFIDENCEBenjamin Tissoires2011-05-201-6/+3
| | | | | | | | | Stantum devices used to work with MT_CLS_STANTUM but MT_CLS_CONFIDENCE is exactly the same. This patch switches them to this generic class, and remove the unused MT_CLS_STANTUM. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* HID: hid-multitouch: add support for Unitec panelsBenjamin Tissoires2011-05-201-0/+8
| | | | | | | | | This patch introduce support for Unitec panels. This device has not been optimized in term of kernel processing operations (default class), but it will work. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>