Loading drivers/net/wireless/cnss2/pci.c +4 −0 Original line number Original line Diff line number Diff line Loading @@ -43,6 +43,7 @@ #define DEFAULT_FW_FILE_NAME "amss.bin" #define DEFAULT_FW_FILE_NAME "amss.bin" #define FW_V2_FILE_NAME "amss20.bin" #define FW_V2_FILE_NAME "amss20.bin" #define FW_V2_NUMBER 2 #define FW_V2_NUMBER 2 #define DEVICE_MAJOR_VERSION_MASK 0xF #define WAKE_MSI_NAME "WAKE" #define WAKE_MSI_NAME "WAKE" Loading Loading @@ -4536,6 +4537,9 @@ static int cnss_pci_update_fw_name(struct cnss_pci_data *pci_priv) plat_priv->device_version.major_version, plat_priv->device_version.major_version, plat_priv->device_version.minor_version); plat_priv->device_version.minor_version); /* Only keep lower 4 bits as real device major version */ plat_priv->device_version.major_version &= DEVICE_MAJOR_VERSION_MASK; switch (pci_priv->device_id) { switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: case QCA6390_DEVICE_ID: if (plat_priv->device_version.major_version < FW_V2_NUMBER) { if (plat_priv->device_version.major_version < FW_V2_NUMBER) { Loading drivers/net/wireless/cnss2/qmi.c +42 −14 Original line number Original line Diff line number Diff line Loading @@ -14,11 +14,16 @@ #define WLFW_CLIENT_ID 0x4b4e454c #define WLFW_CLIENT_ID 0x4b4e454c #define BDF_FILE_NAME_PREFIX "bdwlan" #define BDF_FILE_NAME_PREFIX "bdwlan" #define ELF_BDF_FILE_NAME "bdwlan.elf" #define ELF_BDF_FILE_NAME "bdwlan.elf" #define ELF_BDF_FILE_NAME_GF "bdwlang.elf" #define ELF_BDF_FILE_NAME_PREFIX "bdwlan.e" #define ELF_BDF_FILE_NAME_PREFIX "bdwlan.e" #define ELF_BDF_FILE_NAME_GF_PREFIX "bdwlang.e" #define BIN_BDF_FILE_NAME "bdwlan.bin" #define BIN_BDF_FILE_NAME "bdwlan.bin" #define BIN_BDF_FILE_NAME_GF "bdwlang.bin" #define BIN_BDF_FILE_NAME_PREFIX "bdwlan.b" #define BIN_BDF_FILE_NAME_PREFIX "bdwlan.b" #define BIN_BDF_FILE_NAME_GF_PREFIX "bdwlang.b" #define REGDB_FILE_NAME "regdb.bin" #define REGDB_FILE_NAME "regdb.bin" #define DUMMY_BDF_FILE_NAME "bdwlan.dmy" #define DUMMY_BDF_FILE_NAME "bdwlan.dmy" #define CHIP_ID_GF_MASK 0x10 #define QMI_WLFW_TIMEOUT_MS (plat_priv->ctrl_params.qmi_timeout) #define QMI_WLFW_TIMEOUT_MS (plat_priv->ctrl_params.qmi_timeout) #define QMI_WLFW_TIMEOUT_JF msecs_to_jiffies(QMI_WLFW_TIMEOUT_MS) #define QMI_WLFW_TIMEOUT_JF msecs_to_jiffies(QMI_WLFW_TIMEOUT_MS) Loading Loading @@ -504,30 +509,53 @@ static int cnss_get_bdf_file_name(struct cnss_plat_data *plat_priv, switch (bdf_type) { switch (bdf_type) { case CNSS_BDF_ELF: case CNSS_BDF_ELF: if (plat_priv->board_info.board_id == 0xFF) /* Board ID will be equal or less than 0xFF in GF mask case */ snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME); if (plat_priv->board_info.board_id == 0xFF) { else if (plat_priv->board_info.board_id < 0xFF) if (plat_priv->chip_info.chip_id & CHIP_ID_GF_MASK) snprintf(filename_tmp, filename_len, snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_PREFIX "%02x", ELF_BDF_FILE_NAME_GF); else snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME); } else if (plat_priv->board_info.board_id < 0xFF) { if (plat_priv->chip_info.chip_id & CHIP_ID_GF_MASK) snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_GF_PREFIX "%02x", plat_priv->board_info.board_id); plat_priv->board_info.board_id); else else snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_PREFIX "%02x", plat_priv->board_info.board_id); } else { snprintf(filename_tmp, filename_len, snprintf(filename_tmp, filename_len, BDF_FILE_NAME_PREFIX "%02x.e%02x", BDF_FILE_NAME_PREFIX "%02x.e%02x", plat_priv->board_info.board_id >> 8 & 0xFF, plat_priv->board_info.board_id >> 8 & 0xFF, plat_priv->board_info.board_id & 0xFF); plat_priv->board_info.board_id & 0xFF); } break; break; case CNSS_BDF_BIN: case CNSS_BDF_BIN: if (plat_priv->board_info.board_id == 0xFF) if (plat_priv->board_info.board_id == 0xFF) { snprintf(filename_tmp, filename_len, BIN_BDF_FILE_NAME); if (plat_priv->chip_info.chip_id & CHIP_ID_GF_MASK) else if (plat_priv->board_info.board_id < 0xFF) snprintf(filename_tmp, filename_len, snprintf(filename_tmp, filename_len, BIN_BDF_FILE_NAME_PREFIX "%02x", BIN_BDF_FILE_NAME_GF); else snprintf(filename_tmp, filename_len, BIN_BDF_FILE_NAME); } else if (plat_priv->board_info.board_id < 0xFF) { if (plat_priv->chip_info.chip_id & CHIP_ID_GF_MASK) snprintf(filename_tmp, filename_len, BIN_BDF_FILE_NAME_GF_PREFIX "%02x", plat_priv->board_info.board_id); plat_priv->board_info.board_id); else else snprintf(filename_tmp, filename_len, BIN_BDF_FILE_NAME_PREFIX "%02x", plat_priv->board_info.board_id); } else { snprintf(filename_tmp, filename_len, snprintf(filename_tmp, filename_len, BDF_FILE_NAME_PREFIX "%02x.b%02x", BDF_FILE_NAME_PREFIX "%02x.b%02x", plat_priv->board_info.board_id >> 8 & 0xFF, plat_priv->board_info.board_id >> 8 & 0xFF, plat_priv->board_info.board_id & 0xFF); plat_priv->board_info.board_id & 0xFF); } break; break; case CNSS_BDF_REGDB: case CNSS_BDF_REGDB: snprintf(filename_tmp, filename_len, REGDB_FILE_NAME); snprintf(filename_tmp, filename_len, REGDB_FILE_NAME); Loading Loading
drivers/net/wireless/cnss2/pci.c +4 −0 Original line number Original line Diff line number Diff line Loading @@ -43,6 +43,7 @@ #define DEFAULT_FW_FILE_NAME "amss.bin" #define DEFAULT_FW_FILE_NAME "amss.bin" #define FW_V2_FILE_NAME "amss20.bin" #define FW_V2_FILE_NAME "amss20.bin" #define FW_V2_NUMBER 2 #define FW_V2_NUMBER 2 #define DEVICE_MAJOR_VERSION_MASK 0xF #define WAKE_MSI_NAME "WAKE" #define WAKE_MSI_NAME "WAKE" Loading Loading @@ -4536,6 +4537,9 @@ static int cnss_pci_update_fw_name(struct cnss_pci_data *pci_priv) plat_priv->device_version.major_version, plat_priv->device_version.major_version, plat_priv->device_version.minor_version); plat_priv->device_version.minor_version); /* Only keep lower 4 bits as real device major version */ plat_priv->device_version.major_version &= DEVICE_MAJOR_VERSION_MASK; switch (pci_priv->device_id) { switch (pci_priv->device_id) { case QCA6390_DEVICE_ID: case QCA6390_DEVICE_ID: if (plat_priv->device_version.major_version < FW_V2_NUMBER) { if (plat_priv->device_version.major_version < FW_V2_NUMBER) { Loading
drivers/net/wireless/cnss2/qmi.c +42 −14 Original line number Original line Diff line number Diff line Loading @@ -14,11 +14,16 @@ #define WLFW_CLIENT_ID 0x4b4e454c #define WLFW_CLIENT_ID 0x4b4e454c #define BDF_FILE_NAME_PREFIX "bdwlan" #define BDF_FILE_NAME_PREFIX "bdwlan" #define ELF_BDF_FILE_NAME "bdwlan.elf" #define ELF_BDF_FILE_NAME "bdwlan.elf" #define ELF_BDF_FILE_NAME_GF "bdwlang.elf" #define ELF_BDF_FILE_NAME_PREFIX "bdwlan.e" #define ELF_BDF_FILE_NAME_PREFIX "bdwlan.e" #define ELF_BDF_FILE_NAME_GF_PREFIX "bdwlang.e" #define BIN_BDF_FILE_NAME "bdwlan.bin" #define BIN_BDF_FILE_NAME "bdwlan.bin" #define BIN_BDF_FILE_NAME_GF "bdwlang.bin" #define BIN_BDF_FILE_NAME_PREFIX "bdwlan.b" #define BIN_BDF_FILE_NAME_PREFIX "bdwlan.b" #define BIN_BDF_FILE_NAME_GF_PREFIX "bdwlang.b" #define REGDB_FILE_NAME "regdb.bin" #define REGDB_FILE_NAME "regdb.bin" #define DUMMY_BDF_FILE_NAME "bdwlan.dmy" #define DUMMY_BDF_FILE_NAME "bdwlan.dmy" #define CHIP_ID_GF_MASK 0x10 #define QMI_WLFW_TIMEOUT_MS (plat_priv->ctrl_params.qmi_timeout) #define QMI_WLFW_TIMEOUT_MS (plat_priv->ctrl_params.qmi_timeout) #define QMI_WLFW_TIMEOUT_JF msecs_to_jiffies(QMI_WLFW_TIMEOUT_MS) #define QMI_WLFW_TIMEOUT_JF msecs_to_jiffies(QMI_WLFW_TIMEOUT_MS) Loading Loading @@ -504,30 +509,53 @@ static int cnss_get_bdf_file_name(struct cnss_plat_data *plat_priv, switch (bdf_type) { switch (bdf_type) { case CNSS_BDF_ELF: case CNSS_BDF_ELF: if (plat_priv->board_info.board_id == 0xFF) /* Board ID will be equal or less than 0xFF in GF mask case */ snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME); if (plat_priv->board_info.board_id == 0xFF) { else if (plat_priv->board_info.board_id < 0xFF) if (plat_priv->chip_info.chip_id & CHIP_ID_GF_MASK) snprintf(filename_tmp, filename_len, snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_PREFIX "%02x", ELF_BDF_FILE_NAME_GF); else snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME); } else if (plat_priv->board_info.board_id < 0xFF) { if (plat_priv->chip_info.chip_id & CHIP_ID_GF_MASK) snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_GF_PREFIX "%02x", plat_priv->board_info.board_id); plat_priv->board_info.board_id); else else snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME_PREFIX "%02x", plat_priv->board_info.board_id); } else { snprintf(filename_tmp, filename_len, snprintf(filename_tmp, filename_len, BDF_FILE_NAME_PREFIX "%02x.e%02x", BDF_FILE_NAME_PREFIX "%02x.e%02x", plat_priv->board_info.board_id >> 8 & 0xFF, plat_priv->board_info.board_id >> 8 & 0xFF, plat_priv->board_info.board_id & 0xFF); plat_priv->board_info.board_id & 0xFF); } break; break; case CNSS_BDF_BIN: case CNSS_BDF_BIN: if (plat_priv->board_info.board_id == 0xFF) if (plat_priv->board_info.board_id == 0xFF) { snprintf(filename_tmp, filename_len, BIN_BDF_FILE_NAME); if (plat_priv->chip_info.chip_id & CHIP_ID_GF_MASK) else if (plat_priv->board_info.board_id < 0xFF) snprintf(filename_tmp, filename_len, snprintf(filename_tmp, filename_len, BIN_BDF_FILE_NAME_PREFIX "%02x", BIN_BDF_FILE_NAME_GF); else snprintf(filename_tmp, filename_len, BIN_BDF_FILE_NAME); } else if (plat_priv->board_info.board_id < 0xFF) { if (plat_priv->chip_info.chip_id & CHIP_ID_GF_MASK) snprintf(filename_tmp, filename_len, BIN_BDF_FILE_NAME_GF_PREFIX "%02x", plat_priv->board_info.board_id); plat_priv->board_info.board_id); else else snprintf(filename_tmp, filename_len, BIN_BDF_FILE_NAME_PREFIX "%02x", plat_priv->board_info.board_id); } else { snprintf(filename_tmp, filename_len, snprintf(filename_tmp, filename_len, BDF_FILE_NAME_PREFIX "%02x.b%02x", BDF_FILE_NAME_PREFIX "%02x.b%02x", plat_priv->board_info.board_id >> 8 & 0xFF, plat_priv->board_info.board_id >> 8 & 0xFF, plat_priv->board_info.board_id & 0xFF); plat_priv->board_info.board_id & 0xFF); } break; break; case CNSS_BDF_REGDB: case CNSS_BDF_REGDB: snprintf(filename_tmp, filename_len, REGDB_FILE_NAME); snprintf(filename_tmp, filename_len, REGDB_FILE_NAME); Loading