aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLokendra Singh <lokendra.singh@intel.com>2021-03-23 11:59:04 -0700
committerMarcel Holtmann <marcel@holtmann.org>2021-03-25 16:11:12 +0100
commit1f4ec585e6618ad75d5a82e58482ea2c5b4b7167 (patch)
treebd6911b0969ce5e189a095b92b0660656cefa72e
parent88981354730ce118a76aa030d19fd1308cd2007b (diff)
downloadbluetooth-next-1f4ec585e6618ad75d5a82e58482ea2c5b4b7167.tar.gz
Bluetooth: btintel: Skip reading firmware file version while in bootloader mode
This skips parsing the firmware version information from the firmware file while controller is in bootloader mode. As in bootloader mode, we are supposed to patch unconditionally. Signed-off-by: Lokendra Singh <lokendra.singh@intel.com> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Tested-by: Tedd Ho-Jeong An <tedd.an@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
-rw-r--r--drivers/bluetooth/btintel.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c
index 6442acba76d1e..e44b6993cf91a 100644
--- a/drivers/bluetooth/btintel.c
+++ b/drivers/bluetooth/btintel.c
@@ -1031,6 +1031,10 @@ int btintel_download_firmware(struct hci_dev *hdev,
/* Skip version checking */
break;
default:
+ /* Skip reading firmware file version in bootloader mode */
+ if (ver->fw_variant == 0x06)
+ break;
+
/* Skip download if firmware has the same version */
if (btintel_firmware_version(hdev, ver->fw_build_num,
ver->fw_build_ww, ver->fw_build_yy,
@@ -1070,15 +1074,19 @@ int btintel_download_firmware_newgen(struct hci_dev *hdev,
int err;
u32 css_header_ver;
- /* Skip download if firmware has the same version */
- if (btintel_firmware_version(hdev, ver->min_fw_build_nn,
- ver->min_fw_build_cw, ver->min_fw_build_yy,
- fw, boot_param)) {
- bt_dev_info(hdev, "Firmware already loaded");
- /* Return -EALREADY to indicate that firmware has already been
- * loaded.
- */
- return -EALREADY;
+ /* Skip reading firmware file version in bootloader mode */
+ if (ver->img_type != 0x01) {
+ /* Skip download if firmware has the same version */
+ if (btintel_firmware_version(hdev, ver->min_fw_build_nn,
+ ver->min_fw_build_cw,
+ ver->min_fw_build_yy,
+ fw, boot_param)) {
+ bt_dev_info(hdev, "Firmware already loaded");
+ /* Return -EALREADY to indicate that firmware has
+ * already been loaded.
+ */
+ return -EALREADY;
+ }
}
/* The firmware variant determines if the device is in bootloader