diff options
Diffstat (limited to 'drivers/hid/usbhid/hid-core.c')
| -rw-r--r-- | drivers/hid/usbhid/hid-core.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index 599041a7f670..5489eab3a6bd 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c | |||
| @@ -807,9 +807,10 @@ static int usbhid_output_raw_report(struct hid_device *hid, __u8 *buf, size_t co | |||
| 807 | struct usb_host_interface *interface = intf->cur_altsetting; | 807 | struct usb_host_interface *interface = intf->cur_altsetting; |
| 808 | int ret; | 808 | int ret; |
| 809 | 809 | ||
| 810 | if (usbhid->urbout) { | 810 | if (usbhid->urbout && report_type != HID_FEATURE_REPORT) { |
| 811 | int actual_length; | 811 | int actual_length; |
| 812 | int skipped_report_id = 0; | 812 | int skipped_report_id = 0; |
| 813 | |||
| 813 | if (buf[0] == 0x0) { | 814 | if (buf[0] == 0x0) { |
| 814 | /* Don't send the Report ID */ | 815 | /* Don't send the Report ID */ |
| 815 | buf++; | 816 | buf++; |
| @@ -1469,9 +1470,6 @@ static int __init hid_init(void) | |||
| 1469 | retval = usbhid_quirks_init(quirks_param); | 1470 | retval = usbhid_quirks_init(quirks_param); |
| 1470 | if (retval) | 1471 | if (retval) |
| 1471 | goto usbhid_quirks_init_fail; | 1472 | goto usbhid_quirks_init_fail; |
| 1472 | retval = hiddev_init(); | ||
| 1473 | if (retval) | ||
| 1474 | goto hiddev_init_fail; | ||
| 1475 | retval = usb_register(&hid_driver); | 1473 | retval = usb_register(&hid_driver); |
| 1476 | if (retval) | 1474 | if (retval) |
| 1477 | goto usb_register_fail; | 1475 | goto usb_register_fail; |
| @@ -1479,8 +1477,6 @@ static int __init hid_init(void) | |||
| 1479 | 1477 | ||
| 1480 | return 0; | 1478 | return 0; |
| 1481 | usb_register_fail: | 1479 | usb_register_fail: |
| 1482 | hiddev_exit(); | ||
| 1483 | hiddev_init_fail: | ||
| 1484 | usbhid_quirks_exit(); | 1480 | usbhid_quirks_exit(); |
| 1485 | usbhid_quirks_init_fail: | 1481 | usbhid_quirks_init_fail: |
| 1486 | hid_unregister_driver(&hid_usb_driver); | 1482 | hid_unregister_driver(&hid_usb_driver); |
| @@ -1493,7 +1489,6 @@ no_queue: | |||
| 1493 | static void __exit hid_exit(void) | 1489 | static void __exit hid_exit(void) |
| 1494 | { | 1490 | { |
| 1495 | usb_deregister(&hid_driver); | 1491 | usb_deregister(&hid_driver); |
| 1496 | hiddev_exit(); | ||
| 1497 | usbhid_quirks_exit(); | 1492 | usbhid_quirks_exit(); |
| 1498 | hid_unregister_driver(&hid_usb_driver); | 1493 | hid_unregister_driver(&hid_usb_driver); |
| 1499 | destroy_workqueue(resumption_waker); | 1494 | destroy_workqueue(resumption_waker); |
