| From e24d0d399b2fce71b627043e900ef28283850482 Mon Sep 17 00:00:00 2001 |
| From: Benjamin Tissoires <benjamin.tissoires@redhat.com> |
| Date: Mon, 31 Mar 2014 13:27:10 -0400 |
| Subject: HID: core: do not scan constant input report |
| |
| From: Benjamin Tissoires <benjamin.tissoires@redhat.com> |
| |
| commit e24d0d399b2fce71b627043e900ef28283850482 upstream. |
| |
| The Microsoft Surface Type/Touch Cover 2 is a fancy device which advertised |
| itself as a multitouch device but with constant input reports. |
| This way, hid_scan_report() gives the group MULTITOUCH to it, but |
| hid-multitouch can not handle it due to the constant collection ignored |
| by hid-input. |
| |
| To prevent such crap in the future, and while we do not fix this particular |
| device, make the scan_report coherent with hid-input.c, and ignore constant |
| input reports. |
| |
| Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> |
| Signed-off-by: Jiri Kosina <jkosina@suse.cz> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/hid/hid-core.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/drivers/hid/hid-core.c |
| +++ b/drivers/hid/hid-core.c |
| @@ -718,6 +718,9 @@ static int hid_scan_main(struct hid_pars |
| case HID_MAIN_ITEM_TAG_END_COLLECTION: |
| break; |
| case HID_MAIN_ITEM_TAG_INPUT: |
| + /* ignore constant inputs, they will be ignored by hid-input */ |
| + if (data & HID_MAIN_ITEM_CONSTANT) |
| + break; |
| for (i = 0; i < parser->local.usage_index; i++) |
| hid_scan_input_usage(parser, parser->local.usage[i]); |
| break; |