Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e0c39261 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

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

parents 28ba9d13 81409af5
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -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"


@@ -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) {
+42 −14
Original line number Original line Diff line number Diff line
@@ -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)
@@ -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);