diff options
Diffstat (limited to 'drivers/bluetooth/btusb.c')
| -rw-r--r-- | drivers/bluetooth/btusb.c | 22 | 
1 files changed, 8 insertions, 14 deletions
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 808c249845db..29977ebfd031 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -23,6 +23,7 @@  #include <linux/module.h>  #include <linux/usb.h> +#include <linux/usb/quirks.h>  #include <linux/firmware.h>  #include <linux/of_device.h>  #include <linux/of_irq.h> @@ -264,6 +265,7 @@ static const struct usb_device_id blacklist_table[] = {  	/* QCA ROME chipset */  	{ USB_DEVICE(0x0cf3, 0xe007), .driver_info = BTUSB_QCA_ROME },  	{ USB_DEVICE(0x0cf3, 0xe009), .driver_info = BTUSB_QCA_ROME }, +	{ USB_DEVICE(0x0cf3, 0xe010), .driver_info = BTUSB_QCA_ROME },  	{ USB_DEVICE(0x0cf3, 0xe300), .driver_info = BTUSB_QCA_ROME },  	{ USB_DEVICE(0x0cf3, 0xe301), .driver_info = BTUSB_QCA_ROME },  	{ USB_DEVICE(0x0cf3, 0xe360), .driver_info = BTUSB_QCA_ROME }, @@ -271,6 +273,7 @@ static const struct usb_device_id blacklist_table[] = {  	{ USB_DEVICE(0x0489, 0xe09f), .driver_info = BTUSB_QCA_ROME },  	{ USB_DEVICE(0x0489, 0xe0a2), .driver_info = BTUSB_QCA_ROME },  	{ USB_DEVICE(0x04ca, 0x3011), .driver_info = BTUSB_QCA_ROME }, +	{ USB_DEVICE(0x04ca, 0x3015), .driver_info = BTUSB_QCA_ROME },  	{ USB_DEVICE(0x04ca, 0x3016), .driver_info = BTUSB_QCA_ROME },  	/* Broadcom BCM2035 */ @@ -388,9 +391,8 @@ static const struct usb_device_id blacklist_table[] = {  #define BTUSB_FIRMWARE_LOADED	7  #define BTUSB_FIRMWARE_FAILED	8  #define BTUSB_BOOTING		9 -#define BTUSB_RESET_RESUME	10 -#define BTUSB_DIAG_RUNNING	11 -#define BTUSB_OOB_WAKE_ENABLED	12 +#define BTUSB_DIAG_RUNNING	10 +#define BTUSB_OOB_WAKE_ENABLED	11  struct btusb_data {  	struct hci_dev       *hdev; @@ -3121,9 +3123,9 @@ static int btusb_probe(struct usb_interface *intf,  		/* QCA Rome devices lose their updated firmware over suspend,  		 * but the USB hub doesn't notice any status change. -		 * Explicitly request a device reset on resume. +		 * explicitly request a device reset on resume.  		 */ -		set_bit(BTUSB_RESET_RESUME, &data->flags); +		interface_to_usbdev(intf)->quirks |= USB_QUIRK_RESET_RESUME;  	}  #ifdef CONFIG_BT_HCIBTUSB_RTL @@ -3134,7 +3136,7 @@ static int btusb_probe(struct usb_interface *intf,  		 * but the USB hub doesn't notice any status change.  		 * Explicitly request a device reset on resume.  		 */ -		set_bit(BTUSB_RESET_RESUME, &data->flags); +		interface_to_usbdev(intf)->quirks |= USB_QUIRK_RESET_RESUME;  	}  #endif @@ -3303,14 +3305,6 @@ static int btusb_suspend(struct usb_interface *intf, pm_message_t message)  		enable_irq(data->oob_wake_irq);  	} -	/* Optionally request a device reset on resume, but only when -	 * wakeups are disabled. If wakeups are enabled we assume the -	 * device will stay powered up throughout suspend. -	 */ -	if (test_bit(BTUSB_RESET_RESUME, &data->flags) && -	    !device_may_wakeup(&data->udev->dev)) -		data->udev->reset_resume = 1; -  	return 0;  }  | 
