Loading drivers/net/wireless/cnss2/Kconfig +9 −0 Original line number Diff line number Diff line Loading @@ -87,3 +87,12 @@ config CNSS_QCA6490 CNSS QCA6490 chipset. These changes are needed to support the new hardware architecture for CNSS QCA6490 chipset. config CNSS_WCN7850 bool "Enable CNSS WCN7850 chipset specific changes" depends on CNSS2 help This enables the changes from WLAN host driver that are specific to CNSS WCN7850 chipset. These changes are needed to support the new hardware architecture for CNSS WCN7850 chipset. drivers/net/wireless/cnss2/bus.h +2 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ #define QCA6390_DEVICE_ID 0x1101 #define QCA6490_VENDOR_ID 0x17CB #define QCA6490_DEVICE_ID 0x1103 #define WCN7850_VENDOR_ID 0x17CB #define WCN7850_DEVICE_ID 0x1107 enum cnss_dev_bus_type cnss_get_dev_bus_type(struct device *dev); enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id); Loading drivers/net/wireless/cnss2/main.c +6 −0 Original line number Diff line number Diff line Loading @@ -2190,6 +2190,7 @@ int cnss_register_ramdump(struct cnss_plat_data *plat_priv) case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: ret = cnss_register_ramdump_v2(plat_priv); break; default: Loading @@ -2209,6 +2210,7 @@ void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv) case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: cnss_unregister_ramdump_v2(plat_priv); break; default: Loading Loading @@ -2723,6 +2725,7 @@ static const struct platform_device_id cnss_platform_id_table[] = { { .name = "qca6290", .driver_data = QCA6290_DEVICE_ID, }, { .name = "qca6390", .driver_data = QCA6390_DEVICE_ID, }, { .name = "qca6490", .driver_data = QCA6490_DEVICE_ID, }, { .name = "wcn7850", .driver_data = WCN7850_DEVICE_ID, }, { }, }; Loading @@ -2739,6 +2742,9 @@ static const struct of_device_id cnss_of_match_table[] = { { .compatible = "qcom,cnss-qca6490", .data = (void *)&cnss_platform_id_table[3]}, { .compatible = "qcom,cnss-wcn7850", .data = (void *)&cnss_platform_id_table[4]}, { }, }; MODULE_DEVICE_TABLE(of, cnss_of_match_table); Loading drivers/net/wireless/cnss2/pci.c +42 −9 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ #define QCA6390_PATH_PREFIX "qca6390/" #define QCA6490_PATH_PREFIX "qca6490/" #define WCN7850_PATH_PREFIX "wcn7850/" #define DEFAULT_M3_FILE_NAME "m3.bin" #define DEFAULT_FW_FILE_NAME "amss.bin" #define FW_V2_FILE_NAME "amss20.bin" Loading Loading @@ -879,6 +880,7 @@ int cnss_pci_recover_link_down(struct cnss_pci_data *pci_priv) switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: break; default: return -EOPNOTSUPP; Loading Loading @@ -2329,6 +2331,7 @@ int cnss_pci_dev_powerup(struct cnss_pci_data *pci_priv) case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: ret = cnss_qca6290_powerup(pci_priv); break; default: Loading Loading @@ -2356,6 +2359,7 @@ int cnss_pci_dev_shutdown(struct cnss_pci_data *pci_priv) case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: ret = cnss_qca6290_shutdown(pci_priv); break; default: Loading Loading @@ -2383,6 +2387,7 @@ int cnss_pci_dev_crash_shutdown(struct cnss_pci_data *pci_priv) case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: cnss_qca6290_crash_shutdown(pci_priv); break; default: Loading Loading @@ -2410,6 +2415,7 @@ int cnss_pci_dev_ramdump(struct cnss_pci_data *pci_priv) case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: ret = cnss_qca6290_ramdump(pci_priv); break; default: Loading Loading @@ -3308,9 +3314,14 @@ int cnss_pci_force_wake_request_sync(struct device *dev, int timeout_us) if (!pci_priv) return -ENODEV; if (pci_priv->device_id != QCA6390_DEVICE_ID && pci_priv->device_id != QCA6490_DEVICE_ID) switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: break; default: return 0; } mhi_ctrl = pci_priv->mhi_ctrl; if (!mhi_ctrl) Loading Loading @@ -3344,9 +3355,14 @@ int cnss_pci_force_wake_request(struct device *dev) if (!pci_priv) return -ENODEV; if (pci_priv->device_id != QCA6390_DEVICE_ID && pci_priv->device_id != QCA6490_DEVICE_ID) switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: break; default: return 0; } mhi_ctrl = pci_priv->mhi_ctrl; if (!mhi_ctrl) Loading Loading @@ -3374,9 +3390,14 @@ int cnss_pci_is_device_awake(struct device *dev) if (!pci_priv) return -ENODEV; if (pci_priv->device_id != QCA6390_DEVICE_ID && pci_priv->device_id != QCA6490_DEVICE_ID) return true; switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: break; default: return 0; } mhi_ctrl = pci_priv->mhi_ctrl; if (!mhi_ctrl) Loading @@ -3396,9 +3417,14 @@ int cnss_pci_force_wake_release(struct device *dev) if (!pci_priv) return -ENODEV; if (pci_priv->device_id != QCA6390_DEVICE_ID && pci_priv->device_id != QCA6490_DEVICE_ID) switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: break; default: return 0; } mhi_ctrl = pci_priv->mhi_ctrl; if (!mhi_ctrl) Loading Loading @@ -4620,6 +4646,10 @@ void cnss_pci_add_fw_prefix_name(struct cnss_pci_data *pci_priv, scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, QCA6490_PATH_PREFIX "%s", name); break; case WCN7850_DEVICE_ID: scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, WCN7850_PATH_PREFIX "%s", name); break; default: scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, "%s", name); break; Loading Loading @@ -5082,6 +5112,7 @@ static int cnss_pci_probe(struct pci_dev *pci_dev, case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: cnss_pci_set_wlaon_pwr_ctrl(pci_priv, false, false, false); timer_setup(&pci_priv->dev_rddm_timer, cnss_dev_rddm_timeout_hdlr, 0); Loading Loading @@ -5142,6 +5173,7 @@ static void cnss_pci_remove(struct pci_dev *pci_dev) case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: complete_all(&pci_priv->wake_event); del_timer(&pci_priv->dev_rddm_timer); break; Loading Loading @@ -5169,6 +5201,7 @@ static const struct pci_device_id cnss_pci_id_table[] = { { QCA6290_VENDOR_ID, QCA6290_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID }, { QCA6390_VENDOR_ID, QCA6390_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID }, { QCA6490_VENDOR_ID, QCA6490_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID }, { WCN7850_VENDOR_ID, WCN7850_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID }, { 0 } }; MODULE_DEVICE_TABLE(pci, cnss_pci_id_table); Loading Loading
drivers/net/wireless/cnss2/Kconfig +9 −0 Original line number Diff line number Diff line Loading @@ -87,3 +87,12 @@ config CNSS_QCA6490 CNSS QCA6490 chipset. These changes are needed to support the new hardware architecture for CNSS QCA6490 chipset. config CNSS_WCN7850 bool "Enable CNSS WCN7850 chipset specific changes" depends on CNSS2 help This enables the changes from WLAN host driver that are specific to CNSS WCN7850 chipset. These changes are needed to support the new hardware architecture for CNSS WCN7850 chipset.
drivers/net/wireless/cnss2/bus.h +2 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ #define QCA6390_DEVICE_ID 0x1101 #define QCA6490_VENDOR_ID 0x17CB #define QCA6490_DEVICE_ID 0x1103 #define WCN7850_VENDOR_ID 0x17CB #define WCN7850_DEVICE_ID 0x1107 enum cnss_dev_bus_type cnss_get_dev_bus_type(struct device *dev); enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id); Loading
drivers/net/wireless/cnss2/main.c +6 −0 Original line number Diff line number Diff line Loading @@ -2190,6 +2190,7 @@ int cnss_register_ramdump(struct cnss_plat_data *plat_priv) case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: ret = cnss_register_ramdump_v2(plat_priv); break; default: Loading @@ -2209,6 +2210,7 @@ void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv) case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: cnss_unregister_ramdump_v2(plat_priv); break; default: Loading Loading @@ -2723,6 +2725,7 @@ static const struct platform_device_id cnss_platform_id_table[] = { { .name = "qca6290", .driver_data = QCA6290_DEVICE_ID, }, { .name = "qca6390", .driver_data = QCA6390_DEVICE_ID, }, { .name = "qca6490", .driver_data = QCA6490_DEVICE_ID, }, { .name = "wcn7850", .driver_data = WCN7850_DEVICE_ID, }, { }, }; Loading @@ -2739,6 +2742,9 @@ static const struct of_device_id cnss_of_match_table[] = { { .compatible = "qcom,cnss-qca6490", .data = (void *)&cnss_platform_id_table[3]}, { .compatible = "qcom,cnss-wcn7850", .data = (void *)&cnss_platform_id_table[4]}, { }, }; MODULE_DEVICE_TABLE(of, cnss_of_match_table); Loading
drivers/net/wireless/cnss2/pci.c +42 −9 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ #define QCA6390_PATH_PREFIX "qca6390/" #define QCA6490_PATH_PREFIX "qca6490/" #define WCN7850_PATH_PREFIX "wcn7850/" #define DEFAULT_M3_FILE_NAME "m3.bin" #define DEFAULT_FW_FILE_NAME "amss.bin" #define FW_V2_FILE_NAME "amss20.bin" Loading Loading @@ -879,6 +880,7 @@ int cnss_pci_recover_link_down(struct cnss_pci_data *pci_priv) switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: break; default: return -EOPNOTSUPP; Loading Loading @@ -2329,6 +2331,7 @@ int cnss_pci_dev_powerup(struct cnss_pci_data *pci_priv) case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: ret = cnss_qca6290_powerup(pci_priv); break; default: Loading Loading @@ -2356,6 +2359,7 @@ int cnss_pci_dev_shutdown(struct cnss_pci_data *pci_priv) case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: ret = cnss_qca6290_shutdown(pci_priv); break; default: Loading Loading @@ -2383,6 +2387,7 @@ int cnss_pci_dev_crash_shutdown(struct cnss_pci_data *pci_priv) case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: cnss_qca6290_crash_shutdown(pci_priv); break; default: Loading Loading @@ -2410,6 +2415,7 @@ int cnss_pci_dev_ramdump(struct cnss_pci_data *pci_priv) case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: ret = cnss_qca6290_ramdump(pci_priv); break; default: Loading Loading @@ -3308,9 +3314,14 @@ int cnss_pci_force_wake_request_sync(struct device *dev, int timeout_us) if (!pci_priv) return -ENODEV; if (pci_priv->device_id != QCA6390_DEVICE_ID && pci_priv->device_id != QCA6490_DEVICE_ID) switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: break; default: return 0; } mhi_ctrl = pci_priv->mhi_ctrl; if (!mhi_ctrl) Loading Loading @@ -3344,9 +3355,14 @@ int cnss_pci_force_wake_request(struct device *dev) if (!pci_priv) return -ENODEV; if (pci_priv->device_id != QCA6390_DEVICE_ID && pci_priv->device_id != QCA6490_DEVICE_ID) switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: break; default: return 0; } mhi_ctrl = pci_priv->mhi_ctrl; if (!mhi_ctrl) Loading Loading @@ -3374,9 +3390,14 @@ int cnss_pci_is_device_awake(struct device *dev) if (!pci_priv) return -ENODEV; if (pci_priv->device_id != QCA6390_DEVICE_ID && pci_priv->device_id != QCA6490_DEVICE_ID) return true; switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: break; default: return 0; } mhi_ctrl = pci_priv->mhi_ctrl; if (!mhi_ctrl) Loading @@ -3396,9 +3417,14 @@ int cnss_pci_force_wake_release(struct device *dev) if (!pci_priv) return -ENODEV; if (pci_priv->device_id != QCA6390_DEVICE_ID && pci_priv->device_id != QCA6490_DEVICE_ID) switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: break; default: return 0; } mhi_ctrl = pci_priv->mhi_ctrl; if (!mhi_ctrl) Loading Loading @@ -4620,6 +4646,10 @@ void cnss_pci_add_fw_prefix_name(struct cnss_pci_data *pci_priv, scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, QCA6490_PATH_PREFIX "%s", name); break; case WCN7850_DEVICE_ID: scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, WCN7850_PATH_PREFIX "%s", name); break; default: scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, "%s", name); break; Loading Loading @@ -5082,6 +5112,7 @@ static int cnss_pci_probe(struct pci_dev *pci_dev, case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: cnss_pci_set_wlaon_pwr_ctrl(pci_priv, false, false, false); timer_setup(&pci_priv->dev_rddm_timer, cnss_dev_rddm_timeout_hdlr, 0); Loading Loading @@ -5142,6 +5173,7 @@ static void cnss_pci_remove(struct pci_dev *pci_dev) case QCA6290_DEVICE_ID: case QCA6390_DEVICE_ID: case QCA6490_DEVICE_ID: case WCN7850_DEVICE_ID: complete_all(&pci_priv->wake_event); del_timer(&pci_priv->dev_rddm_timer); break; Loading Loading @@ -5169,6 +5201,7 @@ static const struct pci_device_id cnss_pci_id_table[] = { { QCA6290_VENDOR_ID, QCA6290_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID }, { QCA6390_VENDOR_ID, QCA6390_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID }, { QCA6490_VENDOR_ID, QCA6490_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID }, { WCN7850_VENDOR_ID, WCN7850_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID }, { 0 } }; MODULE_DEVICE_TABLE(pci, cnss_pci_id_table); Loading