diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 7db48ae65cd2..e87b2fd89288 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -426,6 +426,24 @@ static const struct dmi_system_id btusb_needs_reset_resume_table[] = { {} }; +static const struct dmi_system_id btusb_no_autosuspend_table[] = { + { + /* Dell Latitude E7240 (Intel 7260 device 8087:07dc) */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E7470"), + }, + }, + { + /* Dell Latitude E7470 (Intel 8260 device 8087:0a2b) */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E7470"), + }, + }, + {} +}; + #define BTUSB_MAX_ISOC_FRAMES 10 #define BTUSB_INTR_RUNNING 0 @@ -3153,6 +3171,9 @@ static int btusb_probe(struct usb_interface *intf, set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks); set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks); set_bit(HCI_QUIRK_NON_PERSISTENT_DIAG, &hdev->quirks); + + if (dmi_check_system(btusb_no_autosuspend_table)) + usb_autopm_get_interface(intf); } if (id->driver_info & BTUSB_INTEL_NEW) { @@ -3167,6 +3188,9 @@ static int btusb_probe(struct usb_interface *intf, set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks); set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks); set_bit(HCI_QUIRK_NON_PERSISTENT_DIAG, &hdev->quirks); + + if (dmi_check_system(btusb_no_autosuspend_table)) + usb_autopm_get_interface(intf); } if (id->driver_info & BTUSB_MARVELL)