* [PATCH v2 1/2] dt-bindings: net: bluetooth: qualcomm: add bindings for QCC2072
@ 2026-02-09 7:03 Vivek Sahu
2026-02-09 7:03 ` [PATCH v2 2/2] Bluetooth: qca: add QCC2072 support Vivek Sahu
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Vivek Sahu @ 2026-02-09 7:03 UTC (permalink / raw)
To: Marcel Holtmann, Luiz Augusto von Dentz, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski,
Balakrishna Godavarthi, Rocky Liao
Cc: quic_mohamull, quic_hbandi, linux-bluetooth, devicetree,
linux-kernel, linux-arm-msm, Vivek Sahu
QCC2072 is a WiFi/BT connectivity chip.
It requires different firmware, so document it as a new compat string.
Correct the sorting of other chipsets for better readability.
Signed-off-by: Vivek Sahu <vivek.sahu@oss.qualcomm.com>
---
.../devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml b/Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml
index 6353a336f382..1f47ad36aa61 100644
--- a/Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml
+++ b/Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml
@@ -18,13 +18,13 @@ properties:
enum:
- qcom,qca2066-bt
- qcom,qca6174-bt
+ - qcom,qca6390-bt
- qcom,qca9377-bt
- - qcom,wcn3950-bt
+ - qcom,qcc2072-bt
- qcom,wcn3988-bt
- qcom,wcn3990-bt
- qcom,wcn3991-bt
- qcom,wcn3998-bt
- - qcom,qca6390-bt
- qcom,wcn6750-bt
- qcom,wcn6855-bt
- qcom,wcn7850-bt
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] Bluetooth: qca: add QCC2072 support
2026-02-09 7:03 [PATCH v2 1/2] dt-bindings: net: bluetooth: qualcomm: add bindings for QCC2072 Vivek Sahu
@ 2026-02-09 7:03 ` Vivek Sahu
2026-02-09 19:11 ` kernel test robot
2026-02-10 1:23 ` kernel test robot
2026-02-09 7:14 ` [PATCH v2 1/2] dt-bindings: net: bluetooth: qualcomm: add bindings for QCC2072 Vivek Sahu
2026-02-09 7:59 ` [v2,1/2] " bluez.test.bot
2 siblings, 2 replies; 6+ messages in thread
From: Vivek Sahu @ 2026-02-09 7:03 UTC (permalink / raw)
To: Marcel Holtmann, Luiz Augusto von Dentz, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski,
Balakrishna Godavarthi, Rocky Liao
Cc: quic_mohamull, quic_hbandi, linux-bluetooth, devicetree,
linux-kernel, linux-arm-msm, Vivek Sahu
QCC2072 is a WiFi/BT connectivity chip.
It requires different firmware files and has different
configurations , so add it as a separate SoC type.
Correct the sorting of other chipsets for better readability.
Signed-off-by: Vivek Sahu <vivek.sahu@oss.qualcomm.com>
---
drivers/bluetooth/btqca.c | 41 ++++++++++++++++++++++---------------
drivers/bluetooth/btqca.h | 1 +
drivers/bluetooth/hci_qca.c | 40 ++++++++++++++++++++++++++----------
3 files changed, 54 insertions(+), 28 deletions(-)
diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c
index 7c958d6065be..7b85634ee3a1 100644
--- a/drivers/bluetooth/btqca.c
+++ b/drivers/bluetooth/btqca.c
@@ -816,6 +816,17 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
snprintf(config.fwname, sizeof(config.fwname), "qca/%s", rampatch_name);
} else {
switch (soc_type) {
+ case QCA_QCA2066:
+ snprintf(config.fwname, sizeof(config.fwname),
+ "qca/hpbtfw%02x.tlv", rom_ver);
+ break;
+ case QCA_QCA6390:
+ snprintf(config.fwname, sizeof(config.fwname),
+ "qca/htbtfw%02x.tlv", rom_ver);
+ break;
+ case QCA_QCC2072:
+ snprintf(config.fwname, sizeof(config.fwname),
+ "qca/ornbtfw%02x.tlv", rom_ver);
case QCA_WCN3950:
snprintf(config.fwname, sizeof(config.fwname),
"qca/cmbtfw%02x.tlv", rom_ver);
@@ -830,14 +841,6 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
snprintf(config.fwname, sizeof(config.fwname),
"qca/apbtfw%02x.tlv", rom_ver);
break;
- case QCA_QCA2066:
- snprintf(config.fwname, sizeof(config.fwname),
- "qca/hpbtfw%02x.tlv", rom_ver);
- break;
- case QCA_QCA6390:
- snprintf(config.fwname, sizeof(config.fwname),
- "qca/htbtfw%02x.tlv", rom_ver);
- break;
case QCA_WCN6750:
/* Choose mbn file by default.If mbn file is not found
* then choose tlv file
@@ -885,6 +888,19 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
}
} else {
switch (soc_type) {
+ case QCA_QCA2066:
+ qca_get_nvm_name_by_board(config.fwname,
+ sizeof(config.fwname), "hpnv", soc_type, ver,
+ rom_ver, boardid);
+ break;
+ case QCA_QCA6390:
+ snprintf(config.fwname, sizeof(config.fwname),
+ "qca/htnv%02x.bin", rom_ver);
+ break;
+ case QCA_QCC2072:
+ snprintf(config.fwname, sizeof(config.fwname),
+ "qca/ornnv%02x.bin", rom_ver);
+ break;
case QCA_WCN3950:
if (le32_to_cpu(ver.soc_id) == QCA_WCN3950_SOC_ID_T)
variant = "t";
@@ -907,15 +923,6 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
snprintf(config.fwname, sizeof(config.fwname),
"qca/apnv%02x.bin", rom_ver);
break;
- case QCA_QCA2066:
- qca_get_nvm_name_by_board(config.fwname,
- sizeof(config.fwname), "hpnv", soc_type, ver,
- rom_ver, boardid);
- break;
- case QCA_QCA6390:
- snprintf(config.fwname, sizeof(config.fwname),
- "qca/htnv%02x.bin", rom_ver);
- break;
case QCA_WCN6750:
snprintf(config.fwname, sizeof(config.fwname),
"qca/msnv%02x.bin", rom_ver);
diff --git a/drivers/bluetooth/btqca.h b/drivers/bluetooth/btqca.h
index 8f3c1b1c77b3..a175ac31e7b2 100644
--- a/drivers/bluetooth/btqca.h
+++ b/drivers/bluetooth/btqca.h
@@ -158,6 +158,7 @@ enum qca_btsoc_type {
QCA_WCN6750,
QCA_WCN6855,
QCA_WCN7850,
+ QCA_QCC2072,
};
#if IS_ENABLED(CONFIG_BT_QCA)
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
index 888176b0faa9..2ce6e19e5b86 100644
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
@@ -623,6 +623,7 @@ static int qca_open(struct hci_uart *hu)
qcadev = serdev_device_get_drvdata(hu->serdev);
switch (qcadev->btsoc_type) {
+ case QCA_QCC2072:
case QCA_WCN3950:
case QCA_WCN3988:
case QCA_WCN3990:
@@ -1498,6 +1499,7 @@ static int qca_set_speed(struct hci_uart *hu, enum qca_speed_type speed_type)
* changing the baudrate of chip and host.
*/
switch (soc_type) {
+ case QCA_QCC2072:
case QCA_WCN3950:
case QCA_WCN3988:
case QCA_WCN3990:
@@ -1514,6 +1516,7 @@ static int qca_set_speed(struct hci_uart *hu, enum qca_speed_type speed_type)
}
switch (soc_type) {
+ case QCA_QCC2072:
case QCA_WCN3990:
reinit_completion(&qca->drop_ev_comp);
set_bit(QCA_DROP_VENDOR_EVENT, &qca->flags);
@@ -1533,6 +1536,7 @@ static int qca_set_speed(struct hci_uart *hu, enum qca_speed_type speed_type)
error:
switch (soc_type) {
+ case QCA_QCC2072:
case QCA_WCN3950:
case QCA_WCN3988:
case QCA_WCN3990:
@@ -1549,6 +1553,7 @@ static int qca_set_speed(struct hci_uart *hu, enum qca_speed_type speed_type)
}
switch (soc_type) {
+ case QCA_QCC2072:
case QCA_WCN3990:
/* Wait for the controller to send the vendor event
* for the baudrate change command.
@@ -1900,6 +1905,10 @@ static int qca_setup(struct hci_uart *hu)
soc_name = "qca2066";
break;
+ case QCA_QCC2072:
+ soc_name = "qcc2072";
+ break;
+
case QCA_WCN3950:
case QCA_WCN3988:
case QCA_WCN3990:
@@ -1935,6 +1944,7 @@ static int qca_setup(struct hci_uart *hu)
clear_bit(QCA_SSR_TRIGGERED, &qca->flags);
switch (soc_type) {
+ case QCA_QCC2072:
case QCA_WCN3950:
case QCA_WCN3988:
case QCA_WCN3990:
@@ -1969,6 +1979,7 @@ static int qca_setup(struct hci_uart *hu)
}
switch (soc_type) {
+ case QCA_QCC2072:
case QCA_WCN3950:
case QCA_WCN3988:
case QCA_WCN3990:
@@ -2058,6 +2069,23 @@ static const struct hci_uart_proto qca_proto = {
.dequeue = qca_dequeue,
};
+static const struct qca_device_data qca_soc_data_qca2066 __maybe_unused = {
+ .soc_type = QCA_QCA2066,
+ .num_vregs = 0,
+};
+
+static const struct qca_device_data qca_soc_data_qca6390 __maybe_unused = {
+ .soc_type = QCA_QCA6390,
+ .num_vregs = 0,
+ .capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES,
+};
+
+static const struct qca_device_data qca_soc_data_qcc2072 __maybe_unused = {
+ .soc_type = QCA_QCC2072,
+ .num_vregs = 0,
+ .capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES,
+};
+
static const struct qca_device_data qca_soc_data_wcn3950 __maybe_unused = {
.soc_type = QCA_WCN3950,
.vregs = (struct qca_vreg []) {
@@ -2114,17 +2142,6 @@ static const struct qca_device_data qca_soc_data_wcn3998 __maybe_unused = {
.num_vregs = 4,
};
-static const struct qca_device_data qca_soc_data_qca2066 __maybe_unused = {
- .soc_type = QCA_QCA2066,
- .num_vregs = 0,
- .capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES,
-};
-
-static const struct qca_device_data qca_soc_data_qca6390 __maybe_unused = {
- .soc_type = QCA_QCA6390,
- .num_vregs = 0,
-};
-
static const struct qca_device_data qca_soc_data_wcn6750 __maybe_unused = {
.soc_type = QCA_WCN6750,
.vregs = (struct qca_vreg []) {
@@ -2715,6 +2732,7 @@ static const struct of_device_id qca_bluetooth_of_match[] = {
{ .compatible = "qcom,qca6174-bt" },
{ .compatible = "qcom,qca6390-bt", .data = &qca_soc_data_qca6390},
{ .compatible = "qcom,qca9377-bt" },
+ { .compatible = "qcom,qcc2072-bt", .data = &qca_soc_data_qcc2072},
{ .compatible = "qcom,wcn3950-bt", .data = &qca_soc_data_wcn3950},
{ .compatible = "qcom,wcn3988-bt", .data = &qca_soc_data_wcn3988},
{ .compatible = "qcom,wcn3990-bt", .data = &qca_soc_data_wcn3990},
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: net: bluetooth: qualcomm: add bindings for QCC2072
2026-02-09 7:03 [PATCH v2 1/2] dt-bindings: net: bluetooth: qualcomm: add bindings for QCC2072 Vivek Sahu
2026-02-09 7:03 ` [PATCH v2 2/2] Bluetooth: qca: add QCC2072 support Vivek Sahu
@ 2026-02-09 7:14 ` Vivek Sahu
2026-02-09 7:59 ` [v2,1/2] " bluez.test.bot
2 siblings, 0 replies; 6+ messages in thread
From: Vivek Sahu @ 2026-02-09 7:14 UTC (permalink / raw)
To: Marcel Holtmann, Luiz Augusto von Dentz, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski,
Balakrishna Godavarthi, Rocky Liao
Cc: quic_mohamull, quic_hbandi, linux-bluetooth, devicetree,
linux-kernel, linux-arm-msm
On 2/9/2026 12:33 PM, Vivek Sahu wrote:
> QCC2072 is a WiFi/BT connectivity chip.
> It requires different firmware, so document it as a new compat string.
>
> Correct the sorting of other chipsets for better readability.
>
> Signed-off-by: Vivek Sahu <vivek.sahu@oss.qualcomm.com>
> ---
> .../devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml b/Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml
> index 6353a336f382..1f47ad36aa61 100644
> --- a/Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml
> +++ b/Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml
> @@ -18,13 +18,13 @@ properties:
> enum:
> - qcom,qca2066-bt
> - qcom,qca6174-bt
> + - qcom,qca6390-bt
> - qcom,qca9377-bt
> - - qcom,wcn3950-bt
> + - qcom,qcc2072-bt
> - qcom,wcn3988-bt
> - qcom,wcn3990-bt
> - qcom,wcn3991-bt
> - qcom,wcn3998-bt
> - - qcom,qca6390-bt
> - qcom,wcn6750-bt
> - qcom,wcn6855-bt
> - qcom,wcn7850-bt
"qcom,wcn3950-bt" is deleted by mistake. Will correct it in next patch set.
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [v2,1/2] dt-bindings: net: bluetooth: qualcomm: add bindings for QCC2072
2026-02-09 7:03 [PATCH v2 1/2] dt-bindings: net: bluetooth: qualcomm: add bindings for QCC2072 Vivek Sahu
2026-02-09 7:03 ` [PATCH v2 2/2] Bluetooth: qca: add QCC2072 support Vivek Sahu
2026-02-09 7:14 ` [PATCH v2 1/2] dt-bindings: net: bluetooth: qualcomm: add bindings for QCC2072 Vivek Sahu
@ 2026-02-09 7:59 ` bluez.test.bot
2 siblings, 0 replies; 6+ messages in thread
From: bluez.test.bot @ 2026-02-09 7:59 UTC (permalink / raw)
To: linux-bluetooth, vivek.sahu
[-- Attachment #1: Type: text/plain, Size: 550 bytes --]
This is an automated email and please do not reply to this email.
Dear Submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
While preparing the CI tests, the patches you submitted couldn't be applied to the current HEAD of the repository.
----- Output -----
error: Documentation/devicetree/bindings/net/bluetooth/qualcomm-bluetooth.yaml: does not exist in index
hint: Use 'git am --show-current-patch' to see the failed patch
Please resolve the issue and submit the patches again.
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] Bluetooth: qca: add QCC2072 support
2026-02-09 7:03 ` [PATCH v2 2/2] Bluetooth: qca: add QCC2072 support Vivek Sahu
@ 2026-02-09 19:11 ` kernel test robot
2026-02-10 1:23 ` kernel test robot
1 sibling, 0 replies; 6+ messages in thread
From: kernel test robot @ 2026-02-09 19:11 UTC (permalink / raw)
To: Vivek Sahu, Marcel Holtmann, Luiz Augusto von Dentz, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski,
Balakrishna Godavarthi, Rocky Liao
Cc: oe-kbuild-all, quic_mohamull, quic_hbandi, linux-bluetooth,
devicetree, linux-kernel, linux-arm-msm, Vivek Sahu
Hi Vivek,
kernel test robot noticed the following build warnings:
[auto build test WARNING on bluetooth/master]
[also build test WARNING on robh/for-next linus/master v6.19]
[cannot apply to bluetooth-next/master next-20260205]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Vivek-Sahu/Bluetooth-qca-add-QCC2072-support/20260209-150905
base: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git master
patch link: https://lore.kernel.org/r/20260209070356.187301-2-vivek.sahu%40oss.qualcomm.com
patch subject: [PATCH v2 2/2] Bluetooth: qca: add QCC2072 support
config: alpha-allmodconfig (https://download.01.org/0day-ci/archive/20260210/202602100332.6QKGVLHq-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260210/202602100332.6QKGVLHq-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202602100332.6QKGVLHq-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/bluetooth/btqca.c: In function 'qca_uart_setup':
>> drivers/bluetooth/btqca.c:828:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
828 | snprintf(config.fwname, sizeof(config.fwname),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
829 | "qca/ornbtfw%02x.tlv", rom_ver);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/bluetooth/btqca.c:830:17: note: here
830 | case QCA_WCN3950:
| ^~~~
vim +828 drivers/bluetooth/btqca.c
782
783 int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
784 enum qca_btsoc_type soc_type, struct qca_btsoc_version ver,
785 const char *firmware_name, const char *rampatch_name)
786 {
787 struct qca_fw_config config = {};
788 const char *variant = "";
789 int err;
790 u8 rom_ver = 0;
791 u32 soc_ver;
792 u16 boardid = 0;
793
794 bt_dev_dbg(hdev, "QCA setup on UART");
795
796 soc_ver = get_soc_ver(ver.soc_id, ver.rom_ver);
797
798 bt_dev_info(hdev, "QCA controller version 0x%08x", soc_ver);
799
800 config.user_baud_rate = baudrate;
801
802 /* Firmware files to download are based on ROM version.
803 * ROM version is derived from last two bytes of soc_ver.
804 */
805 if (soc_type == QCA_WCN3988)
806 rom_ver = ((soc_ver & 0x00000f00) >> 0x05) | (soc_ver & 0x0000000f);
807 else
808 rom_ver = ((soc_ver & 0x00000f00) >> 0x04) | (soc_ver & 0x0000000f);
809
810 if (soc_type == QCA_WCN6750)
811 qca_send_patch_config_cmd(hdev);
812
813 /* Download rampatch file */
814 config.type = TLV_TYPE_PATCH;
815 if (rampatch_name) {
816 snprintf(config.fwname, sizeof(config.fwname), "qca/%s", rampatch_name);
817 } else {
818 switch (soc_type) {
819 case QCA_QCA2066:
820 snprintf(config.fwname, sizeof(config.fwname),
821 "qca/hpbtfw%02x.tlv", rom_ver);
822 break;
823 case QCA_QCA6390:
824 snprintf(config.fwname, sizeof(config.fwname),
825 "qca/htbtfw%02x.tlv", rom_ver);
826 break;
827 case QCA_QCC2072:
> 828 snprintf(config.fwname, sizeof(config.fwname),
829 "qca/ornbtfw%02x.tlv", rom_ver);
830 case QCA_WCN3950:
831 snprintf(config.fwname, sizeof(config.fwname),
832 "qca/cmbtfw%02x.tlv", rom_ver);
833 break;
834 case QCA_WCN3990:
835 case QCA_WCN3991:
836 case QCA_WCN3998:
837 snprintf(config.fwname, sizeof(config.fwname),
838 "qca/crbtfw%02x.tlv", rom_ver);
839 break;
840 case QCA_WCN3988:
841 snprintf(config.fwname, sizeof(config.fwname),
842 "qca/apbtfw%02x.tlv", rom_ver);
843 break;
844 case QCA_WCN6750:
845 /* Choose mbn file by default.If mbn file is not found
846 * then choose tlv file
847 */
848 config.type = ELF_TYPE_PATCH;
849 snprintf(config.fwname, sizeof(config.fwname),
850 "qca/msbtfw%02x.mbn", rom_ver);
851 break;
852 case QCA_WCN6855:
853 snprintf(config.fwname, sizeof(config.fwname),
854 "qca/hpbtfw%02x.tlv", rom_ver);
855 break;
856 case QCA_WCN7850:
857 snprintf(config.fwname, sizeof(config.fwname),
858 "qca/hmtbtfw%02x.tlv", rom_ver);
859 break;
860 default:
861 snprintf(config.fwname, sizeof(config.fwname),
862 "qca/rampatch_%08x.bin", soc_ver);
863 }
864 }
865
866 err = qca_download_firmware(hdev, &config, soc_type, rom_ver);
867 if (err < 0) {
868 bt_dev_err(hdev, "QCA Failed to download patch (%d)", err);
869 return err;
870 }
871
872 /* Give the controller some time to get ready to receive the NVM */
873 msleep(10);
874
875 if (soc_type == QCA_QCA2066 || soc_type == QCA_WCN7850)
876 qca_read_fw_board_id(hdev, &boardid);
877
878 /* Download NVM configuration */
879 config.type = TLV_TYPE_NVM;
880 if (firmware_name) {
881 /* The firmware name has an extension, use it directly */
882 if (qca_filename_has_extension(firmware_name)) {
883 snprintf(config.fwname, sizeof(config.fwname), "qca/%s", firmware_name);
884 } else {
885 qca_read_fw_board_id(hdev, &boardid);
886 qca_get_nvm_name_by_board(config.fwname, sizeof(config.fwname),
887 firmware_name, soc_type, ver, 0, boardid);
888 }
889 } else {
890 switch (soc_type) {
891 case QCA_QCA2066:
892 qca_get_nvm_name_by_board(config.fwname,
893 sizeof(config.fwname), "hpnv", soc_type, ver,
894 rom_ver, boardid);
895 break;
896 case QCA_QCA6390:
897 snprintf(config.fwname, sizeof(config.fwname),
898 "qca/htnv%02x.bin", rom_ver);
899 break;
900 case QCA_QCC2072:
901 snprintf(config.fwname, sizeof(config.fwname),
902 "qca/ornnv%02x.bin", rom_ver);
903 break;
904 case QCA_WCN3950:
905 if (le32_to_cpu(ver.soc_id) == QCA_WCN3950_SOC_ID_T)
906 variant = "t";
907 else if (le32_to_cpu(ver.soc_id) == QCA_WCN3950_SOC_ID_S)
908 variant = "s";
909
910 snprintf(config.fwname, sizeof(config.fwname),
911 "qca/cmnv%02x%s.bin", rom_ver, variant);
912 break;
913 case QCA_WCN3990:
914 case QCA_WCN3991:
915 case QCA_WCN3998:
916 if (le32_to_cpu(ver.soc_id) == QCA_WCN3991_SOC_ID)
917 variant = "u";
918
919 snprintf(config.fwname, sizeof(config.fwname),
920 "qca/crnv%02x%s.bin", rom_ver, variant);
921 break;
922 case QCA_WCN3988:
923 snprintf(config.fwname, sizeof(config.fwname),
924 "qca/apnv%02x.bin", rom_ver);
925 break;
926 case QCA_WCN6750:
927 snprintf(config.fwname, sizeof(config.fwname),
928 "qca/msnv%02x.bin", rom_ver);
929 break;
930 case QCA_WCN6855:
931 qca_read_fw_board_id(hdev, &boardid);
932 qca_get_nvm_name_by_board(config.fwname, sizeof(config.fwname),
933 "hpnv", soc_type, ver, rom_ver, boardid);
934 break;
935 case QCA_WCN7850:
936 qca_get_nvm_name_by_board(config.fwname, sizeof(config.fwname),
937 "hmtnv", soc_type, ver, rom_ver, boardid);
938 break;
939 default:
940 snprintf(config.fwname, sizeof(config.fwname),
941 "qca/nvm_%08x.bin", soc_ver);
942 }
943 }
944
945 err = qca_download_firmware(hdev, &config, soc_type, rom_ver);
946 if (err < 0) {
947 bt_dev_err(hdev, "QCA Failed to download NVM (%d)", err);
948 return err;
949 }
950
951 switch (soc_type) {
952 case QCA_WCN3991:
953 case QCA_QCA2066:
954 case QCA_QCA6390:
955 case QCA_WCN6750:
956 case QCA_WCN6855:
957 case QCA_WCN7850:
958 err = qca_disable_soc_logging(hdev);
959 if (err < 0)
960 return err;
961 break;
962 default:
963 break;
964 }
965
966 /* WCN399x and WCN6750 supports the Microsoft vendor extension with 0xFD70 as the
967 * VsMsftOpCode.
968 */
969 switch (soc_type) {
970 case QCA_WCN3950:
971 case QCA_WCN3988:
972 case QCA_WCN3990:
973 case QCA_WCN3991:
974 case QCA_WCN3998:
975 case QCA_WCN6750:
976 hci_set_msft_opcode(hdev, 0xFD70);
977 break;
978 default:
979 break;
980 }
981
982 /* Perform HCI reset */
983 err = qca_send_reset(hdev);
984 if (err < 0) {
985 bt_dev_err(hdev, "QCA Failed to run HCI_RESET (%d)", err);
986 return err;
987 }
988
989 switch (soc_type) {
990 case QCA_WCN3991:
991 case QCA_WCN6750:
992 case QCA_WCN6855:
993 case QCA_WCN7850:
994 /* get fw build info */
995 err = qca_read_fw_build_info(hdev);
996 if (err < 0)
997 return err;
998 break;
999 default:
1000 break;
1001 }
1002
1003 err = qca_check_bdaddr(hdev, &config);
1004 if (err)
1005 return err;
1006
1007 bt_dev_info(hdev, "QCA setup on UART is completed");
1008
1009 return 0;
1010 }
1011 EXPORT_SYMBOL_GPL(qca_uart_setup);
1012
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] Bluetooth: qca: add QCC2072 support
2026-02-09 7:03 ` [PATCH v2 2/2] Bluetooth: qca: add QCC2072 support Vivek Sahu
2026-02-09 19:11 ` kernel test robot
@ 2026-02-10 1:23 ` kernel test robot
1 sibling, 0 replies; 6+ messages in thread
From: kernel test robot @ 2026-02-10 1:23 UTC (permalink / raw)
To: Vivek Sahu, Marcel Holtmann, Luiz Augusto von Dentz, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski,
Balakrishna Godavarthi, Rocky Liao
Cc: oe-kbuild-all, quic_mohamull, quic_hbandi, linux-bluetooth,
devicetree, linux-kernel, linux-arm-msm, Vivek Sahu
Hi Vivek,
kernel test robot noticed the following build warnings:
[auto build test WARNING on bluetooth/master]
[also build test WARNING on robh/for-next linus/master v6.19]
[cannot apply to bluetooth-next/master next-20260205]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Vivek-Sahu/Bluetooth-qca-add-QCC2072-support/20260209-150905
base: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git master
patch link: https://lore.kernel.org/r/20260209070356.187301-2-vivek.sahu%40oss.qualcomm.com
patch subject: [PATCH v2 2/2] Bluetooth: qca: add QCC2072 support
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20260210/202602100949.3T4kUNgD-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260210/202602100949.3T4kUNgD-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202602100949.3T4kUNgD-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/bluetooth/btqca.c:830:3: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
830 | case QCA_WCN3950:
| ^
drivers/bluetooth/btqca.c:830:3: note: insert '__attribute__((fallthrough));' to silence this warning
830 | case QCA_WCN3950:
| ^
| __attribute__((fallthrough));
drivers/bluetooth/btqca.c:830:3: note: insert 'break;' to avoid fall-through
830 | case QCA_WCN3950:
| ^
| break;
1 warning generated.
vim +830 drivers/bluetooth/btqca.c
e41137d8bd1a8e Zijun Hu 2024-04-17 782
aadebac4639d84 Balakrishna Godavarthi 2018-08-03 783 int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
059924fdf6c1c3 Venkata Lakshmi Narayana Gubba 2020-11-19 784 enum qca_btsoc_type soc_type, struct qca_btsoc_version ver,
30209aeff75fe1 Cheng Jiang 2025-01-07 785 const char *firmware_name, const char *rampatch_name)
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 786 {
dd336649ba8978 Johan Hovold 2024-04-30 787 struct qca_fw_config config = {};
1cc41b5092e3aa Dmitry Baryshkov 2025-02-07 788 const char *variant = "";
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 789 int err;
523760b7ff8871 Harish Bandi 2019-04-26 790 u8 rom_ver = 0;
059924fdf6c1c3 Venkata Lakshmi Narayana Gubba 2020-11-19 791 u32 soc_ver;
a7f8dedb4be2cc Tim Jiang 2023-09-12 792 u16 boardid = 0;
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 793
ba493d4fbcb84b Balakrishna Godavarthi 2018-08-03 794 bt_dev_dbg(hdev, "QCA setup on UART");
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 795
059924fdf6c1c3 Venkata Lakshmi Narayana Gubba 2020-11-19 796 soc_ver = get_soc_ver(ver.soc_id, ver.rom_ver);
059924fdf6c1c3 Venkata Lakshmi Narayana Gubba 2020-11-19 797
059924fdf6c1c3 Venkata Lakshmi Narayana Gubba 2020-11-19 798 bt_dev_info(hdev, "QCA controller version 0x%08x", soc_ver);
059924fdf6c1c3 Venkata Lakshmi Narayana Gubba 2020-11-19 799
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 800 config.user_baud_rate = baudrate;
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 801
4219d4686875fd Balakrishna Godavarthi 2018-08-03 802 /* Firmware files to download are based on ROM version.
4219d4686875fd Balakrishna Godavarthi 2018-08-03 803 * ROM version is derived from last two bytes of soc_ver.
4219d4686875fd Balakrishna Godavarthi 2018-08-03 804 */
f904feefe60c28 Luca Weiss 2023-08-02 805 if (soc_type == QCA_WCN3988)
f904feefe60c28 Luca Weiss 2023-08-02 806 rom_ver = ((soc_ver & 0x00000f00) >> 0x05) | (soc_ver & 0x0000000f);
f904feefe60c28 Luca Weiss 2023-08-02 807 else
99fba8e3f1d1fd Venkata Lakshmi Narayana Gubba 2021-05-18 808 rom_ver = ((soc_ver & 0x00000f00) >> 0x04) | (soc_ver & 0x0000000f);
99fba8e3f1d1fd Venkata Lakshmi Narayana Gubba 2021-05-18 809
4fac8a7ac80b18 Sai Teja Aluvala 2022-01-07 810 if (soc_type == QCA_WCN6750)
4fac8a7ac80b18 Sai Teja Aluvala 2022-01-07 811 qca_send_patch_config_cmd(hdev);
4fac8a7ac80b18 Sai Teja Aluvala 2022-01-07 812
99fba8e3f1d1fd Venkata Lakshmi Narayana Gubba 2021-05-18 813 /* Download rampatch file */
99fba8e3f1d1fd Venkata Lakshmi Narayana Gubba 2021-05-18 814 config.type = TLV_TYPE_PATCH;
30209aeff75fe1 Cheng Jiang 2025-01-07 815 if (rampatch_name) {
30209aeff75fe1 Cheng Jiang 2025-01-07 816 snprintf(config.fwname, sizeof(config.fwname), "qca/%s", rampatch_name);
30209aeff75fe1 Cheng Jiang 2025-01-07 817 } else {
691d54d0f7cb14 Neil Armstrong 2023-08-16 818 switch (soc_type) {
5590323f5a3811 Vivek Sahu 2026-02-09 819 case QCA_QCA2066:
5590323f5a3811 Vivek Sahu 2026-02-09 820 snprintf(config.fwname, sizeof(config.fwname),
5590323f5a3811 Vivek Sahu 2026-02-09 821 "qca/hpbtfw%02x.tlv", rom_ver);
5590323f5a3811 Vivek Sahu 2026-02-09 822 break;
5590323f5a3811 Vivek Sahu 2026-02-09 823 case QCA_QCA6390:
5590323f5a3811 Vivek Sahu 2026-02-09 824 snprintf(config.fwname, sizeof(config.fwname),
5590323f5a3811 Vivek Sahu 2026-02-09 825 "qca/htbtfw%02x.tlv", rom_ver);
5590323f5a3811 Vivek Sahu 2026-02-09 826 break;
5590323f5a3811 Vivek Sahu 2026-02-09 827 case QCA_QCC2072:
5590323f5a3811 Vivek Sahu 2026-02-09 828 snprintf(config.fwname, sizeof(config.fwname),
5590323f5a3811 Vivek Sahu 2026-02-09 829 "qca/ornbtfw%02x.tlv", rom_ver);
d5712c511cb358 Dmitry Baryshkov 2025-02-07 @830 case QCA_WCN3950:
d5712c511cb358 Dmitry Baryshkov 2025-02-07 831 snprintf(config.fwname, sizeof(config.fwname),
d5712c511cb358 Dmitry Baryshkov 2025-02-07 832 "qca/cmbtfw%02x.tlv", rom_ver);
d5712c511cb358 Dmitry Baryshkov 2025-02-07 833 break;
691d54d0f7cb14 Neil Armstrong 2023-08-16 834 case QCA_WCN3990:
691d54d0f7cb14 Neil Armstrong 2023-08-16 835 case QCA_WCN3991:
691d54d0f7cb14 Neil Armstrong 2023-08-16 836 case QCA_WCN3998:
4219d4686875fd Balakrishna Godavarthi 2018-08-03 837 snprintf(config.fwname, sizeof(config.fwname),
4219d4686875fd Balakrishna Godavarthi 2018-08-03 838 "qca/crbtfw%02x.tlv", rom_ver);
691d54d0f7cb14 Neil Armstrong 2023-08-16 839 break;
691d54d0f7cb14 Neil Armstrong 2023-08-16 840 case QCA_WCN3988:
691d54d0f7cb14 Neil Armstrong 2023-08-16 841 snprintf(config.fwname, sizeof(config.fwname),
691d54d0f7cb14 Neil Armstrong 2023-08-16 842 "qca/apbtfw%02x.tlv", rom_ver);
691d54d0f7cb14 Neil Armstrong 2023-08-16 843 break;
691d54d0f7cb14 Neil Armstrong 2023-08-16 844 case QCA_WCN6750:
ecf6b2d9566606 Venkata Lakshmi Narayana Gubba 2021-05-18 845 /* Choose mbn file by default.If mbn file is not found
ecf6b2d9566606 Venkata Lakshmi Narayana Gubba 2021-05-18 846 * then choose tlv file
ecf6b2d9566606 Venkata Lakshmi Narayana Gubba 2021-05-18 847 */
ecf6b2d9566606 Venkata Lakshmi Narayana Gubba 2021-05-18 848 config.type = ELF_TYPE_PATCH;
d8f97da1b92d2f Venkata Lakshmi Narayana Gubba 2021-05-18 849 snprintf(config.fwname, sizeof(config.fwname),
ecf6b2d9566606 Venkata Lakshmi Narayana Gubba 2021-05-18 850 "qca/msbtfw%02x.mbn", rom_ver);
691d54d0f7cb14 Neil Armstrong 2023-08-16 851 break;
691d54d0f7cb14 Neil Armstrong 2023-08-16 852 case QCA_WCN6855:
095327fede005f Steev Klimaszewski 2023-03-26 853 snprintf(config.fwname, sizeof(config.fwname),
095327fede005f Steev Klimaszewski 2023-03-26 854 "qca/hpbtfw%02x.tlv", rom_ver);
691d54d0f7cb14 Neil Armstrong 2023-08-16 855 break;
e0c1278ac89b03 Neil Armstrong 2023-08-16 856 case QCA_WCN7850:
e0c1278ac89b03 Neil Armstrong 2023-08-16 857 snprintf(config.fwname, sizeof(config.fwname),
e0c1278ac89b03 Neil Armstrong 2023-08-16 858 "qca/hmtbtfw%02x.tlv", rom_ver);
e0c1278ac89b03 Neil Armstrong 2023-08-16 859 break;
691d54d0f7cb14 Neil Armstrong 2023-08-16 860 default:
4219d4686875fd Balakrishna Godavarthi 2018-08-03 861 snprintf(config.fwname, sizeof(config.fwname),
4219d4686875fd Balakrishna Godavarthi 2018-08-03 862 "qca/rampatch_%08x.bin", soc_ver);
4219d4686875fd Balakrishna Godavarthi 2018-08-03 863 }
30209aeff75fe1 Cheng Jiang 2025-01-07 864 }
4219d4686875fd Balakrishna Godavarthi 2018-08-03 865
ecf6b2d9566606 Venkata Lakshmi Narayana Gubba 2021-05-18 866 err = qca_download_firmware(hdev, &config, soc_type, rom_ver);
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 867 if (err < 0) {
ba493d4fbcb84b Balakrishna Godavarthi 2018-08-03 868 bt_dev_err(hdev, "QCA Failed to download patch (%d)", err);
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 869 return err;
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 870 }
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 871
8059ba0bd0e469 Matthias Kaehlcke 2019-07-09 872 /* Give the controller some time to get ready to receive the NVM */
8059ba0bd0e469 Matthias Kaehlcke 2019-07-09 873 msleep(10);
8059ba0bd0e469 Matthias Kaehlcke 2019-07-09 874
e41137d8bd1a8e Zijun Hu 2024-04-17 875 if (soc_type == QCA_QCA2066 || soc_type == QCA_WCN7850)
a7f8dedb4be2cc Tim Jiang 2023-09-12 876 qca_read_fw_board_id(hdev, &boardid);
a7f8dedb4be2cc Tim Jiang 2023-09-12 877
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 878 /* Download NVM configuration */
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 879 config.type = TLV_TYPE_NVM;
691d54d0f7cb14 Neil Armstrong 2023-08-16 880 if (firmware_name) {
a4c5a468c6329b Cheng Jiang 2025-01-07 881 /* The firmware name has an extension, use it directly */
a4c5a468c6329b Cheng Jiang 2025-01-07 882 if (qca_filename_has_extension(firmware_name)) {
a4c5a468c6329b Cheng Jiang 2025-01-07 883 snprintf(config.fwname, sizeof(config.fwname), "qca/%s", firmware_name);
a4c5a468c6329b Cheng Jiang 2025-01-07 884 } else {
a4c5a468c6329b Cheng Jiang 2025-01-07 885 qca_read_fw_board_id(hdev, &boardid);
a4c5a468c6329b Cheng Jiang 2025-01-07 886 qca_get_nvm_name_by_board(config.fwname, sizeof(config.fwname),
a4c5a468c6329b Cheng Jiang 2025-01-07 887 firmware_name, soc_type, ver, 0, boardid);
a4c5a468c6329b Cheng Jiang 2025-01-07 888 }
691d54d0f7cb14 Neil Armstrong 2023-08-16 889 } else {
691d54d0f7cb14 Neil Armstrong 2023-08-16 890 switch (soc_type) {
5590323f5a3811 Vivek Sahu 2026-02-09 891 case QCA_QCA2066:
5590323f5a3811 Vivek Sahu 2026-02-09 892 qca_get_nvm_name_by_board(config.fwname,
5590323f5a3811 Vivek Sahu 2026-02-09 893 sizeof(config.fwname), "hpnv", soc_type, ver,
5590323f5a3811 Vivek Sahu 2026-02-09 894 rom_ver, boardid);
5590323f5a3811 Vivek Sahu 2026-02-09 895 break;
5590323f5a3811 Vivek Sahu 2026-02-09 896 case QCA_QCA6390:
5590323f5a3811 Vivek Sahu 2026-02-09 897 snprintf(config.fwname, sizeof(config.fwname),
5590323f5a3811 Vivek Sahu 2026-02-09 898 "qca/htnv%02x.bin", rom_ver);
5590323f5a3811 Vivek Sahu 2026-02-09 899 break;
5590323f5a3811 Vivek Sahu 2026-02-09 900 case QCA_QCC2072:
5590323f5a3811 Vivek Sahu 2026-02-09 901 snprintf(config.fwname, sizeof(config.fwname),
5590323f5a3811 Vivek Sahu 2026-02-09 902 "qca/ornnv%02x.bin", rom_ver);
5590323f5a3811 Vivek Sahu 2026-02-09 903 break;
d5712c511cb358 Dmitry Baryshkov 2025-02-07 904 case QCA_WCN3950:
d5712c511cb358 Dmitry Baryshkov 2025-02-07 905 if (le32_to_cpu(ver.soc_id) == QCA_WCN3950_SOC_ID_T)
d5712c511cb358 Dmitry Baryshkov 2025-02-07 906 variant = "t";
d5712c511cb358 Dmitry Baryshkov 2025-02-07 907 else if (le32_to_cpu(ver.soc_id) == QCA_WCN3950_SOC_ID_S)
e92900c9803fb3 Dmitry Baryshkov 2025-04-01 908 variant = "s";
d5712c511cb358 Dmitry Baryshkov 2025-02-07 909
d5712c511cb358 Dmitry Baryshkov 2025-02-07 910 snprintf(config.fwname, sizeof(config.fwname),
d5712c511cb358 Dmitry Baryshkov 2025-02-07 911 "qca/cmnv%02x%s.bin", rom_ver, variant);
d5712c511cb358 Dmitry Baryshkov 2025-02-07 912 break;
691d54d0f7cb14 Neil Armstrong 2023-08-16 913 case QCA_WCN3990:
691d54d0f7cb14 Neil Armstrong 2023-08-16 914 case QCA_WCN3991:
691d54d0f7cb14 Neil Armstrong 2023-08-16 915 case QCA_WCN3998:
1cc41b5092e3aa Dmitry Baryshkov 2025-02-07 916 if (le32_to_cpu(ver.soc_id) == QCA_WCN3991_SOC_ID)
1cc41b5092e3aa Dmitry Baryshkov 2025-02-07 917 variant = "u";
1cc41b5092e3aa Dmitry Baryshkov 2025-02-07 918
4219d4686875fd Balakrishna Godavarthi 2018-08-03 919 snprintf(config.fwname, sizeof(config.fwname),
1cc41b5092e3aa Dmitry Baryshkov 2025-02-07 920 "qca/crnv%02x%s.bin", rom_ver, variant);
691d54d0f7cb14 Neil Armstrong 2023-08-16 921 break;
691d54d0f7cb14 Neil Armstrong 2023-08-16 922 case QCA_WCN3988:
691d54d0f7cb14 Neil Armstrong 2023-08-16 923 snprintf(config.fwname, sizeof(config.fwname),
691d54d0f7cb14 Neil Armstrong 2023-08-16 924 "qca/apnv%02x.bin", rom_ver);
691d54d0f7cb14 Neil Armstrong 2023-08-16 925 break;
691d54d0f7cb14 Neil Armstrong 2023-08-16 926 case QCA_WCN6750:
d8f97da1b92d2f Venkata Lakshmi Narayana Gubba 2021-05-18 927 snprintf(config.fwname, sizeof(config.fwname),
d8f97da1b92d2f Venkata Lakshmi Narayana Gubba 2021-05-18 928 "qca/msnv%02x.bin", rom_ver);
691d54d0f7cb14 Neil Armstrong 2023-08-16 929 break;
691d54d0f7cb14 Neil Armstrong 2023-08-16 930 case QCA_WCN6855:
a2fad248947d70 Zijun Hu 2025-01-13 931 qca_read_fw_board_id(hdev, &boardid);
a2fad248947d70 Zijun Hu 2025-01-13 932 qca_get_nvm_name_by_board(config.fwname, sizeof(config.fwname),
a2fad248947d70 Zijun Hu 2025-01-13 933 "hpnv", soc_type, ver, rom_ver, boardid);
691d54d0f7cb14 Neil Armstrong 2023-08-16 934 break;
e0c1278ac89b03 Neil Armstrong 2023-08-16 935 case QCA_WCN7850:
a4c5a468c6329b Cheng Jiang 2025-01-07 936 qca_get_nvm_name_by_board(config.fwname, sizeof(config.fwname),
a4c5a468c6329b Cheng Jiang 2025-01-07 937 "hmtnv", soc_type, ver, rom_ver, boardid);
e0c1278ac89b03 Neil Armstrong 2023-08-16 938 break;
691d54d0f7cb14 Neil Armstrong 2023-08-16 939 default:
4219d4686875fd Balakrishna Godavarthi 2018-08-03 940 snprintf(config.fwname, sizeof(config.fwname),
4219d4686875fd Balakrishna Godavarthi 2018-08-03 941 "qca/nvm_%08x.bin", soc_ver);
691d54d0f7cb14 Neil Armstrong 2023-08-16 942 }
691d54d0f7cb14 Neil Armstrong 2023-08-16 943 }
4219d4686875fd Balakrishna Godavarthi 2018-08-03 944
ecf6b2d9566606 Venkata Lakshmi Narayana Gubba 2021-05-18 945 err = qca_download_firmware(hdev, &config, soc_type, rom_ver);
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 946 if (err < 0) {
ba493d4fbcb84b Balakrishna Godavarthi 2018-08-03 947 bt_dev_err(hdev, "QCA Failed to download NVM (%d)", err);
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 948 return err;
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 949 }
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 950
691d54d0f7cb14 Neil Armstrong 2023-08-16 951 switch (soc_type) {
691d54d0f7cb14 Neil Armstrong 2023-08-16 952 case QCA_WCN3991:
a7f8dedb4be2cc Tim Jiang 2023-09-12 953 case QCA_QCA2066:
691d54d0f7cb14 Neil Armstrong 2023-08-16 954 case QCA_QCA6390:
691d54d0f7cb14 Neil Armstrong 2023-08-16 955 case QCA_WCN6750:
691d54d0f7cb14 Neil Armstrong 2023-08-16 956 case QCA_WCN6855:
e0c1278ac89b03 Neil Armstrong 2023-08-16 957 case QCA_WCN7850:
590deccf4c0690 Balakrishna Godavarthi 2020-06-12 958 err = qca_disable_soc_logging(hdev);
590deccf4c0690 Balakrishna Godavarthi 2020-06-12 959 if (err < 0)
590deccf4c0690 Balakrishna Godavarthi 2020-06-12 960 return err;
691d54d0f7cb14 Neil Armstrong 2023-08-16 961 break;
691d54d0f7cb14 Neil Armstrong 2023-08-16 962 default:
691d54d0f7cb14 Neil Armstrong 2023-08-16 963 break;
590deccf4c0690 Balakrishna Godavarthi 2020-06-12 964 }
590deccf4c0690 Balakrishna Godavarthi 2020-06-12 965
d8f97da1b92d2f Venkata Lakshmi Narayana Gubba 2021-05-18 966 /* WCN399x and WCN6750 supports the Microsoft vendor extension with 0xFD70 as the
eaf19b0c47d142 Miao-chen Chou 2020-12-17 967 * VsMsftOpCode.
eaf19b0c47d142 Miao-chen Chou 2020-12-17 968 */
eaf19b0c47d142 Miao-chen Chou 2020-12-17 969 switch (soc_type) {
d5712c511cb358 Dmitry Baryshkov 2025-02-07 970 case QCA_WCN3950:
691d54d0f7cb14 Neil Armstrong 2023-08-16 971 case QCA_WCN3988:
eaf19b0c47d142 Miao-chen Chou 2020-12-17 972 case QCA_WCN3990:
eaf19b0c47d142 Miao-chen Chou 2020-12-17 973 case QCA_WCN3991:
eaf19b0c47d142 Miao-chen Chou 2020-12-17 974 case QCA_WCN3998:
d8f97da1b92d2f Venkata Lakshmi Narayana Gubba 2021-05-18 975 case QCA_WCN6750:
eaf19b0c47d142 Miao-chen Chou 2020-12-17 976 hci_set_msft_opcode(hdev, 0xFD70);
eaf19b0c47d142 Miao-chen Chou 2020-12-17 977 break;
eaf19b0c47d142 Miao-chen Chou 2020-12-17 978 default:
eaf19b0c47d142 Miao-chen Chou 2020-12-17 979 break;
eaf19b0c47d142 Miao-chen Chou 2020-12-17 980 }
eaf19b0c47d142 Miao-chen Chou 2020-12-17 981
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 982 /* Perform HCI reset */
ba493d4fbcb84b Balakrishna Godavarthi 2018-08-03 983 err = qca_send_reset(hdev);
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 984 if (err < 0) {
ba493d4fbcb84b Balakrishna Godavarthi 2018-08-03 985 bt_dev_err(hdev, "QCA Failed to run HCI_RESET (%d)", err);
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 986 return err;
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 987 }
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 988
095327fede005f Steev Klimaszewski 2023-03-26 989 switch (soc_type) {
095327fede005f Steev Klimaszewski 2023-03-26 990 case QCA_WCN3991:
095327fede005f Steev Klimaszewski 2023-03-26 991 case QCA_WCN6750:
095327fede005f Steev Klimaszewski 2023-03-26 992 case QCA_WCN6855:
e0c1278ac89b03 Neil Armstrong 2023-08-16 993 case QCA_WCN7850:
c0187b0bd3e94c Venkata Lakshmi Narayana Gubba 2020-12-08 994 /* get fw build info */
c0187b0bd3e94c Venkata Lakshmi Narayana Gubba 2020-12-08 995 err = qca_read_fw_build_info(hdev);
c0187b0bd3e94c Venkata Lakshmi Narayana Gubba 2020-12-08 996 if (err < 0)
c0187b0bd3e94c Venkata Lakshmi Narayana Gubba 2020-12-08 997 return err;
095327fede005f Steev Klimaszewski 2023-03-26 998 break;
095327fede005f Steev Klimaszewski 2023-03-26 999 default:
095327fede005f Steev Klimaszewski 2023-03-26 1000 break;
c0187b0bd3e94c Venkata Lakshmi Narayana Gubba 2020-12-08 1001 }
c0187b0bd3e94c Venkata Lakshmi Narayana Gubba 2020-12-08 1002
dd336649ba8978 Johan Hovold 2024-04-30 1003 err = qca_check_bdaddr(hdev, &config);
32868e126c7887 Johan Hovold 2024-04-16 1004 if (err)
32868e126c7887 Johan Hovold 2024-04-16 1005 return err;
32868e126c7887 Johan Hovold 2024-04-16 1006
ba493d4fbcb84b Balakrishna Godavarthi 2018-08-03 1007 bt_dev_info(hdev, "QCA setup on UART is completed");
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 1008
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 1009 return 0;
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 1010 }
ba493d4fbcb84b Balakrishna Godavarthi 2018-08-03 1011 EXPORT_SYMBOL_GPL(qca_uart_setup);
83e81961ff7ef7 Ben Young Tae Kim 2015-08-10 1012
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-02-10 1:24 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-09 7:03 [PATCH v2 1/2] dt-bindings: net: bluetooth: qualcomm: add bindings for QCC2072 Vivek Sahu
2026-02-09 7:03 ` [PATCH v2 2/2] Bluetooth: qca: add QCC2072 support Vivek Sahu
2026-02-09 19:11 ` kernel test robot
2026-02-10 1:23 ` kernel test robot
2026-02-09 7:14 ` [PATCH v2 1/2] dt-bindings: net: bluetooth: qualcomm: add bindings for QCC2072 Vivek Sahu
2026-02-09 7:59 ` [v2,1/2] " bluez.test.bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox