wifi: ath12k: check hardware major version for WCN7850
authorCarl Huang <quic_cjhuang@quicinc.com>
Thu, 1 Jun 2023 10:35:15 +0000 (13:35 +0300)
committerKalle Valo <quic_kvalo@quicinc.com>
Fri, 9 Jun 2023 13:32:23 +0000 (16:32 +0300)
This is to check the hardware major version for WCN7850 so only
supported hardware is initialized. Now only WCN7850 with major
version 2 is supported.

Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4

Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20230518105741.1281424-1-quic_cjhuang@quicinc.com
drivers/net/wireless/ath/ath12k/pci.c

index 9f174da..5990a55 100644 (file)
@@ -1227,8 +1227,20 @@ static int ath12k_pci_probe(struct pci_dev *pdev,
        case WCN7850_DEVICE_ID:
                ab_pci->msi_config = &ath12k_msi_config[0];
                ab->static_window_map = false;
-               ab->hw_rev = ATH12K_HW_WCN7850_HW20;
                ab_pci->pci_ops = &ath12k_pci_ops_wcn7850;
+               ath12k_pci_read_hw_version(ab, &soc_hw_version_major,
+                                          &soc_hw_version_minor);
+               switch (soc_hw_version_major) {
+               case ATH12K_PCI_SOC_HW_VERSION_2:
+                       ab->hw_rev = ATH12K_HW_WCN7850_HW20;
+                       break;
+               default:
+                       dev_err(&pdev->dev,
+                               "Unknown hardware version found for WCN7850: 0x%x\n",
+                               soc_hw_version_major);
+                       ret = -EOPNOTSUPP;
+                       goto err_pci_free_region;
+               }
                break;
 
        default: