mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 05:06:29 +00:00
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 <tedd.an@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
0d8603b4ee
commit
c86c7285bb
@ -2312,6 +2312,27 @@ static int btintel_setup_combined(struct hci_dev *hdev)
|
||||
* along.
|
||||
*/
|
||||
switch (INTEL_HW_VARIANT(ver_tlv.cnvi_bt)) {
|
||||
case 0x11: /* JfP */
|
||||
case 0x12: /* ThP */
|
||||
case 0x13: /* HrP */
|
||||
case 0x14: /* CcP */
|
||||
/* Some legacy bootloader devices from JfP supports both old
|
||||
* and TLV based HCI_Intel_Read_Version command. But we don't
|
||||
* want to use the TLV based setup routines for those legacy
|
||||
* bootloader device.
|
||||
*
|
||||
* Also, it is not easy to convert TLV based version from the
|
||||
* legacy version format.
|
||||
*
|
||||
* So, as a workaround for those devices, use the legacy
|
||||
* HCI_Intel_Read_Version to get the version information and
|
||||
* run the legacy bootloader setup.
|
||||
*/
|
||||
err = btintel_read_version(hdev, &ver);
|
||||
if (err)
|
||||
return err;
|
||||
err = btintel_bootloader_setup(hdev, &ver);
|
||||
break;
|
||||
case 0x17:
|
||||
case 0x18:
|
||||
case 0x19:
|
||||
|
Loading…
Reference in New Issue
Block a user