Message ID | 20220303221709.387865-3-luiz.dentz@gmail.com |
---|---|
State | New |
Headers | show |
Series | [1/3] Bluetooth: btusb: Make use of of BIT macro to declare flags | expand |
Hi Luiz, > This adds BTUSB_BROKEN_ENHANCED_SETUP_SCO flag which can be used to set > HCI_QUIRK_BROKEN_ENHANCED_SETUP_SCO disabling the use of > HCI_OP_ENHANCED_SETUP_SYNC_CONN command. > > Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> > --- > drivers/bluetooth/btusb.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c > index 34d008380fdb..d09a6a712632 100644 > --- a/drivers/bluetooth/btusb.c > +++ b/drivers/bluetooth/btusb.c > @@ -63,6 +63,7 @@ static struct usb_driver btusb_driver; > #define BTUSB_INTEL_BROKEN_SHUTDOWN_LED BIT(24) > #define BTUSB_INTEL_BROKEN_INITIAL_NCMD BIT(25) > #define BTUSB_INTEL_NO_WBS_SUPPORT BIT(26) > +#define BTUSB_BROKEN_ENHANCED_SETUP_SCO BIT(27) > > static const struct usb_device_id btusb_table[] = { > /* Generic Bluetooth USB device */ > @@ -3848,6 +3849,9 @@ static int btusb_probe(struct usb_interface *intf, > set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks); > } > > + if (id->driver_info & BTUSB_BROKEN_ENHANCED_SETUP_SCO) > + set_bit(HCI_QUIRK_BROKEN_ENHANCED_SETUP_SCO, &hdev->quirks); > + > if (id->driver_info & BTUSB_CSR) { > struct usb_device *udev = data->udev; > u16 bcdDevice = le16_to_cpu(udev->descriptor.bcdDevice); I am only adding this if I see the need to do this via USB VID/PID. Most drivers should make the decision on the vendor setup callback. Or FIX their broken firmware. Regards Marcel
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 34d008380fdb..d09a6a712632 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -63,6 +63,7 @@ static struct usb_driver btusb_driver; #define BTUSB_INTEL_BROKEN_SHUTDOWN_LED BIT(24) #define BTUSB_INTEL_BROKEN_INITIAL_NCMD BIT(25) #define BTUSB_INTEL_NO_WBS_SUPPORT BIT(26) +#define BTUSB_BROKEN_ENHANCED_SETUP_SCO BIT(27) static const struct usb_device_id btusb_table[] = { /* Generic Bluetooth USB device */ @@ -3848,6 +3849,9 @@ static int btusb_probe(struct usb_interface *intf, set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks); } + if (id->driver_info & BTUSB_BROKEN_ENHANCED_SETUP_SCO) + set_bit(HCI_QUIRK_BROKEN_ENHANCED_SETUP_SCO, &hdev->quirks); + if (id->driver_info & BTUSB_CSR) { struct usb_device *udev = data->udev; u16 bcdDevice = le16_to_cpu(udev->descriptor.bcdDevice);