aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth/btusb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/bluetooth/btusb.c')
-rw-r--r--drivers/bluetooth/btusb.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index d120a5c1c093..1da773f899a2 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -68,6 +68,9 @@ static struct usb_device_id btusb_table[] = {
68 /* Apple MacBookPro6,2 */ 68 /* Apple MacBookPro6,2 */
69 { USB_DEVICE(0x05ac, 0x8218) }, 69 { USB_DEVICE(0x05ac, 0x8218) },
70 70
71 /* Apple MacBookAir3,1, MacBookAir3,2 */
72 { USB_DEVICE(0x05ac, 0x821b) },
73
71 /* AVM BlueFRITZ! USB v2.0 */ 74 /* AVM BlueFRITZ! USB v2.0 */
72 { USB_DEVICE(0x057c, 0x3800) }, 75 { USB_DEVICE(0x057c, 0x3800) },
73 76
@@ -96,6 +99,9 @@ static struct usb_device_id blacklist_table[] = {
96 /* Broadcom BCM2033 without firmware */ 99 /* Broadcom BCM2033 without firmware */
97 { USB_DEVICE(0x0a5c, 0x2033), .driver_info = BTUSB_IGNORE }, 100 { USB_DEVICE(0x0a5c, 0x2033), .driver_info = BTUSB_IGNORE },
98 101
102 /* Atheros 3011 with sflash firmware */
103 { USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE },
104
99 /* Broadcom BCM2035 */ 105 /* Broadcom BCM2035 */
100 { USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU }, 106 { USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU },
101 { USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_WRONG_SCO_MTU }, 107 { USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_WRONG_SCO_MTU },
@@ -236,7 +242,8 @@ static void btusb_intr_complete(struct urb *urb)
236 242
237 err = usb_submit_urb(urb, GFP_ATOMIC); 243 err = usb_submit_urb(urb, GFP_ATOMIC);
238 if (err < 0) { 244 if (err < 0) {
239 BT_ERR("%s urb %p failed to resubmit (%d)", 245 if (err != -EPERM)
246 BT_ERR("%s urb %p failed to resubmit (%d)",
240 hdev->name, urb, -err); 247 hdev->name, urb, -err);
241 usb_unanchor_urb(urb); 248 usb_unanchor_urb(urb);
242 } 249 }
@@ -320,7 +327,8 @@ static void btusb_bulk_complete(struct urb *urb)
320 327
321 err = usb_submit_urb(urb, GFP_ATOMIC); 328 err = usb_submit_urb(urb, GFP_ATOMIC);
322 if (err < 0) { 329 if (err < 0) {
323 BT_ERR("%s urb %p failed to resubmit (%d)", 330 if (err != -EPERM)
331 BT_ERR("%s urb %p failed to resubmit (%d)",
324 hdev->name, urb, -err); 332 hdev->name, urb, -err);
325 usb_unanchor_urb(urb); 333 usb_unanchor_urb(urb);
326 } 334 }
@@ -409,7 +417,8 @@ static void btusb_isoc_complete(struct urb *urb)
409 417
410 err = usb_submit_urb(urb, GFP_ATOMIC); 418 err = usb_submit_urb(urb, GFP_ATOMIC);
411 if (err < 0) { 419 if (err < 0) {
412 BT_ERR("%s urb %p failed to resubmit (%d)", 420 if (err != -EPERM)
421 BT_ERR("%s urb %p failed to resubmit (%d)",
413 hdev->name, urb, -err); 422 hdev->name, urb, -err);
414 usb_unanchor_urb(urb); 423 usb_unanchor_urb(urb);
415 } 424 }
@@ -1029,6 +1038,8 @@ static int btusb_probe(struct usb_interface *intf,
1029 1038
1030 usb_set_intfdata(intf, data); 1039 usb_set_intfdata(intf, data);
1031 1040
1041 usb_enable_autosuspend(interface_to_usbdev(intf));
1042
1032 return 0; 1043 return 0;
1033} 1044}
1034 1045