Bluetooth: Handle Intel USB bootloader with buggy interrupt
The interrupt interface for the Intel USB bootloader devices is only enabled after receiving SetInterface(0, AltSetting=0). When this USB command is not send, then no HCI events will be received. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
Родитель
223683a54b
Коммит
3a5ef20c97
|
@ -1807,6 +1807,18 @@ static int btusb_probe(struct usb_interface *intf,
|
|||
data->isoc = NULL;
|
||||
}
|
||||
|
||||
if (id->driver_info & BTUSB_INTEL_BOOT) {
|
||||
/* A bug in the bootloader causes that interrupt interface is
|
||||
* only enabled after receiving SetInterface(0, AltSetting=0).
|
||||
*/
|
||||
err = usb_set_interface(data->udev, 0, 0);
|
||||
if (err < 0) {
|
||||
BT_ERR("failed to set interface 0, alt 0 %d", err);
|
||||
hci_free_dev(hdev);
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
if (data->isoc) {
|
||||
err = usb_driver_claim_interface(&btusb_driver,
|
||||
data->isoc, data);
|
||||
|
|
Загрузка…
Ссылка в новой задаче