Loading drivers/net/wireless/cnss/cnss_common.c +71 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,31 @@ #include "cnss_common.h" #include <net/cfg80211.h> #define AR6320_REV1_VERSION 0x5000000 #define AR6320_REV1_1_VERSION 0x5000001 #define AR6320_REV1_3_VERSION 0x5000003 #define AR6320_REV2_1_VERSION 0x5010000 #define AR6320_REV3_VERSION 0x5020000 #define AR6320_REV3_2_VERSION 0x5030000 #define AR900B_DEV_VERSION 0x1000000 #define QCA9377_REV1_1_VERSION 0x5020001 static struct cnss_fw_files FW_FILES_QCA6174_FW_1_1 = { "qwlan11.bin", "bdwlan11.bin", "otp11.bin", "utf11.bin", "utfbd11.bin", "epping11.bin", "evicted11.bin"}; static struct cnss_fw_files FW_FILES_QCA6174_FW_2_0 = { "qwlan20.bin", "bdwlan20.bin", "otp20.bin", "utf20.bin", "utfbd20.bin", "epping20.bin", "evicted20.bin"}; static struct cnss_fw_files FW_FILES_QCA6174_FW_1_3 = { "qwlan13.bin", "bdwlan13.bin", "otp13.bin", "utf13.bin", "utfbd13.bin", "epping13.bin", "evicted13.bin"}; static struct cnss_fw_files FW_FILES_QCA6174_FW_3_0 = { "qwlan30.bin", "bdwlan30.bin", "otp30.bin", "utf30.bin", "utfbd30.bin", "epping30.bin", "evicted30.bin"}; static struct cnss_fw_files FW_FILES_DEFAULT = { "qwlan.bin", "bdwlan.bin", "otp.bin", "utf.bin", "utfbd.bin", "epping.bin", "evicted.bin"}; enum cnss_dev_bus_type { CNSS_BUS_NONE = -1, CNSS_BUS_PCI, Loading Loading @@ -424,3 +449,49 @@ int cnss_power_down(struct device *dev) return ret; } EXPORT_SYMBOL(cnss_power_down); void cnss_get_qca9377_fw_files(struct cnss_fw_files *pfw_files, u32 size, u32 tufello_dual_fw) { if (tufello_dual_fw) memcpy(pfw_files, &FW_FILES_DEFAULT, sizeof(*pfw_files)); else memcpy(pfw_files, &FW_FILES_QCA6174_FW_3_0, sizeof(*pfw_files)); } EXPORT_SYMBOL(cnss_get_qca9377_fw_files); int cnss_get_fw_files_for_target(struct cnss_fw_files *pfw_files, u32 target_type, u32 target_version) { if (!pfw_files) return -ENODEV; switch (target_version) { case AR6320_REV1_VERSION: case AR6320_REV1_1_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_1_1, sizeof(*pfw_files)); break; case AR6320_REV1_3_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_1_3, sizeof(*pfw_files)); break; case AR6320_REV2_1_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_2_0, sizeof(*pfw_files)); break; case AR6320_REV3_VERSION: case AR6320_REV3_2_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_3_0, sizeof(*pfw_files)); break; default: memcpy(pfw_files, &FW_FILES_DEFAULT, sizeof(*pfw_files)); pr_err("%s default version 0x%X 0x%X", __func__, target_type, target_version); break; } return 0; } EXPORT_SYMBOL(cnss_get_fw_files_for_target); const char *cnss_wlan_get_evicted_data_file(void) { return FW_FILES_QCA6174_FW_3_0.evicted_data; } drivers/net/wireless/cnss/cnss_common.h +1 −0 Original line number Diff line number Diff line Loading @@ -41,4 +41,5 @@ int cnss_sdio_power_up(struct device *dev); int cnss_sdio_power_down(struct device *dev); int cnss_pcie_power_up(struct device *dev); int cnss_pcie_power_down(struct device *dev); const char *cnss_wlan_get_evicted_data_file(void); #endif /* _NET_CNSS_COMMON_H_ */ drivers/net/wireless/cnss/cnss_pci.c +2 −55 Original line number Diff line number Diff line Loading @@ -78,29 +78,6 @@ #define QCA6174_FW_3_0 (0x30) #define QCA6174_FW_3_2 (0x32) #define BEELINER_FW (0x00) #define AR6320_REV1_VERSION 0x5000000 #define AR6320_REV1_1_VERSION 0x5000001 #define AR6320_REV1_3_VERSION 0x5000003 #define AR6320_REV2_1_VERSION 0x5010000 #define AR6320_REV3_VERSION 0x5020000 #define AR6320_REV3_2_VERSION 0x5030000 #define AR900B_DEV_VERSION 0x1000000 static struct cnss_fw_files FW_FILES_QCA6174_FW_1_1 = { "qwlan11.bin", "bdwlan11.bin", "otp11.bin", "utf11.bin", "utfbd11.bin", "epping11.bin", "evicted11.bin"}; static struct cnss_fw_files FW_FILES_QCA6174_FW_2_0 = { "qwlan20.bin", "bdwlan20.bin", "otp20.bin", "utf20.bin", "utfbd20.bin", "epping20.bin", "evicted20.bin"}; static struct cnss_fw_files FW_FILES_QCA6174_FW_1_3 = { "qwlan13.bin", "bdwlan13.bin", "otp13.bin", "utf13.bin", "utfbd13.bin", "epping13.bin", "evicted13.bin"}; static struct cnss_fw_files FW_FILES_QCA6174_FW_3_0 = { "qwlan30.bin", "bdwlan30.bin", "otp30.bin", "utf30.bin", "utfbd30.bin", "epping30.bin", "evicted30.bin"}; static struct cnss_fw_files FW_FILES_DEFAULT = { "qwlan.bin", "bdwlan.bin", "otp.bin", "utf.bin", "utfbd.bin", "epping.bin", "evicted.bin"}; #define QCA6180_VENDOR_ID (0x168C) #define QCA6180_DEVICE_ID (0x0041) Loading Loading @@ -1093,37 +1070,6 @@ int cnss_get_fw_files(struct cnss_fw_files *pfw_files) } EXPORT_SYMBOL(cnss_get_fw_files); int cnss_get_fw_files_for_target(struct cnss_fw_files *pfw_files, u32 target_type, u32 target_version) { if (!pfw_files) return -ENODEV; switch (target_version) { case AR6320_REV1_VERSION: case AR6320_REV1_1_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_1_1, sizeof(*pfw_files)); break; case AR6320_REV1_3_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_1_3, sizeof(*pfw_files)); break; case AR6320_REV2_1_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_2_0, sizeof(*pfw_files)); break; case AR6320_REV3_VERSION: case AR6320_REV3_2_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_3_0, sizeof(*pfw_files)); break; default: memcpy(pfw_files, &FW_FILES_DEFAULT, sizeof(*pfw_files)); pr_err("%s version mismatch 0x%X 0x%X", __func__, target_type, target_version); break; } return 0; } EXPORT_SYMBOL(cnss_get_fw_files_for_target); #ifdef CONFIG_CNSS_SECURE_FW static void cnss_wlan_fw_mem_alloc(struct pci_dev *pdev) { Loading Loading @@ -2058,7 +2004,7 @@ static void cnss_wlan_memory_expansion(void) { struct device *dev; const struct firmware *fw_entry; const char *filename = FW_FILES_QCA6174_FW_3_0.evicted_data; const char *filename; u_int32_t fw_entry_size, size_left, dma_size_left, length; char *fw_temp; char *fw_data; Loading @@ -2067,6 +2013,7 @@ static void cnss_wlan_memory_expansion(void) u_int32_t total_length = 0; struct pci_dev *pdev; filename = cnss_wlan_get_evicted_data_file(); pdev = penv->pdev; dev = &pdev->dev; cnss_seg_info = penv->cnss_seg_info; Loading include/net/cnss.h +2 −0 Original line number Diff line number Diff line Loading @@ -121,6 +121,8 @@ extern void cnss_wlan_unregister_driver(struct cnss_wlan_driver *driver); extern int cnss_get_fw_files(struct cnss_fw_files *pfw_files); extern int cnss_get_fw_files_for_target(struct cnss_fw_files *pfw_files, u32 target_type, u32 target_version); extern void cnss_get_qca9377_fw_files(struct cnss_fw_files *pfw_files, u32 size, u32 tufello_dual_fw); extern int cnss_request_bus_bandwidth(int bandwidth); Loading Loading
drivers/net/wireless/cnss/cnss_common.c +71 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,31 @@ #include "cnss_common.h" #include <net/cfg80211.h> #define AR6320_REV1_VERSION 0x5000000 #define AR6320_REV1_1_VERSION 0x5000001 #define AR6320_REV1_3_VERSION 0x5000003 #define AR6320_REV2_1_VERSION 0x5010000 #define AR6320_REV3_VERSION 0x5020000 #define AR6320_REV3_2_VERSION 0x5030000 #define AR900B_DEV_VERSION 0x1000000 #define QCA9377_REV1_1_VERSION 0x5020001 static struct cnss_fw_files FW_FILES_QCA6174_FW_1_1 = { "qwlan11.bin", "bdwlan11.bin", "otp11.bin", "utf11.bin", "utfbd11.bin", "epping11.bin", "evicted11.bin"}; static struct cnss_fw_files FW_FILES_QCA6174_FW_2_0 = { "qwlan20.bin", "bdwlan20.bin", "otp20.bin", "utf20.bin", "utfbd20.bin", "epping20.bin", "evicted20.bin"}; static struct cnss_fw_files FW_FILES_QCA6174_FW_1_3 = { "qwlan13.bin", "bdwlan13.bin", "otp13.bin", "utf13.bin", "utfbd13.bin", "epping13.bin", "evicted13.bin"}; static struct cnss_fw_files FW_FILES_QCA6174_FW_3_0 = { "qwlan30.bin", "bdwlan30.bin", "otp30.bin", "utf30.bin", "utfbd30.bin", "epping30.bin", "evicted30.bin"}; static struct cnss_fw_files FW_FILES_DEFAULT = { "qwlan.bin", "bdwlan.bin", "otp.bin", "utf.bin", "utfbd.bin", "epping.bin", "evicted.bin"}; enum cnss_dev_bus_type { CNSS_BUS_NONE = -1, CNSS_BUS_PCI, Loading Loading @@ -424,3 +449,49 @@ int cnss_power_down(struct device *dev) return ret; } EXPORT_SYMBOL(cnss_power_down); void cnss_get_qca9377_fw_files(struct cnss_fw_files *pfw_files, u32 size, u32 tufello_dual_fw) { if (tufello_dual_fw) memcpy(pfw_files, &FW_FILES_DEFAULT, sizeof(*pfw_files)); else memcpy(pfw_files, &FW_FILES_QCA6174_FW_3_0, sizeof(*pfw_files)); } EXPORT_SYMBOL(cnss_get_qca9377_fw_files); int cnss_get_fw_files_for_target(struct cnss_fw_files *pfw_files, u32 target_type, u32 target_version) { if (!pfw_files) return -ENODEV; switch (target_version) { case AR6320_REV1_VERSION: case AR6320_REV1_1_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_1_1, sizeof(*pfw_files)); break; case AR6320_REV1_3_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_1_3, sizeof(*pfw_files)); break; case AR6320_REV2_1_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_2_0, sizeof(*pfw_files)); break; case AR6320_REV3_VERSION: case AR6320_REV3_2_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_3_0, sizeof(*pfw_files)); break; default: memcpy(pfw_files, &FW_FILES_DEFAULT, sizeof(*pfw_files)); pr_err("%s default version 0x%X 0x%X", __func__, target_type, target_version); break; } return 0; } EXPORT_SYMBOL(cnss_get_fw_files_for_target); const char *cnss_wlan_get_evicted_data_file(void) { return FW_FILES_QCA6174_FW_3_0.evicted_data; }
drivers/net/wireless/cnss/cnss_common.h +1 −0 Original line number Diff line number Diff line Loading @@ -41,4 +41,5 @@ int cnss_sdio_power_up(struct device *dev); int cnss_sdio_power_down(struct device *dev); int cnss_pcie_power_up(struct device *dev); int cnss_pcie_power_down(struct device *dev); const char *cnss_wlan_get_evicted_data_file(void); #endif /* _NET_CNSS_COMMON_H_ */
drivers/net/wireless/cnss/cnss_pci.c +2 −55 Original line number Diff line number Diff line Loading @@ -78,29 +78,6 @@ #define QCA6174_FW_3_0 (0x30) #define QCA6174_FW_3_2 (0x32) #define BEELINER_FW (0x00) #define AR6320_REV1_VERSION 0x5000000 #define AR6320_REV1_1_VERSION 0x5000001 #define AR6320_REV1_3_VERSION 0x5000003 #define AR6320_REV2_1_VERSION 0x5010000 #define AR6320_REV3_VERSION 0x5020000 #define AR6320_REV3_2_VERSION 0x5030000 #define AR900B_DEV_VERSION 0x1000000 static struct cnss_fw_files FW_FILES_QCA6174_FW_1_1 = { "qwlan11.bin", "bdwlan11.bin", "otp11.bin", "utf11.bin", "utfbd11.bin", "epping11.bin", "evicted11.bin"}; static struct cnss_fw_files FW_FILES_QCA6174_FW_2_0 = { "qwlan20.bin", "bdwlan20.bin", "otp20.bin", "utf20.bin", "utfbd20.bin", "epping20.bin", "evicted20.bin"}; static struct cnss_fw_files FW_FILES_QCA6174_FW_1_3 = { "qwlan13.bin", "bdwlan13.bin", "otp13.bin", "utf13.bin", "utfbd13.bin", "epping13.bin", "evicted13.bin"}; static struct cnss_fw_files FW_FILES_QCA6174_FW_3_0 = { "qwlan30.bin", "bdwlan30.bin", "otp30.bin", "utf30.bin", "utfbd30.bin", "epping30.bin", "evicted30.bin"}; static struct cnss_fw_files FW_FILES_DEFAULT = { "qwlan.bin", "bdwlan.bin", "otp.bin", "utf.bin", "utfbd.bin", "epping.bin", "evicted.bin"}; #define QCA6180_VENDOR_ID (0x168C) #define QCA6180_DEVICE_ID (0x0041) Loading Loading @@ -1093,37 +1070,6 @@ int cnss_get_fw_files(struct cnss_fw_files *pfw_files) } EXPORT_SYMBOL(cnss_get_fw_files); int cnss_get_fw_files_for_target(struct cnss_fw_files *pfw_files, u32 target_type, u32 target_version) { if (!pfw_files) return -ENODEV; switch (target_version) { case AR6320_REV1_VERSION: case AR6320_REV1_1_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_1_1, sizeof(*pfw_files)); break; case AR6320_REV1_3_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_1_3, sizeof(*pfw_files)); break; case AR6320_REV2_1_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_2_0, sizeof(*pfw_files)); break; case AR6320_REV3_VERSION: case AR6320_REV3_2_VERSION: memcpy(pfw_files, &FW_FILES_QCA6174_FW_3_0, sizeof(*pfw_files)); break; default: memcpy(pfw_files, &FW_FILES_DEFAULT, sizeof(*pfw_files)); pr_err("%s version mismatch 0x%X 0x%X", __func__, target_type, target_version); break; } return 0; } EXPORT_SYMBOL(cnss_get_fw_files_for_target); #ifdef CONFIG_CNSS_SECURE_FW static void cnss_wlan_fw_mem_alloc(struct pci_dev *pdev) { Loading Loading @@ -2058,7 +2004,7 @@ static void cnss_wlan_memory_expansion(void) { struct device *dev; const struct firmware *fw_entry; const char *filename = FW_FILES_QCA6174_FW_3_0.evicted_data; const char *filename; u_int32_t fw_entry_size, size_left, dma_size_left, length; char *fw_temp; char *fw_data; Loading @@ -2067,6 +2013,7 @@ static void cnss_wlan_memory_expansion(void) u_int32_t total_length = 0; struct pci_dev *pdev; filename = cnss_wlan_get_evicted_data_file(); pdev = penv->pdev; dev = &pdev->dev; cnss_seg_info = penv->cnss_seg_info; Loading
include/net/cnss.h +2 −0 Original line number Diff line number Diff line Loading @@ -121,6 +121,8 @@ extern void cnss_wlan_unregister_driver(struct cnss_wlan_driver *driver); extern int cnss_get_fw_files(struct cnss_fw_files *pfw_files); extern int cnss_get_fw_files_for_target(struct cnss_fw_files *pfw_files, u32 target_type, u32 target_version); extern void cnss_get_qca9377_fw_files(struct cnss_fw_files *pfw_files, u32 size, u32 tufello_dual_fw); extern int cnss_request_bus_bandwidth(int bandwidth); Loading