HID: multitouch: Only look at non touch fields in first packet of a frame
authorHans de Goede <hdegoede@redhat.com>
Wed, 22 Nov 2017 11:57:09 +0000 (12:57 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Mar 2018 07:42:47 +0000 (08:42 +0100)
commitaddf1ae9fcb239fe67a03d41606e0f239887873f
treec78f8589e4872d4c3217c178d34c057c3bac47bf
parentd2bbda4c374c4d9cbe8fee21d52341f45da5414f
HID: multitouch: Only look at non touch fields in first packet of a frame

[ Upstream commit 55746d28d66860bccaae20a67b55b9d5db7c14af ]

Devices in "single finger hybrid mode" will send one report per finger,
on some devices only the first report of such a multi-packet frame will
contain a value for BTN_LEFT, in subsequent reports (if multiple fingers
are down) the value is always 0, causing hid-mt to report BTN_LEFT going
1 - 0 - 1 - 0 when pressing a clickpad and putting down a second finger.
This happens for example on USB 0603:0002 mt touchpads.

This commit fixes this by only reporting non touch fields for the first
packet of a (possibly) multi-packet frame.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/hid/hid-multitouch.c