Merge "cnss2: Update board data file name for certain RF chip ID"

This commit is contained in:
qctecmdr 2021-09-16 14:53:49 -07:00 committed by Gerrit - the friendly Code Review server
commit e0c39261f1
2 changed files with 46 additions and 14 deletions

View file

@ -43,6 +43,7 @@
#define DEFAULT_FW_FILE_NAME "amss.bin"
#define FW_V2_FILE_NAME "amss20.bin"
#define FW_V2_NUMBER 2
#define DEVICE_MAJOR_VERSION_MASK 0xF
#define WAKE_MSI_NAME "WAKE"
@ -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.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) {
case QCA6390_DEVICE_ID:
if (plat_priv->device_version.major_version < FW_V2_NUMBER) {

View file

@ -14,11 +14,16 @@
#define WLFW_CLIENT_ID 0x4b4e454c
#define BDF_FILE_NAME_PREFIX "bdwlan"
#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_GF_PREFIX "bdwlang.e"
#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_GF_PREFIX "bdwlang.b"
#define REGDB_FILE_NAME "regdb.bin"
#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_JF msecs_to_jiffies(QMI_WLFW_TIMEOUT_MS)
@ -504,30 +509,53 @@ static int cnss_get_bdf_file_name(struct cnss_plat_data *plat_priv,
switch (bdf_type) {
case CNSS_BDF_ELF:
if (plat_priv->board_info.board_id == 0xFF)
snprintf(filename_tmp, filename_len, ELF_BDF_FILE_NAME);
else if (plat_priv->board_info.board_id < 0xFF)
snprintf(filename_tmp, filename_len,
ELF_BDF_FILE_NAME_PREFIX "%02x",
plat_priv->board_info.board_id);
else
/* Board ID will be equal or less than 0xFF in GF mask case */
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);
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);
else
snprintf(filename_tmp, filename_len,
ELF_BDF_FILE_NAME_PREFIX "%02x",
plat_priv->board_info.board_id);
} else {
snprintf(filename_tmp, filename_len,
BDF_FILE_NAME_PREFIX "%02x.e%02x",
plat_priv->board_info.board_id >> 8 & 0xFF,
plat_priv->board_info.board_id & 0xFF);
}
break;
case CNSS_BDF_BIN:
if (plat_priv->board_info.board_id == 0xFF)
snprintf(filename_tmp, filename_len, BIN_BDF_FILE_NAME);
else if (plat_priv->board_info.board_id < 0xFF)
snprintf(filename_tmp, filename_len,
BIN_BDF_FILE_NAME_PREFIX "%02x",
plat_priv->board_info.board_id);
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);
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);
else
snprintf(filename_tmp, filename_len,
BIN_BDF_FILE_NAME_PREFIX "%02x",
plat_priv->board_info.board_id);
} else {
snprintf(filename_tmp, filename_len,
BDF_FILE_NAME_PREFIX "%02x.b%02x",
plat_priv->board_info.board_id >> 8 & 0xFF,
plat_priv->board_info.board_id & 0xFF);
}
break;
case CNSS_BDF_REGDB:
snprintf(filename_tmp, filename_len, REGDB_FILE_NAME);