HID: hid-input: allow array fields out of range
authorNikolai Kondrashov <spbnick@gmail.com>
Fri, 2 Mar 2012 20:13:58 +0000 (22:13 +0200)
committerJiri Kosina <jkosina@suse.cz>
Mon, 5 Mar 2012 09:28:58 +0000 (10:28 +0100)
commit883e0e366209067e690356e58e19bb2e6693b839
treefc146f8908f26f519c4a3d4cf30e812598e10cd4
parent37891abc8464637964a26ae4b61d307fef831f80
HID: hid-input: allow array fields out of range

Allow array field values out of range as per HID 1.11 specification,
section 6.2.25:

Rather than returning a single bit for each button in the group, an
array returns an index in each field that corresponds to the pressed
button (like keyboard scan codes). An out-of range value in and array
field is considered no controls asserted.

Apparently, "and" above is a typo and should be "an".

This fixes at least Waltop tablet pen clicks - otherwise BTN_TOUCH is never
released.

The relevant part of Waltop tablet report descriptors is this:

0x09, 0x42,         /*          Usage (Tip Switch),         */
0x09, 0x44,         /*          Usage (Barrel Switch),      */
0x09, 0x46,         /*          Usage (Tablet Pick),        */
0x15, 0x01,         /*          Logical Minimum (1),        */
0x25, 0x03,         /*          Logical Maximum (3),        */
0x75, 0x04,         /*          Report Size (4),            */
0x95, 0x01,         /*          Report Count (1),           */
0x80,               /*          Input,                      */

This is a regression fix for commit b4b583d ("HID: be more strict when
ignoring out-of-range fields").

Signed-off-by: Nikolai Kondrashov <spbnick@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-input.c