Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp3134744pxu; Tue, 8 Dec 2020 04:38:01 -0800 (PST) X-Google-Smtp-Source: ABdhPJxYm3OEIKhQ1fkMkjHgshxIObSgd2//XqgByGs1wHMcKvutr5/D4OwvmXrQSGD8hprcMFbZ X-Received: by 2002:a50:9f4a:: with SMTP id b68mr24220238edf.296.1607431080949; Tue, 08 Dec 2020 04:38:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607431080; cv=none; d=google.com; s=arc-20160816; b=UslOYn/pdh3pgwaD5WMAu0Y0kRfnxNCZ6P25gAmeZ6Lg/MnotN7P2ocdXPDBXBa67D QIRK8sb6DINC8z4F3bUXvt3OW/6Ss6Ypo6mU8ADn42d2Lf/Td5HXfLqmvlM782dvZ6Dp Ms8gaNbdsGoI/lagrmzzmoS2mhrn0NPzgBI/e435qFRGlxGcr2qDdUaw1mYUvlrueJ8m MG4j/1FNUqVkYU5aSITwUUQVbIcvfILqC/l11PMTAXQI/uL7//6/E92BWOVhPyk74g2Y KZuctDNgYbmevCZVIQOLTbR6RKzbZu0ciBEGXNF2BB1RmtNKpsaYTkgBKomNrc39lnMe 2sew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=85XqXoE02W4a2E+Qt4IGZ0RD0NnVNeuk5c5GBVrp7yo=; b=n8pMKA8bZdo/ImtX0SLEDv9YaoFdXT5P0jySeHUAusFnJMKoQjnriHc0a61773X/tD 8JTGwidfFDkaeOGvN5SnJXoq1fjHqoZBZnId89PvZGaIdZfQMJ2NQYu6dzoGNbSQJkc0 NdDWBZz4c1vzfFWIt1DZkXniKFGkUt6lNKEhuHdFSSxJ4IYFiKyCj0utOPD87E7ni/7P Vku5OdLqwmRkOfxp2pDJ77fTxLtqXZ8ow2cFs6u2BqyWE5ThaGrhK61Yr4ngIQuIs/lF kd4XXxq866xCvzZdBLDEeMSgai8hRGSR3rmEUw9j4GUt1mSIxNoA+6R4FzsC/Frny40T iWXg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bs1si11636819edb.320.2020.12.08.04.37.36; Tue, 08 Dec 2020 04:38:00 -0800 (PST) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725931AbgLHL4l (ORCPT + 99 others); Tue, 8 Dec 2020 06:56:41 -0500 Received: from alexa-out.qualcomm.com ([129.46.98.28]:38019 "EHLO alexa-out.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725877AbgLHL4k (ORCPT ); Tue, 8 Dec 2020 06:56:40 -0500 Received: from ironmsg08-lv.qualcomm.com ([10.47.202.152]) by alexa-out.qualcomm.com with ESMTP; 08 Dec 2020 03:55:59 -0800 X-QCInternal: smtphost Received: from ironmsg02-blr.qualcomm.com ([10.86.208.131]) by ironmsg08-lv.qualcomm.com with ESMTP/TLS/AES256-SHA; 08 Dec 2020 03:55:57 -0800 X-QCInternal: smtphost Received: from gubbaven-linux.qualcomm.com ([10.206.64.32]) by ironmsg02-blr.qualcomm.com with ESMTP; 08 Dec 2020 17:25:33 +0530 Received: by gubbaven-linux.qualcomm.com (Postfix, from userid 2365015) id 011E520F2D; Tue, 8 Dec 2020 17:25:31 +0530 (IST) From: Venkata Lakshmi Narayana Gubba To: marcel@holtmann.org, johan.hedberg@gmail.com Cc: mka@chromium.org, linux-kernel@vger.kernel.org, linux-bluetooth@vger.kernel.org, hemantg@codeaurora.org, linux-arm-msm@vger.kernel.org, bgodavar@codeaurora.org, rjliao@codeaurora.org, hbandi@codeaurora.org, abhishekpandit@chromium.org, Venkata Lakshmi Narayana Gubba Subject: [PATCH v4] Bluetooth: btqca: Add support to read FW build version for WCN3991 BTSoC Date: Tue, 8 Dec 2020 17:25:29 +0530 Message-Id: <1607428529-26629-1-git-send-email-gubbaven@codeaurora.org> X-Mailer: git-send-email 2.7.4 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Add support to read FW build version from debugfs node. This info can be read from /sys/kernel/debug/bluetooth/hci0/firmware_info Signed-off-by: Venkata Lakshmi Narayana Gubba --- drivers/bluetooth/btqca.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++ drivers/bluetooth/btqca.h | 1 + 2 files changed, 55 insertions(+) diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c index f85a55a..f6256a3 100644 --- a/drivers/bluetooth/btqca.c +++ b/drivers/bluetooth/btqca.c @@ -94,6 +94,53 @@ int qca_read_soc_version(struct hci_dev *hdev, struct qca_btsoc_version *ver, } 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, build_label[QCA_FW_BUILD_VER_LEN]; + int build_lbl_len, err = 0; + + 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, 0, 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]; + if (build_lbl_len <= QCA_FW_BUILD_VER_LEN - 1) { + memcpy(build_label, edl->data + 1, build_lbl_len); + *(build_label + build_lbl_len) = '\0'; + } + + hci_set_fw_info(hdev, "%s", build_label); + +out: + kfree_skb(skb); + return err; +} + static int qca_send_reset(struct hci_dev *hdev) { struct sk_buff *skb; @@ -524,6 +571,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 e73b8f8..b19add7 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) -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation