rk: revert to v3.10
[firefly-linux-kernel-4.4.55.git] / drivers / bluetooth / btusb.c
index 537ad6897784b88859e961d38f9bb7c51cce821f..7a7e5f8ecadcffef990eaea6c2fafdcf94ff4c4b 100644 (file)
@@ -49,7 +49,6 @@ static struct usb_driver btusb_driver;
 #define BTUSB_WRONG_SCO_MTU    0x40
 #define BTUSB_ATH3012          0x80
 #define BTUSB_INTEL            0x100
-#define BTUSB_INTEL_BOOT       0x200
 
 static struct usb_device_id btusb_table[] = {
        /* Generic Bluetooth USB device */
@@ -58,9 +57,6 @@ static struct usb_device_id btusb_table[] = {
        /* Apple-specific (Broadcom) devices */
        { USB_VENDOR_AND_INTERFACE_INFO(0x05ac, 0xff, 0x01, 0x01) },
 
-       /* MediaTek MT76x0E */
-       { USB_DEVICE(0x0e8d, 0x763f) },
-
        /* Broadcom SoftSailing reporting vendor specific */
        { USB_DEVICE(0x0a5c, 0x21e1) },
 
@@ -103,7 +99,6 @@ static struct usb_device_id btusb_table[] = {
 
        /* Broadcom BCM20702A0 */
        { USB_DEVICE(0x0b05, 0x17b5) },
-       { USB_DEVICE(0x0b05, 0x17cb) },
        { USB_DEVICE(0x04ca, 0x2003) },
        { USB_DEVICE(0x0489, 0xe042) },
        { USB_DEVICE(0x413c, 0x8197) },
@@ -114,13 +109,6 @@ static struct usb_device_id btusb_table[] = {
        /*Broadcom devices with vendor specific id */
        { USB_VENDOR_AND_INTERFACE_INFO(0x0a5c, 0xff, 0x01, 0x01) },
 
-       /* IMC Networks - Broadcom based */
-       { USB_VENDOR_AND_INTERFACE_INFO(0x13d3, 0xff, 0x01, 0x01) },
-
-       /* Intel Bluetooth USB Bootloader (RAM module) */
-       { USB_DEVICE(0x8087, 0x0a5a),
-         .driver_info = BTUSB_INTEL_BOOT | BTUSB_BROKEN_ISOC },
-
        { }     /* Terminating entry */
 };
 
@@ -149,28 +137,20 @@ static struct usb_device_id blacklist_table[] = {
        { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x0cf3, 0x3008), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 },
-       { USB_DEVICE(0x0cf3, 0x311e), .driver_info = BTUSB_ATH3012 },
-       { USB_DEVICE(0x0cf3, 0x311f), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x0cf3, 0x817a), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 },
-       { USB_DEVICE(0x04ca, 0x3007), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 },
-       { USB_DEVICE(0x0cf3, 0xe005), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x13d3, 0x3393), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x0489, 0xe04e), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x0489, 0xe056), .driver_info = BTUSB_ATH3012 },
        { USB_DEVICE(0x0489, 0xe04d), .driver_info = BTUSB_ATH3012 },
-       { USB_DEVICE(0x04c5, 0x1330), .driver_info = BTUSB_ATH3012 },
-       { USB_DEVICE(0x13d3, 0x3402), .driver_info = BTUSB_ATH3012 },
-       { USB_DEVICE(0x0cf3, 0x3121), .driver_info = BTUSB_ATH3012 },
-       { USB_DEVICE(0x0cf3, 0xe003), .driver_info = BTUSB_ATH3012 },
 
        /* Atheros AR5BBU12 with sflash firmware */
        { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
@@ -312,9 +292,6 @@ static void btusb_intr_complete(struct urb *urb)
                        BT_ERR("%s corrupted event packet", hdev->name);
                        hdev->stat.err_rx++;
                }
-       } else if (urb->status == -ENOENT) {
-               /* Avoid suspend failed when usb_kill_urb */
-               return;
        }
 
        if (!test_bit(BTUSB_INTR_RUNNING, &data->flags))
@@ -403,9 +380,6 @@ static void btusb_bulk_complete(struct urb *urb)
                        BT_ERR("%s corrupted ACL packet", hdev->name);
                        hdev->stat.err_rx++;
                }
-       } else if (urb->status == -ENOENT) {
-               /* Avoid suspend failed when usb_kill_urb */
-               return;
        }
 
        if (!test_bit(BTUSB_BULK_RUNNING, &data->flags))
@@ -500,9 +474,6 @@ static void btusb_isoc_complete(struct urb *urb)
                                hdev->stat.err_rx++;
                        }
                }
-       } else if (urb->status == -ENOENT) {
-               /* Avoid suspend failed when usb_kill_urb */
-               return;
        }
 
        if (!test_bit(BTUSB_ISOC_RUNNING, &data->flags))
@@ -1121,7 +1092,7 @@ static int btusb_setup_intel_patching(struct hci_dev *hdev,
        if (IS_ERR(skb)) {
                BT_ERR("%s sending Intel patch command (0x%4.4x) failed (%ld)",
                       hdev->name, cmd->opcode, PTR_ERR(skb));
-               return PTR_ERR(skb);
+               return -PTR_ERR(skb);
        }
 
        /* It ensures that the returned event matches the event data read from
@@ -1173,7 +1144,7 @@ static int btusb_setup_intel(struct hci_dev *hdev)
        if (IS_ERR(skb)) {
                BT_ERR("%s sending initial HCI reset command failed (%ld)",
                       hdev->name, PTR_ERR(skb));
-               return PTR_ERR(skb);
+               return -PTR_ERR(skb);
        }
        kfree_skb(skb);
 
@@ -1187,7 +1158,7 @@ static int btusb_setup_intel(struct hci_dev *hdev)
        if (IS_ERR(skb)) {
                BT_ERR("%s reading Intel fw version command failed (%ld)",
                       hdev->name, PTR_ERR(skb));
-               return PTR_ERR(skb);
+               return -PTR_ERR(skb);
        }
 
        if (skb->len != sizeof(*ver)) {
@@ -1234,8 +1205,6 @@ static int btusb_setup_intel(struct hci_dev *hdev)
        }
        fw_ptr = fw->data;
 
-       kfree_skb(skb);
-
        /* This Intel specific command enables the manufacturer mode of the
         * controller.
         *
@@ -1247,7 +1216,7 @@ static int btusb_setup_intel(struct hci_dev *hdev)
                BT_ERR("%s entering Intel manufacturer mode failed (%ld)",
                       hdev->name, PTR_ERR(skb));
                release_firmware(fw);
-               return PTR_ERR(skb);
+               return -PTR_ERR(skb);
        }
 
        if (skb->data[0]) {
@@ -1304,7 +1273,7 @@ static int btusb_setup_intel(struct hci_dev *hdev)
        if (IS_ERR(skb)) {
                BT_ERR("%s exiting Intel manufacturer mode failed (%ld)",
                       hdev->name, PTR_ERR(skb));
-               return PTR_ERR(skb);
+               return -PTR_ERR(skb);
        }
        kfree_skb(skb);
 
@@ -1320,7 +1289,7 @@ exit_mfg_disable:
        if (IS_ERR(skb)) {
                BT_ERR("%s exiting Intel manufacturer mode failed (%ld)",
                       hdev->name, PTR_ERR(skb));
-               return PTR_ERR(skb);
+               return -PTR_ERR(skb);
        }
        kfree_skb(skb);
 
@@ -1338,7 +1307,7 @@ exit_mfg_deactivate:
        if (IS_ERR(skb)) {
                BT_ERR("%s exiting Intel manufacturer mode failed (%ld)",
                       hdev->name, PTR_ERR(skb));
-               return PTR_ERR(skb);
+               return -PTR_ERR(skb);
        }
        kfree_skb(skb);
 
@@ -1456,9 +1425,6 @@ static int btusb_probe(struct usb_interface *intf,
        if (id->driver_info & BTUSB_INTEL)
                hdev->setup = btusb_setup_intel;
 
-       if (id->driver_info & BTUSB_INTEL_BOOT)
-               set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks);
-
        /* Interface numbers are hardcoded in the specification */
        data->isoc = usb_ifnum_to_if(data->udev, 1);