diff options
Diffstat (limited to 'drivers/bluetooth/btusb.c')
-rw-r--r-- | drivers/bluetooth/btusb.c | 17 |
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 | ||