diff options
Diffstat (limited to 'drivers/bluetooth/btusb.c')
-rw-r--r-- | drivers/bluetooth/btusb.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index c8c8b0b8d333..b937cc1e2c07 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c | |||
@@ -231,6 +231,7 @@ static const struct usb_device_id blacklist_table[] = { | |||
231 | { USB_DEVICE(0x0930, 0x0227), .driver_info = BTUSB_ATH3012 }, | 231 | { USB_DEVICE(0x0930, 0x0227), .driver_info = BTUSB_ATH3012 }, |
232 | { USB_DEVICE(0x0b05, 0x17d0), .driver_info = BTUSB_ATH3012 }, | 232 | { USB_DEVICE(0x0b05, 0x17d0), .driver_info = BTUSB_ATH3012 }, |
233 | { USB_DEVICE(0x0cf3, 0x0036), .driver_info = BTUSB_ATH3012 }, | 233 | { USB_DEVICE(0x0cf3, 0x0036), .driver_info = BTUSB_ATH3012 }, |
234 | { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 }, | ||
234 | { USB_DEVICE(0x0cf3, 0x3008), .driver_info = BTUSB_ATH3012 }, | 235 | { USB_DEVICE(0x0cf3, 0x3008), .driver_info = BTUSB_ATH3012 }, |
235 | { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 }, | 236 | { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 }, |
236 | { USB_DEVICE(0x0cf3, 0x311e), .driver_info = BTUSB_ATH3012 }, | 237 | { USB_DEVICE(0x0cf3, 0x311e), .driver_info = BTUSB_ATH3012 }, |
@@ -263,7 +264,6 @@ static const struct usb_device_id blacklist_table[] = { | |||
263 | { USB_DEVICE(0x0489, 0xe03c), .driver_info = BTUSB_ATH3012 }, | 264 | { USB_DEVICE(0x0489, 0xe03c), .driver_info = BTUSB_ATH3012 }, |
264 | 265 | ||
265 | /* QCA ROME chipset */ | 266 | /* QCA ROME chipset */ |
266 | { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_QCA_ROME }, | ||
267 | { USB_DEVICE(0x0cf3, 0xe007), .driver_info = BTUSB_QCA_ROME }, | 267 | { USB_DEVICE(0x0cf3, 0xe007), .driver_info = BTUSB_QCA_ROME }, |
268 | { USB_DEVICE(0x0cf3, 0xe009), .driver_info = BTUSB_QCA_ROME }, | 268 | { USB_DEVICE(0x0cf3, 0xe009), .driver_info = BTUSB_QCA_ROME }, |
269 | { USB_DEVICE(0x0cf3, 0xe010), .driver_info = BTUSB_QCA_ROME }, | 269 | { USB_DEVICE(0x0cf3, 0xe010), .driver_info = BTUSB_QCA_ROME }, |
@@ -399,6 +399,13 @@ static const struct dmi_system_id btusb_needs_reset_resume_table[] = { | |||
399 | DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 3060"), | 399 | DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 3060"), |
400 | }, | 400 | }, |
401 | }, | 401 | }, |
402 | { | ||
403 | /* Dell XPS 9360 (QCA ROME device 0cf3:e300) */ | ||
404 | .matches = { | ||
405 | DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
406 | DMI_MATCH(DMI_PRODUCT_NAME, "XPS 13 9360"), | ||
407 | }, | ||
408 | }, | ||
402 | {} | 409 | {} |
403 | }; | 410 | }; |
404 | 411 | ||
@@ -2852,6 +2859,12 @@ static int btusb_config_oob_wake(struct hci_dev *hdev) | |||
2852 | } | 2859 | } |
2853 | #endif | 2860 | #endif |
2854 | 2861 | ||
2862 | static void btusb_check_needs_reset_resume(struct usb_interface *intf) | ||
2863 | { | ||
2864 | if (dmi_check_system(btusb_needs_reset_resume_table)) | ||
2865 | interface_to_usbdev(intf)->quirks |= USB_QUIRK_RESET_RESUME; | ||
2866 | } | ||
2867 | |||
2855 | static int btusb_probe(struct usb_interface *intf, | 2868 | static int btusb_probe(struct usb_interface *intf, |
2856 | const struct usb_device_id *id) | 2869 | const struct usb_device_id *id) |
2857 | { | 2870 | { |
@@ -2974,9 +2987,6 @@ static int btusb_probe(struct usb_interface *intf, | |||
2974 | hdev->send = btusb_send_frame; | 2987 | hdev->send = btusb_send_frame; |
2975 | hdev->notify = btusb_notify; | 2988 | hdev->notify = btusb_notify; |
2976 | 2989 | ||
2977 | if (dmi_check_system(btusb_needs_reset_resume_table)) | ||
2978 | interface_to_usbdev(intf)->quirks |= USB_QUIRK_RESET_RESUME; | ||
2979 | |||
2980 | #ifdef CONFIG_PM | 2990 | #ifdef CONFIG_PM |
2981 | err = btusb_config_oob_wake(hdev); | 2991 | err = btusb_config_oob_wake(hdev); |
2982 | if (err) | 2992 | if (err) |
@@ -3064,6 +3074,7 @@ static int btusb_probe(struct usb_interface *intf, | |||
3064 | data->setup_on_usb = btusb_setup_qca; | 3074 | data->setup_on_usb = btusb_setup_qca; |
3065 | hdev->set_bdaddr = btusb_set_bdaddr_ath3012; | 3075 | hdev->set_bdaddr = btusb_set_bdaddr_ath3012; |
3066 | set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks); | 3076 | set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks); |
3077 | btusb_check_needs_reset_resume(intf); | ||
3067 | } | 3078 | } |
3068 | 3079 | ||
3069 | #ifdef CONFIG_BT_HCIBTUSB_RTL | 3080 | #ifdef CONFIG_BT_HCIBTUSB_RTL |