diff options
| -rw-r--r-- | drivers/net/wireless/cnss/cnss_common.c | 71 | ||||
| -rw-r--r-- | drivers/net/wireless/cnss/cnss_common.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/cnss/cnss_pci.c | 57 | ||||
| -rw-r--r-- | include/net/cnss.h | 2 |
4 files changed, 76 insertions, 55 deletions
diff --git a/drivers/net/wireless/cnss/cnss_common.c b/drivers/net/wireless/cnss/cnss_common.c index f63e958b1205..7805882aa6fe 100644 --- a/drivers/net/wireless/cnss/cnss_common.c +++ b/drivers/net/wireless/cnss/cnss_common.c @@ -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, @@ -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; +} diff --git a/drivers/net/wireless/cnss/cnss_common.h b/drivers/net/wireless/cnss/cnss_common.h index 0d299f3b6208..07ef9844b6db 100644 --- a/drivers/net/wireless/cnss/cnss_common.h +++ b/drivers/net/wireless/cnss/cnss_common.h @@ -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_ */ diff --git a/drivers/net/wireless/cnss/cnss_pci.c b/drivers/net/wireless/cnss/cnss_pci.c index 1e3c3829c1c7..ec6955452391 100644 --- a/drivers/net/wireless/cnss/cnss_pci.c +++ b/drivers/net/wireless/cnss/cnss_pci.c @@ -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) @@ -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) { @@ -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; @@ -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; diff --git a/include/net/cnss.h b/include/net/cnss.h index 7fce7db19e54..be58e32e6c7a 100644 --- a/include/net/cnss.h +++ b/include/net/cnss.h @@ -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); |
