mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 10:49:33 +00:00
Bluetooth: btintel: Fix WBS setting for Intel legacy ROM products
[ Upstream commit55235304c2
] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
fb70014b89
commit
1d71c002b7
3 changed files with 15 additions and 3 deletions
|
@ -2428,10 +2428,15 @@ static int btintel_setup_combined(struct hci_dev *hdev)
|
|||
|
||||
/* Apply the device specific HCI quirks
|
||||
*
|
||||
* WBS for SdP - SdP and Stp have a same hw_varaint but
|
||||
* different fw_variant
|
||||
* WBS for SdP - For the Legacy ROM products, only SdP
|
||||
* 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,
|
||||
&hdev->quirks);
|
||||
|
||||
|
|
|
@ -152,6 +152,7 @@ enum {
|
|||
INTEL_BROKEN_INITIAL_NCMD,
|
||||
INTEL_BROKEN_SHUTDOWN_LED,
|
||||
INTEL_ROM_LEGACY,
|
||||
INTEL_ROM_LEGACY_NO_WBS_SUPPORT,
|
||||
|
||||
__INTEL_NUM_FLAGS,
|
||||
};
|
||||
|
|
|
@ -62,6 +62,7 @@ static struct usb_driver btusb_driver;
|
|||
#define BTUSB_QCA_WCN6855 0x1000000
|
||||
#define BTUSB_INTEL_BROKEN_SHUTDOWN_LED 0x2000000
|
||||
#define BTUSB_INTEL_BROKEN_INITIAL_NCMD 0x4000000
|
||||
#define BTUSB_INTEL_NO_WBS_SUPPORT 0x8000000
|
||||
|
||||
static const struct usb_device_id btusb_table[] = {
|
||||
/* 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, 0x07da), .driver_info = BTUSB_CSR },
|
||||
{ USB_DEVICE(0x8087, 0x07dc), .driver_info = BTUSB_INTEL_COMBINED |
|
||||
BTUSB_INTEL_NO_WBS_SUPPORT |
|
||||
BTUSB_INTEL_BROKEN_INITIAL_NCMD |
|
||||
BTUSB_INTEL_BROKEN_SHUTDOWN_LED },
|
||||
{ USB_DEVICE(0x8087, 0x0a2a), .driver_info = BTUSB_INTEL_COMBINED |
|
||||
BTUSB_INTEL_NO_WBS_SUPPORT |
|
||||
BTUSB_INTEL_BROKEN_SHUTDOWN_LED },
|
||||
{ USB_DEVICE(0x8087, 0x0a2b), .driver_info = BTUSB_INTEL_COMBINED },
|
||||
{ USB_DEVICE(0x8087, 0x0aa7), .driver_info = BTUSB_INTEL_COMBINED |
|
||||
|
@ -3743,6 +3746,9 @@ static int btusb_probe(struct usb_interface *intf,
|
|||
hdev->send = btusb_send_frame_intel;
|
||||
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)
|
||||
btintel_set_flag(hdev, INTEL_BROKEN_INITIAL_NCMD);
|
||||
|
||||
|
|
Loading…
Reference in a new issue