ath11k: fill appropriate QMI service instance id for QCA6390
authorGovind Singh <govinds@codeaurora.org>
Fri, 14 Aug 2020 07:10:22 +0000 (10:10 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Mon, 17 Aug 2020 10:18:16 +0000 (13:18 +0300)
QMI service instance id is used for qmi service lookup, IPQ8074 and QCA6390
uses different instance id for service lookup.  Fill appropriate QMI service
instance id for respective targets.

Tested-on: QCA6390 hw2.0 PCI WLAN.HST.1.0.1-01740-QCAHSTSWPLZ_V2_TO_X86-1
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.1.0.1-01238-QCAHKSWPL_SILICONZ-2

Signed-off-by: Govind Singh <govinds@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/1597389030-13887-4-git-send-email-kvalo@codeaurora.org
drivers/net/wireless/ath/ath11k/ahb.c
drivers/net/wireless/ath/ath11k/pci.c
drivers/net/wireless/ath/ath11k/qmi.c
drivers/net/wireless/ath/ath11k/qmi.h

index 06e599c..2e0d90c 100644 (file)
@@ -581,6 +581,7 @@ static void ath11k_ahb_init_qmi_ce_config(struct ath11k_base *ab)
        cfg->tgt_ce = target_ce_config_wlan;
        cfg->svc_to_ce_map_len = ARRAY_SIZE(target_service_to_ce_map_wlan);
        cfg->svc_to_ce_map = target_service_to_ce_map_wlan;
+       ab->qmi.service_ins_id = ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_IPQ8074;
 }
 
 static void ath11k_ahb_free_ext_irq(struct ath11k_base *ab)
index dd3122b..47ee568 100644 (file)
@@ -393,6 +393,7 @@ static void ath11k_pci_init_qmi_ce_config(struct ath11k_base *ab)
 
        cfg->svc_to_ce_map = target_service_to_ce_map_wlan;
        cfg->svc_to_ce_map_len = ARRAY_SIZE(target_service_to_ce_map_wlan);
+       ab->qmi.service_ins_id = ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_QCA6390;
 }
 
 static void ath11k_pci_ce_irq_enable(struct ath11k_base *ab, u16 ce_id)
index b182d61..acf7a3f 100644 (file)
@@ -2610,7 +2610,7 @@ int ath11k_qmi_init_service(struct ath11k_base *ab)
 
        ret = qmi_add_lookup(&ab->qmi.handle, ATH11K_QMI_WLFW_SERVICE_ID_V01,
                             ATH11K_QMI_WLFW_SERVICE_VERS_V01,
-                            ATH11K_QMI_WLFW_SERVICE_INS_ID_V01);
+                            ab->qmi.service_ins_id);
        if (ret < 0) {
                ath11k_warn(ab, "failed to add qmi lookup\n");
                return ret;
index cd484a4..d55ce6c 100644 (file)
@@ -18,6 +18,8 @@
 #define ATH11K_QMI_WLFW_SERVICE_ID_V01         0x45
 #define ATH11K_QMI_WLFW_SERVICE_VERS_V01       0x01
 #define ATH11K_QMI_WLFW_SERVICE_INS_ID_V01     0x02
+#define ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_QCA6390     0x01
+#define ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_IPQ8074     0x02
 #define ATH11K_QMI_WLANFW_MAX_TIMESTAMP_LEN_V01        32
 #define ATH11K_QMI_RESP_LEN_MAX                        8192
 #define ATH11K_QMI_WLANFW_MAX_NUM_MEM_SEG_V01  32
@@ -122,6 +124,7 @@ struct ath11k_qmi {
        u8 cal_done;
        struct target_info target;
        struct m3_mem_region m3_mem;
+       unsigned int service_ins_id;
 };
 
 #define QMI_WLANFW_HOST_CAP_REQ_MSG_V01_MAX_LEN                189