Skip to content

Commit ef2862a

Browse files
tjiang123Johan Hedberg
authored andcommitted
Bluetooth: btusb: support download nvm with different board id for wcn6855
we define many nvm files for wcn6855 btsoc and host driver should find the correct nvm file based on board ID and then download it. Signed-off-by: Tim Jiang <[email protected]> Signed-off-by: Marcel Holtmann <[email protected]> Signed-off-by: Johan Hedberg <[email protected]>
1 parent 10c2423 commit ef2862a

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

drivers/bluetooth/btusb.c

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3774,12 +3774,14 @@ static int btusb_set_bdaddr_wcn6855(struct hci_dev *hdev,
37743774
#define QCA_SYSCFG_UPDATED 0x40
37753775
#define QCA_PATCH_UPDATED 0x80
37763776
#define QCA_DFU_TIMEOUT 3000
3777+
#define QCA_FLAG_MULTI_NVM 0x80
37773778

37783779
struct qca_version {
37793780
__le32 rom_version;
37803781
__le32 patch_version;
37813782
__le32 ram_version;
3782-
__le32 ref_clock;
3783+
__le16 board_id;
3784+
__le16 flag;
37833785
__u8 reserved[4];
37843786
} __packed;
37853787

@@ -3962,8 +3964,14 @@ static int btusb_setup_qca_load_nvm(struct hci_dev *hdev,
39623964
char fwname[64];
39633965
int err;
39643966

3965-
snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x.bin",
3966-
le32_to_cpu(ver->rom_version));
3967+
if (((ver->flag >> 8) & 0xff) == QCA_FLAG_MULTI_NVM) {
3968+
snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x_%04x.bin",
3969+
le32_to_cpu(ver->rom_version),
3970+
le16_to_cpu(ver->board_id));
3971+
} else {
3972+
snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x.bin",
3973+
le32_to_cpu(ver->rom_version));
3974+
}
39673975

39683976
err = request_firmware(&fw, fwname, &hdev->dev);
39693977
if (err) {
@@ -4030,6 +4038,11 @@ static int btusb_setup_qca(struct hci_dev *hdev)
40304038
return err;
40314039
}
40324040

4041+
err = btusb_qca_send_vendor_req(udev, QCA_GET_TARGET_VERSION, &ver,
4042+
sizeof(ver));
4043+
if (err < 0)
4044+
return err;
4045+
40334046
if (!(status & QCA_SYSCFG_UPDATED)) {
40344047
err = btusb_setup_qca_load_nvm(hdev, &ver, info);
40354048
if (err < 0)

0 commit comments

Comments
 (0)