HID: introduce proper zeroing of unused bits in output reports
authorSimon Budig <simon@budig.de>
Mon, 12 Mar 2007 12:52:04 +0000 (13:52 +0100)
committerJiri Kosina <jkosina@suse.cz>
Wed, 11 Apr 2007 08:36:36 +0000 (10:36 +0200)
commit46386b587086c8d2698222a031bf749688464032
tree47eba4258864a9f34801fda490a7602b4ba90ebb
parenta21bd69e1509b43823c317c3bf3f7ffa99884356
HID: introduce proper zeroing of unused bits in output reports

Some HID devices are looking on the unused bits in the HID reports they
receive. This is violating the specification, but we want to make those
devices work. Well-behaving devices are unaffected, as they don't care
about the unused bits.

If bitsused % 8 is 0 all bits in data[] get used and we don't need to
clear anything. Otherwise (bitsused % 8) bits of the last byte get used.
By shifting 1 for (bitsused % 8) bits and subtracting 1 we create a mask
consisting of (bitsused % 8) ones and remaining zeroes. By ANDing we
clear the upper unused bits.

Signed-off-by: Simon Budig <simon@budig.de>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-core.c