Skip to content
Permalink
Browse files
Bluetooth: btqca: Add support to read FW build version for WCN3991 BTSoC
Add support to read FW build version for WCN3991 BTSoC

Signed-off-by: Venkata Lakshmi Narayana Gubba <gubbaven@codeaurora.org>
  • Loading branch information
Venkata Lakshmi Narayana Gubba authored and intel-lab-lkp committed Nov 17, 2020
1 parent 22fbcfc commit 773b13ede05cd62b2e429541685f7be9a9ec1e7b
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
@@ -101,6 +101,56 @@ int qca_read_soc_version(struct hci_dev *hdev, u32 *soc_version,
}
EXPORT_SYMBOL_GPL(qca_read_soc_version);

int qca_read_fw_build_info(struct hci_dev *hdev)
{
struct sk_buff *skb;
struct edl_event_hdr *edl;
char cmd;
int err = 0;
char build_label[QCA_FW_BUILD_VER_LEN];
int build_lbl_len;

bt_dev_dbg(hdev, "QCA read fw build info");

cmd = EDL_GET_BUILD_INFO_CMD;
skb = __hci_cmd_sync_ev(hdev, EDL_PATCH_CMD_OPCODE, EDL_PATCH_CMD_LEN,
&cmd, HCI_EV_VENDOR, HCI_INIT_TIMEOUT);
if (IS_ERR(skb)) {
err = PTR_ERR(skb);
bt_dev_err(hdev, "Reading QCA fw build info failed (%d)",
err);
return err;
}

edl = (struct edl_event_hdr *)(skb->data);
if (!edl) {
bt_dev_err(hdev, "QCA read fw build info with no header");
err = -EILSEQ;
goto out;
}

if (edl->cresp != EDL_CMD_REQ_RES_EVT ||
edl->rtype != EDL_GET_BUILD_INFO_CMD) {
bt_dev_err(hdev, "QCA Wrong packet received %d %d", edl->cresp,
edl->rtype);
err = -EIO;
goto out;
}

build_lbl_len = edl->data[0];
memcpy(build_label, &edl->data[1], build_lbl_len);
*(build_label + build_lbl_len) = '\0';

bt_dev_info(hdev, "BT SoC FW Build info: %s", build_label);

out:
kfree_skb(skb);
if (err)
bt_dev_err(hdev, "QCA read fw build info failed (%d)", err);

return err;
}

static int qca_send_reset(struct hci_dev *hdev)
{
struct sk_buff *skb;
@@ -520,6 +570,13 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
return err;
}

if (soc_type == QCA_WCN3991) {
/* get fw build info */
qca_read_fw_build_info(hdev);
if (err < 0)
return err;
}

bt_dev_info(hdev, "QCA setup on UART is completed");

return 0;
@@ -11,6 +11,7 @@
#define EDL_PATCH_CMD_LEN (1)
#define EDL_PATCH_VER_REQ_CMD (0x19)
#define EDL_PATCH_TLV_REQ_CMD (0x1E)
#define EDL_GET_BUILD_INFO_CMD (0x20)
#define EDL_NVM_ACCESS_SET_REQ_CMD (0x01)
#define MAX_SIZE_PER_TLV_SEGMENT (243)
#define QCA_PRE_SHUTDOWN_CMD (0xFC08)
@@ -34,6 +35,8 @@
#define QCA_HCI_CC_OPCODE 0xFC00
#define QCA_HCI_CC_SUCCESS 0x00

#define QCA_FW_BUILD_VER_LEN 255

enum qca_baudrate {
QCA_BAUDRATE_115200 = 0,
QCA_BAUDRATE_57600,

0 comments on commit 773b13e

Please sign in to comment.