Bluetooth: btintel: Fix WBS setting for Intel legacy ROM products
This patch adds the flag to identify the Intel legacy ROM products that
don't support WBS like WP and StP.
Fixes: 3df4dfbec0
("Bluetooth: btintel: Move hci quirks to setup routine")
Signed-off-by: Tedd Ho-Jeong An <tedd.an@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
8d7f167752
commit
55235304c2
@ -2428,10 +2428,15 @@ static int btintel_setup_combined(struct hci_dev *hdev)
|
|||||||
|
|
||||||
/* Apply the device specific HCI quirks
|
/* Apply the device specific HCI quirks
|
||||||
*
|
*
|
||||||
* WBS for SdP - SdP and Stp have a same hw_varaint but
|
* WBS for SdP - For the Legacy ROM products, only SdP
|
||||||
* different fw_variant
|
* supports the WBS. But the version information is not
|
||||||
|
* enough to use here because the StP2 and SdP have same
|
||||||
|
* hw_variant and fw_variant. So, this flag is set by
|
||||||
|
* the transport driver (btusb) based on the HW info
|
||||||
|
* (idProduct)
|
||||||
*/
|
*/
|
||||||
if (ver.hw_variant == 0x08 && ver.fw_variant == 0x22)
|
if (!btintel_test_flag(hdev,
|
||||||
|
INTEL_ROM_LEGACY_NO_WBS_SUPPORT))
|
||||||
set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED,
|
set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED,
|
||||||
&hdev->quirks);
|
&hdev->quirks);
|
||||||
|
|
||||||
|
@ -152,6 +152,7 @@ enum {
|
|||||||
INTEL_BROKEN_INITIAL_NCMD,
|
INTEL_BROKEN_INITIAL_NCMD,
|
||||||
INTEL_BROKEN_SHUTDOWN_LED,
|
INTEL_BROKEN_SHUTDOWN_LED,
|
||||||
INTEL_ROM_LEGACY,
|
INTEL_ROM_LEGACY,
|
||||||
|
INTEL_ROM_LEGACY_NO_WBS_SUPPORT,
|
||||||
|
|
||||||
__INTEL_NUM_FLAGS,
|
__INTEL_NUM_FLAGS,
|
||||||
};
|
};
|
||||||
|
@ -62,6 +62,7 @@ static struct usb_driver btusb_driver;
|
|||||||
#define BTUSB_QCA_WCN6855 0x1000000
|
#define BTUSB_QCA_WCN6855 0x1000000
|
||||||
#define BTUSB_INTEL_BROKEN_SHUTDOWN_LED 0x2000000
|
#define BTUSB_INTEL_BROKEN_SHUTDOWN_LED 0x2000000
|
||||||
#define BTUSB_INTEL_BROKEN_INITIAL_NCMD 0x4000000
|
#define BTUSB_INTEL_BROKEN_INITIAL_NCMD 0x4000000
|
||||||
|
#define BTUSB_INTEL_NO_WBS_SUPPORT 0x8000000
|
||||||
|
|
||||||
static const struct usb_device_id btusb_table[] = {
|
static const struct usb_device_id btusb_table[] = {
|
||||||
/* Generic Bluetooth USB device */
|
/* Generic Bluetooth USB device */
|
||||||
@ -385,9 +386,11 @@ static const struct usb_device_id blacklist_table[] = {
|
|||||||
{ USB_DEVICE(0x8087, 0x0033), .driver_info = BTUSB_INTEL_COMBINED },
|
{ USB_DEVICE(0x8087, 0x0033), .driver_info = BTUSB_INTEL_COMBINED },
|
||||||
{ USB_DEVICE(0x8087, 0x07da), .driver_info = BTUSB_CSR },
|
{ USB_DEVICE(0x8087, 0x07da), .driver_info = BTUSB_CSR },
|
||||||
{ USB_DEVICE(0x8087, 0x07dc), .driver_info = BTUSB_INTEL_COMBINED |
|
{ USB_DEVICE(0x8087, 0x07dc), .driver_info = BTUSB_INTEL_COMBINED |
|
||||||
|
BTUSB_INTEL_NO_WBS_SUPPORT |
|
||||||
BTUSB_INTEL_BROKEN_INITIAL_NCMD |
|
BTUSB_INTEL_BROKEN_INITIAL_NCMD |
|
||||||
BTUSB_INTEL_BROKEN_SHUTDOWN_LED },
|
BTUSB_INTEL_BROKEN_SHUTDOWN_LED },
|
||||||
{ USB_DEVICE(0x8087, 0x0a2a), .driver_info = BTUSB_INTEL_COMBINED |
|
{ USB_DEVICE(0x8087, 0x0a2a), .driver_info = BTUSB_INTEL_COMBINED |
|
||||||
|
BTUSB_INTEL_NO_WBS_SUPPORT |
|
||||||
BTUSB_INTEL_BROKEN_SHUTDOWN_LED },
|
BTUSB_INTEL_BROKEN_SHUTDOWN_LED },
|
||||||
{ USB_DEVICE(0x8087, 0x0a2b), .driver_info = BTUSB_INTEL_COMBINED },
|
{ USB_DEVICE(0x8087, 0x0a2b), .driver_info = BTUSB_INTEL_COMBINED },
|
||||||
{ USB_DEVICE(0x8087, 0x0aa7), .driver_info = BTUSB_INTEL_COMBINED |
|
{ USB_DEVICE(0x8087, 0x0aa7), .driver_info = BTUSB_INTEL_COMBINED |
|
||||||
@ -3737,6 +3740,9 @@ static int btusb_probe(struct usb_interface *intf,
|
|||||||
hdev->send = btusb_send_frame_intel;
|
hdev->send = btusb_send_frame_intel;
|
||||||
hdev->cmd_timeout = btusb_intel_cmd_timeout;
|
hdev->cmd_timeout = btusb_intel_cmd_timeout;
|
||||||
|
|
||||||
|
if (id->driver_info & BTUSB_INTEL_NO_WBS_SUPPORT)
|
||||||
|
btintel_set_flag(hdev, INTEL_ROM_LEGACY_NO_WBS_SUPPORT);
|
||||||
|
|
||||||
if (id->driver_info & BTUSB_INTEL_BROKEN_INITIAL_NCMD)
|
if (id->driver_info & BTUSB_INTEL_BROKEN_INITIAL_NCMD)
|
||||||
btintel_set_flag(hdev, INTEL_BROKEN_INITIAL_NCMD);
|
btintel_set_flag(hdev, INTEL_BROKEN_INITIAL_NCMD);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user