HID: hid-multitouch: fix broken eGalax
authorBenjamin Tissoires <benjamin.tissoires@enac.fr>
Sun, 12 Jun 2011 06:22:08 +0000 (08:22 +0200)
committerJiri Kosina <jkosina@suse.cz>
Sun, 12 Jun 2011 21:59:23 +0000 (23:59 +0200)
commitb84bd27fe70206f9253c395958134e4e4b7e55f0
treea9f04e1f620a5bed4605bdde9ac6b30480bb0801
parentc2f019713df67e09d32e1b3c12f147a83a579d25
HID: hid-multitouch: fix broken eGalax

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>
drivers/hid/hid-multitouch.c