# Re: \[PATCH v5 11/11\] Bluetooth: btintel: Fix the legacy bootloader returns tlv based version

- From: Marcel Holtmann \<marcel@holtmann.org\>
- Date: 2021-07-29 19:40:42 
- List: linux-bluetooth
- Page: https://ratatoskr.run/linux-bluetooth/2021/07/9680730
- Thread: https://ratatoskr.run/linux-bluetooth/2021/07/9680713/t.md

```text
Hi Tedd,

> From the ThP, it supports both old and TLV based HCI_Intel_Read_Version
> command after downloading the operational firmware.
> Starting from th JfP, it supports both old and TLV based
> HCI_Intel_Read_Version command in the operational firmware and it causes
> the setup() uses the TLV based setup instead of legacy setup.
> 
> So, as a workaround, this patch checks the fw variant from the TLV based
> version and it uses the legacy HCI_Intel_Read_Version command to get the
> legacy version information and run the legacy bootloader setup with it.
> 
> Signed-off-by: Tedd Ho-Jeong An <redacted>
> ---
> drivers/bluetooth/btintel.c | 25 ++++++++++++++++++++++++-
> 1 file changed, 24 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c
> index 57b64d744f0a..f11882d10da7 100644
> --- a/drivers/bluetooth/btintel.c
> +++ b/drivers/bluetooth/btintel.c
> @@ -2254,10 +2254,33 @@ int btintel_setup_combined(struct hci_dev *hdev)
> 	/* For TLV type device, parse the tlv data */
> 	btintel_parse_version_tlv(hdev, &ver_tlv, skb);
> 
> +	/* 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 old bootloader device.
> +	 * Also, it is not easy to convert TLV based version to 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.
> +	 */

why is that again? If possible we should convert them. What information is missing from the TLV format that we need?

Regards

Marcel

```
