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:
parent
223683a54b
commit
3a5ef20c97
|
@ -1807,6 +1807,18 @@ static int btusb_probe(struct usb_interface *intf,
|
||||||
data->isoc = NULL;
|
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) {
|
if (data->isoc) {
|
||||||
err = usb_driver_claim_interface(&btusb_driver,
|
err = usb_driver_claim_interface(&btusb_driver,
|
||||||
data->isoc, data);
|
data->isoc, data);
|
||||||
|
|
Loading…
Reference in New Issue