]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Bluetooth: qca: Refactor code on the basis of chipset names
authorVivek Sahu <vivek.sahu@oss.qualcomm.com>
Tue, 10 Feb 2026 12:01:01 +0000 (17:31 +0530)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Fri, 10 Apr 2026 14:22:00 +0000 (10:22 -0400)
Whenever new chipset support is added to the driver code,
we ended up adding chipset name to the last of the switch case
arising code readability issue because of improper sorting of
the chipset names in various places of the code.

Refactor code such a way that new chipset can be added easily
in the code without compromising code readability.

Signed-off-by: Vivek Sahu <vivek.sahu@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/btqca.c
drivers/bluetooth/hci_qca.c

index 3b06269201934118b796a6610843c340ea9d8092..dda76365726f0bfe0e80e05fe04859fa4f0592e1 100644 (file)
@@ -801,6 +801,14 @@ 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_WCN3950:
                        snprintf(config.fwname, sizeof(config.fwname),
                                 "qca/cmbtfw%02x.tlv", rom_ver);
@@ -815,14 +823,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
@@ -892,6 +892,16 @@ 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_WCN3950:
                        if (le32_to_cpu(ver.soc_id) == QCA_WCN3950_SOC_ID_T)
                                variant = "t";
@@ -914,15 +924,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);
@@ -956,9 +957,9 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
        }
 
        switch (soc_type) {
-       case QCA_WCN3991:
        case QCA_QCA2066:
        case QCA_QCA6390:
+       case QCA_WCN3991:
        case QCA_WCN6750:
        case QCA_WCN6855:
        case QCA_WCN7850:
index bb9f002aa85e93fd69d4f8b894106527a912599e..1086909691c64a4aa0c28e61b79139fed8b39400 100644 (file)
@@ -1850,6 +1850,7 @@ static int qca_power_on(struct hci_dev *hdev)
                return 0;
 
        switch (soc_type) {
+       case QCA_QCA6390:
        case QCA_WCN3950:
        case QCA_WCN3988:
        case QCA_WCN3990:
@@ -1858,7 +1859,6 @@ static int qca_power_on(struct hci_dev *hdev)
        case QCA_WCN6750:
        case QCA_WCN6855:
        case QCA_WCN7850:
-       case QCA_QCA6390:
                ret = qca_regulator_init(hu);
                break;
 
@@ -2096,6 +2096,18 @@ 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,
+       .capabilities = QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES |
+                       QCA_CAP_HFP_HW_OFFLOAD,
+};
+
+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_wcn3950 __maybe_unused = {
        .soc_type = QCA_WCN3950,
        .vregs = (struct qca_vreg []) {
@@ -2152,18 +2164,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 |
-                       QCA_CAP_HFP_HW_OFFLOAD,
-};
-
-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 []) {
@@ -2402,6 +2402,7 @@ static int qca_serdev_probe(struct serdev_device *serdev)
                qcadev->btsoc_type = QCA_ROME;
 
        switch (qcadev->btsoc_type) {
+       case QCA_QCA6390:
        case QCA_WCN3950:
        case QCA_WCN3988:
        case QCA_WCN3990:
@@ -2410,7 +2411,6 @@ static int qca_serdev_probe(struct serdev_device *serdev)
        case QCA_WCN6750:
        case QCA_WCN6855:
        case QCA_WCN7850:
-       case QCA_QCA6390:
                qcadev->bt_power = devm_kzalloc(&serdev->dev,
                                                sizeof(struct qca_power),
                                                GFP_KERNEL);
@@ -2422,9 +2422,9 @@ static int qca_serdev_probe(struct serdev_device *serdev)
        }
 
        switch (qcadev->btsoc_type) {
+       case QCA_WCN6750:
        case QCA_WCN6855:
        case QCA_WCN7850:
-       case QCA_WCN6750:
                if (!device_property_present(&serdev->dev, "enable-gpios")) {
                        /*
                         * Backward compatibility with old DT sources. If the