mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
cnss2: Update the wlan fw name for Genoa
Since PCIE Genoa has separate wlan fw patch for mission mode(amss.bin) and ftm mode(genoaftm.bin), but cnss2 platform driver always try to load amss.bin, which is not feasible. So add this new interface for cnss2 to get correct driver mode and update the fw patch name. Change-Id: I7c17ca5f96b9d5717fbe65e0b177249cd9424dec Signed-off-by: Chaoli Zhou <zchaoli@codeaurora.org>
This commit is contained in:
parent
5953c3fd4c
commit
9d4b05d504
@ -269,6 +269,7 @@ enum cnss_ce_index {
|
||||
|
||||
struct cnss_plat_data {
|
||||
struct platform_device *plat_dev;
|
||||
enum cnss_driver_mode driver_mode;
|
||||
void *bus_priv;
|
||||
enum cnss_dev_bus_type bus_type;
|
||||
struct list_head vreg_list;
|
||||
|
@ -47,6 +47,8 @@
|
||||
#define DEFAULT_M3_FILE_NAME "m3.bin"
|
||||
#define DEFAULT_FW_FILE_NAME "amss.bin"
|
||||
#define FW_V2_FILE_NAME "amss20.bin"
|
||||
#define DEFAULT_GENOA_FW_FTM_NAME "genoaftm.bin"
|
||||
|
||||
#define FW_V2_NUMBER 2
|
||||
|
||||
#define WAKE_MSI_NAME "WAKE"
|
||||
@ -146,6 +148,8 @@ static DEFINE_SPINLOCK(pci_reg_window_lock);
|
||||
|
||||
#define LINK_TRAINING_RETRY_MAX_TIMES 3
|
||||
|
||||
static void cnss_pci_update_fw_name(struct cnss_pci_data *pci_priv);
|
||||
|
||||
static struct cnss_pci_reg ce_src[] = {
|
||||
{ "SRC_RING_BASE_LSB", QCA6390_CE_SRC_RING_BASE_LSB_OFFSET },
|
||||
{ "SRC_RING_BASE_MSB", QCA6390_CE_SRC_RING_BASE_MSB_OFFSET },
|
||||
@ -1321,6 +1325,11 @@ int cnss_wlan_register_driver(struct cnss_wlan_driver *driver_ops)
|
||||
return -EEXIST;
|
||||
}
|
||||
|
||||
if (driver_ops->get_driver_mode) {
|
||||
plat_priv->driver_mode = driver_ops->get_driver_mode();
|
||||
cnss_pci_update_fw_name(pci_priv);
|
||||
}
|
||||
|
||||
if (!test_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state))
|
||||
goto register_driver;
|
||||
|
||||
@ -3059,7 +3068,21 @@ static void cnss_pci_update_fw_name(struct cnss_pci_data *pci_priv)
|
||||
"%s" FW_V2_FILE_NAME, cnss_get_fw_path(plat_priv));
|
||||
mhi_ctrl->fw_image = plat_priv->firmware_name;
|
||||
}
|
||||
|
||||
if (pci_priv->device_id == QCN7605_DEVICE_ID) {
|
||||
if (plat_priv->driver_mode == CNSS_FTM) {
|
||||
snprintf(plat_priv->firmware_name,
|
||||
sizeof(plat_priv->firmware_name),
|
||||
"%s" DEFAULT_GENOA_FW_FTM_NAME,
|
||||
cnss_get_fw_path(plat_priv));
|
||||
mhi_ctrl->fw_image = plat_priv->firmware_name;
|
||||
} else {
|
||||
snprintf(plat_priv->firmware_name,
|
||||
sizeof(plat_priv->firmware_name),
|
||||
"%s" DEFAULT_FW_FILE_NAME,
|
||||
cnss_get_fw_path(plat_priv));
|
||||
mhi_ctrl->fw_image = plat_priv->firmware_name;
|
||||
}
|
||||
}
|
||||
cnss_pr_dbg("Firmware name is %s\n", mhi_ctrl->fw_image);
|
||||
}
|
||||
|
||||
|
@ -95,6 +95,7 @@ struct cnss_wlan_driver {
|
||||
void (*update_status)(struct pci_dev *pdev, uint32_t status);
|
||||
struct cnss_wlan_runtime_ops *runtime_ops;
|
||||
const struct pci_device_id *id_table;
|
||||
enum cnss_driver_mode (*get_driver_mode)(void);
|
||||
};
|
||||
|
||||
struct cnss_usb_wlan_driver {
|
||||
|
Loading…
x
Reference in New Issue
Block a user