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
1 changed files with 21 additions and 0 deletions
|
@ -2312,6 +2312,27 @@ static int btintel_setup_combined(struct hci_dev *hdev)
|
||||||
* along.
|
* along.
|
||||||
*/
|
*/
|
||||||
switch (INTEL_HW_VARIANT(ver_tlv.cnvi_bt)) {
|
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 0x17:
|
||||||
case 0x18:
|
case 0x18:
|
||||||
case 0x19:
|
case 0x19:
|
||||||
|
|
Loading…
Add table
Reference in a new issue