diff options
Diffstat (limited to 'drivers/hid/hid-core.c')
-rw-r--r-- | drivers/hid/hid-core.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index 9e8064205bc7..da52279de939 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c | |||
@@ -718,6 +718,9 @@ static int hid_scan_main(struct hid_parser *parser, struct hid_item *item) | |||
718 | case HID_MAIN_ITEM_TAG_END_COLLECTION: | 718 | case HID_MAIN_ITEM_TAG_END_COLLECTION: |
719 | break; | 719 | break; |
720 | case HID_MAIN_ITEM_TAG_INPUT: | 720 | case HID_MAIN_ITEM_TAG_INPUT: |
721 | /* ignore constant inputs, they will be ignored by hid-input */ | ||
722 | if (data & HID_MAIN_ITEM_CONSTANT) | ||
723 | break; | ||
721 | for (i = 0; i < parser->local.usage_index; i++) | 724 | for (i = 0; i < parser->local.usage_index; i++) |
722 | hid_scan_input_usage(parser, parser->local.usage[i]); | 725 | hid_scan_input_usage(parser, parser->local.usage[i]); |
723 | break; | 726 | break; |
@@ -1250,7 +1253,8 @@ EXPORT_SYMBOL_GPL(hid_output_report); | |||
1250 | 1253 | ||
1251 | static int hid_report_len(struct hid_report *report) | 1254 | static int hid_report_len(struct hid_report *report) |
1252 | { | 1255 | { |
1253 | return ((report->size - 1) >> 3) + 1 + (report->id > 0) + 7; | 1256 | /* equivalent to DIV_ROUND_UP(report->size, 8) + !!(report->id > 0) */ |
1257 | return ((report->size - 1) >> 3) + 1 + (report->id > 0); | ||
1254 | } | 1258 | } |
1255 | 1259 | ||
1256 | /* | 1260 | /* |
@@ -1263,7 +1267,7 @@ u8 *hid_alloc_report_buf(struct hid_report *report, gfp_t flags) | |||
1263 | * of implement() working on 8 byte chunks | 1267 | * of implement() working on 8 byte chunks |
1264 | */ | 1268 | */ |
1265 | 1269 | ||
1266 | int len = hid_report_len(report); | 1270 | int len = hid_report_len(report) + 7; |
1267 | 1271 | ||
1268 | return kmalloc(len, flags); | 1272 | return kmalloc(len, flags); |
1269 | } | 1273 | } |
@@ -1821,8 +1825,6 @@ static const struct hid_device_id hid_have_special_driver[] = { | |||
1821 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_USB) }, | 1825 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_USB) }, |
1822 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3K) }, | 1826 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3K) }, |
1823 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0) }, | 1827 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0) }, |
1824 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_2) }, | ||
1825 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TOUCH_COVER_2) }, | ||
1826 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_OFFICE_KB) }, | 1828 | { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_OFFICE_KB) }, |
1827 | { HID_USB_DEVICE(USB_VENDOR_ID_MONTEREY, USB_DEVICE_ID_GENIUS_KB29E) }, | 1829 | { HID_USB_DEVICE(USB_VENDOR_ID_MONTEREY, USB_DEVICE_ID_GENIUS_KB29E) }, |
1828 | { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN) }, | 1830 | { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN) }, |