aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth/btintel.c
diff options
context:
space:
mode:
authorTedd Ho-Jeong An <tedd.an@intel.com>2021-08-04 17:32:16 -0700
committerMarcel Holtmann <marcel@holtmann.org>2021-08-05 16:03:30 +0200
commit3df4dfbec0f291e2b6efbe7b1c46ba58111ea3cd (patch)
tree89271dee1accfe5b561dfcf7d5a427d070d555ce /drivers/bluetooth/btintel.c
parentBluetooth: btintel: Refactoring setup routine for bootloader devices (diff)
downloadlinux-dev-3df4dfbec0f291e2b6efbe7b1c46ba58111ea3cd.tar.xz
linux-dev-3df4dfbec0f291e2b6efbe7b1c46ba58111ea3cd.zip
Bluetooth: btintel: Move hci quirks to setup routine
This patch moves the hci quirks for Intel devices into the setup routines and cleaned up the driver flags. Signed-off-by: Tedd Ho-Jeong An <tedd.an@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'drivers/bluetooth/btintel.c')
-rw-r--r--drivers/bluetooth/btintel.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c
index 8593b27b7c4a..421357831f3d 100644
--- a/drivers/bluetooth/btintel.c
+++ b/drivers/bluetooth/btintel.c
@@ -2223,6 +2223,11 @@ static int btintel_setup_combined(struct hci_dev *hdev)
goto exit_error;
}
+ /* Apply the common HCI quirks for Intel device */
+ set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks);
+ set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
+ set_bit(HCI_QUIRK_NON_PERSISTENT_DIAG, &hdev->quirks);
+
/* For Legacy device, check the HW platform value and size */
if (skb->len == sizeof(ver) && skb->data[1] == 0x37) {
bt_dev_dbg(hdev, "Read the legacy Intel version information");
@@ -2245,6 +2250,15 @@ static int btintel_setup_combined(struct hci_dev *hdev)
/* Legacy ROM product */
btintel_set_flag(hdev, INTEL_ROM_LEGACY);
+ /* Apply the device specific HCI quirks
+ *
+ * WBS for SdP - SdP and Stp have a same hw_varaint but
+ * different fw_variant
+ */
+ if (ver.hw_variant == 0x08 && ver.fw_variant == 0x22)
+ set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED,
+ &hdev->quirks);
+
/* These devices have an issue with LED which doesn't
* go off immediately during shutdown. Set the flag
* here to send the LED OFF command during shutdown.
@@ -2259,6 +2273,18 @@ static int btintel_setup_combined(struct hci_dev *hdev)
case 0x12: /* ThP */
case 0x13: /* HrP */
case 0x14: /* CcP */
+ /* Apply the device specific HCI quirks
+ *
+ * All Legacy bootloader devices support WBS
+ */
+ set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED,
+ &hdev->quirks);
+
+ /* Valid LE States quirk for JfP/ThP familiy */
+ if (ver.hw_variant == 0x11 || ver.hw_variant == 0x12)
+ set_bit(HCI_QUIRK_VALID_LE_STATES,
+ &hdev->quirks);
+
err = btintel_bootloader_setup(hdev, &ver);
break;
default:
@@ -2298,6 +2324,16 @@ static int btintel_setup_combined(struct hci_dev *hdev)
/* Display version information of TLV type */
btintel_version_info_tlv(hdev, &ver_tlv);
+ /* Apply the device specific HCI quirks for TLV based devices
+ *
+ * All TLV based devices support WBS
+ */
+ set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, &hdev->quirks);
+
+ /* Valid LE States quirk for GfP */
+ if (INTEL_HW_VARIANT(ver_tlv.cnvi_bt) == 0x18)
+ set_bit(HCI_QUIRK_VALID_LE_STATES, &hdev->quirks);
+
err = btintel_bootloader_setup_tlv(hdev, &ver_tlv);
break;
default: