diff options
Diffstat (limited to 'drivers/bluetooth/btusb.c')
-rw-r--r-- | drivers/bluetooth/btusb.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 91d13a9e8c65..9cbac6b445e1 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c | |||
@@ -72,9 +72,15 @@ static struct usb_device_id btusb_table[] = { | |||
72 | /* Apple MacBookAir3,1, MacBookAir3,2 */ | 72 | /* Apple MacBookAir3,1, MacBookAir3,2 */ |
73 | { USB_DEVICE(0x05ac, 0x821b) }, | 73 | { USB_DEVICE(0x05ac, 0x821b) }, |
74 | 74 | ||
75 | /* Apple MacBookAir4,1 */ | ||
76 | { USB_DEVICE(0x05ac, 0x821f) }, | ||
77 | |||
75 | /* Apple MacBookPro8,2 */ | 78 | /* Apple MacBookPro8,2 */ |
76 | { USB_DEVICE(0x05ac, 0x821a) }, | 79 | { USB_DEVICE(0x05ac, 0x821a) }, |
77 | 80 | ||
81 | /* Apple MacMini5,1 */ | ||
82 | { USB_DEVICE(0x05ac, 0x8281) }, | ||
83 | |||
78 | /* AVM BlueFRITZ! USB v2.0 */ | 84 | /* AVM BlueFRITZ! USB v2.0 */ |
79 | { USB_DEVICE(0x057c, 0x3800) }, | 85 | { USB_DEVICE(0x057c, 0x3800) }, |
80 | 86 | ||
@@ -106,6 +112,7 @@ static struct usb_device_id blacklist_table[] = { | |||
106 | /* Atheros 3011 with sflash firmware */ | 112 | /* Atheros 3011 with sflash firmware */ |
107 | { USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE }, | 113 | { USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE }, |
108 | { USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE }, | 114 | { USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE }, |
115 | { USB_DEVICE(0x0930, 0x0215), .driver_info = BTUSB_IGNORE }, | ||
109 | 116 | ||
110 | /* Atheros AR9285 Malbec with sflash firmware */ | 117 | /* Atheros AR9285 Malbec with sflash firmware */ |
111 | { USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE }, | 118 | { USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE }, |
@@ -256,7 +263,9 @@ static void btusb_intr_complete(struct urb *urb) | |||
256 | 263 | ||
257 | err = usb_submit_urb(urb, GFP_ATOMIC); | 264 | err = usb_submit_urb(urb, GFP_ATOMIC); |
258 | if (err < 0) { | 265 | if (err < 0) { |
259 | if (err != -EPERM) | 266 | /* -EPERM: urb is being killed; |
267 | * -ENODEV: device got disconnected */ | ||
268 | if (err != -EPERM && err != -ENODEV) | ||
260 | BT_ERR("%s urb %p failed to resubmit (%d)", | 269 | BT_ERR("%s urb %p failed to resubmit (%d)", |
261 | hdev->name, urb, -err); | 270 | hdev->name, urb, -err); |
262 | usb_unanchor_urb(urb); | 271 | usb_unanchor_urb(urb); |
@@ -341,7 +350,9 @@ static void btusb_bulk_complete(struct urb *urb) | |||
341 | 350 | ||
342 | err = usb_submit_urb(urb, GFP_ATOMIC); | 351 | err = usb_submit_urb(urb, GFP_ATOMIC); |
343 | if (err < 0) { | 352 | if (err < 0) { |
344 | if (err != -EPERM) | 353 | /* -EPERM: urb is being killed; |
354 | * -ENODEV: device got disconnected */ | ||
355 | if (err != -EPERM && err != -ENODEV) | ||
345 | BT_ERR("%s urb %p failed to resubmit (%d)", | 356 | BT_ERR("%s urb %p failed to resubmit (%d)", |
346 | hdev->name, urb, -err); | 357 | hdev->name, urb, -err); |
347 | usb_unanchor_urb(urb); | 358 | usb_unanchor_urb(urb); |
@@ -431,7 +442,9 @@ static void btusb_isoc_complete(struct urb *urb) | |||
431 | 442 | ||
432 | err = usb_submit_urb(urb, GFP_ATOMIC); | 443 | err = usb_submit_urb(urb, GFP_ATOMIC); |
433 | if (err < 0) { | 444 | if (err < 0) { |
434 | if (err != -EPERM) | 445 | /* -EPERM: urb is being killed; |
446 | * -ENODEV: device got disconnected */ | ||
447 | if (err != -EPERM && err != -ENODEV) | ||
435 | BT_ERR("%s urb %p failed to resubmit (%d)", | 448 | BT_ERR("%s urb %p failed to resubmit (%d)", |
436 | hdev->name, urb, -err); | 449 | hdev->name, urb, -err); |
437 | usb_unanchor_urb(urb); | 450 | usb_unanchor_urb(urb); |