Skip to content

Commit c86c728

Browse files
tedd-anholtmann
authored andcommitted
Bluetooth: btintel: Fix the legacy bootloader returns tlv based version
From the ThP, it supports both legacy and TLV based HCI_Intel_Read_Version command after downloading the operational firmware, and it causes the driver to choose the wrong setup routines and missing firmware/ddc file. So, as a workaround, this patch checks the fw variant from the TLV based version, and if the device is legacy bootloader device, the legacy HCI_Intel_Read_Version command is used to get the legacy version information and run the legacy bootloader setup with it. Signed-off-by: Tedd Ho-Jeong An <[email protected]> Signed-off-by: Marcel Holtmann <[email protected]>
1 parent 0d8603b commit c86c728

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

drivers/bluetooth/btintel.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2312,6 +2312,27 @@ static int btintel_setup_combined(struct hci_dev *hdev)
23122312
* along.
23132313
*/
23142314
switch (INTEL_HW_VARIANT(ver_tlv.cnvi_bt)) {
2315+
case 0x11: /* JfP */
2316+
case 0x12: /* ThP */
2317+
case 0x13: /* HrP */
2318+
case 0x14: /* CcP */
2319+
/* Some legacy bootloader devices from JfP supports both old
2320+
* and TLV based HCI_Intel_Read_Version command. But we don't
2321+
* want to use the TLV based setup routines for those legacy
2322+
* bootloader device.
2323+
*
2324+
* Also, it is not easy to convert TLV based version from the
2325+
* legacy version format.
2326+
*
2327+
* So, as a workaround for those devices, use the legacy
2328+
* HCI_Intel_Read_Version to get the version information and
2329+
* run the legacy bootloader setup.
2330+
*/
2331+
err = btintel_read_version(hdev, &ver);
2332+
if (err)
2333+
return err;
2334+
err = btintel_bootloader_setup(hdev, &ver);
2335+
break;
23152336
case 0x17:
23162337
case 0x18:
23172338
case 0x19:

0 commit comments

Comments
 (0)