[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <2366096dae31651769bfe1f7f3796a16@codeaurora.org>
Date: Tue, 24 Nov 2020 22:26:58 +0530
From: gubbaven@...eaurora.org
To: Bjorn Andersson <bjorn.andersson@...aro.org>
Cc: marcel@...tmann.org, johan.hedberg@...il.com, mka@...omium.org,
linux-kernel@...r.kernel.org, linux-bluetooth@...r.kernel.org,
hemantg@...eaurora.org, linux-arm-msm@...r.kernel.org,
bgodavar@...eaurora.org, rjliao@...eaurora.org,
hbandi@...eaurora.org, abhishekpandit@...omium.org
Subject: Re: [PATCH v2] Bluetooth: btqca: Add support to read FW build version
for WCN3991 BTSoC
Hi Bjorn,
On 2020-11-18 20:27, Bjorn Andersson wrote:
> On Wed 18 Nov 06:52 CST 2020, Venkata Lakshmi Narayana Gubba wrote:
>
>> Add support to read FW build version for WCN3991 BTSoC
>
> Your commit message doesn't describe why you need/want this? Is it
> somehow required for BT to come up or is it simply 57 lines of code to
> print a line of build info in the kernel log?
>
>
>
> Note that most people reading the kernel log won't care about what
> firmware version their BT chip is running, so if it's only for your own
> debugging purpose I would prefer if you make this available in sysfs or
> debugfs.
>
> Regards,
> Bjorn
>
[Venkata] :
Yes, this code is to print build info in kernel log for debugging
purpose.
I will add this in debugfs and will post the updated patch.
>>
>> Signed-off-by: Venkata Lakshmi Narayana Gubba
>> <gubbaven@...eaurora.org>
>> ---
>> drivers/bluetooth/btqca.c | 57
>> +++++++++++++++++++++++++++++++++++++++++++++++
>> drivers/bluetooth/btqca.h | 3 +++
>> 2 files changed, 60 insertions(+)
>>
>> diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c
>> index ce9dcff..dfd7ff7 100644
>> --- a/drivers/bluetooth/btqca.c
>> +++ b/drivers/bluetooth/btqca.c
>> @@ -101,6 +101,56 @@ int qca_read_soc_version(struct hci_dev *hdev,
>> u32 *soc_version,
>> }
>> EXPORT_SYMBOL_GPL(qca_read_soc_version);
>>
>> +static 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 */
>> + err = qca_read_fw_build_info(hdev);
>> + if (err < 0)
>> + return err;
>> + }
>> +
>> bt_dev_info(hdev, "QCA setup on UART is completed");
>>
>> return 0;
>> diff --git a/drivers/bluetooth/btqca.h b/drivers/bluetooth/btqca.h
>> index d81b74c..375c7fc 100644
>> --- a/drivers/bluetooth/btqca.h
>> +++ b/drivers/bluetooth/btqca.h
>> @@ -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,
>> --
>> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
>> member
>> of Code Aurora Forum, hosted by The Linux Foundation
>>
Regards,
Lakshmi Narayana.
Powered by blists - more mailing lists