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

Commit 75696fe7 authored by Amitkumar Karwar's avatar Amitkumar Karwar Committed by Kalle Valo
Browse files

mwifiex: PCIe8997 chip specific handling



The patch corrects the revision id register and uses it along with
magic value and chip version registers to download appropriate firmware
image.

PCIe8997 Z chipset variant code has been removed, as it won't be used in
production.

Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent b7116576
Loading
Loading
Loading
Loading
+12 −23
Original line number Diff line number Diff line
@@ -2911,7 +2911,7 @@ static int mwifiex_pcie_request_irq(struct mwifiex_adapter *adapter)
static void mwifiex_pcie_get_fw_name(struct mwifiex_adapter *adapter)
{
	int revision_id = 0;
	int version;
	int version, magic;
	struct pcie_service_card *card = adapter->card;

	switch (card->dev->device) {
@@ -2936,30 +2936,19 @@ static void mwifiex_pcie_get_fw_name(struct mwifiex_adapter *adapter)
		}
		break;
	case PCIE_DEVICE_ID_MARVELL_88W8997:
		mwifiex_read_reg(adapter, 0x0c48, &revision_id);
		mwifiex_read_reg(adapter, 0x8, &revision_id);
		mwifiex_read_reg(adapter, 0x0cd0, &version);
		mwifiex_read_reg(adapter, 0x0cd4, &magic);
		revision_id &= 0xff;
		version &= 0x7;
		switch (revision_id) {
		case PCIE8997_V2:
			if (version == CHIP_VER_PCIEUART)
				strcpy(adapter->fw_name,
				       PCIEUART8997_FW_NAME_V2);
			else
				strcpy(adapter->fw_name,
				       PCIEUSB8997_FW_NAME_V2);
			break;
		case PCIE8997_Z:
			if (version == CHIP_VER_PCIEUART)
				strcpy(adapter->fw_name,
				       PCIEUART8997_FW_NAME_Z);
		magic &= 0xff;
		if (revision_id == PCIE8997_A1 &&
		    magic == CHIP_MAGIC_VALUE &&
		    version == CHIP_VER_PCIEUART)
			strcpy(adapter->fw_name, PCIEUART8997_FW_NAME_V4);
		else
				strcpy(adapter->fw_name,
				       PCIEUSB8997_FW_NAME_Z);
			strcpy(adapter->fw_name, PCIEUSB8997_FW_NAME_V4);
		break;
		default:
			strcpy(adapter->fw_name, PCIE8997_DEFAULT_FW_NAME);
			break;
		}
	default:
		break;
	}
+6 −8
Original line number Diff line number Diff line
@@ -32,12 +32,9 @@
#define PCIE8897_DEFAULT_FW_NAME "mrvl/pcie8897_uapsta.bin"
#define PCIE8897_A0_FW_NAME "mrvl/pcie8897_uapsta_a0.bin"
#define PCIE8897_B0_FW_NAME "mrvl/pcie8897_uapsta.bin"
#define PCIE8997_DEFAULT_FW_NAME "mrvl/pcieusb8997_combo_v2.bin"
#define PCIEUART8997_FW_NAME_Z "mrvl/pcieuart8997_combo.bin"
#define PCIEUART8997_FW_NAME_V2 "mrvl/pcieuart8997_combo_v2.bin"
#define PCIEUSB8997_FW_NAME_Z "mrvl/pcieusb8997_combo.bin"
#define PCIEUSB8997_FW_NAME_V2 "mrvl/pcieusb8997_combo_v2.bin"
#define PCIE8997_DEFAULT_WIFIFW_NAME "mrvl/pcie8997_wlan.bin"
#define PCIEUART8997_FW_NAME_V4 "mrvl/pcieuart8997_combo_v4.bin"
#define PCIEUSB8997_FW_NAME_V4 "mrvl/pcieusb8997_combo_v4.bin"
#define PCIE8997_DEFAULT_WIFIFW_NAME "mrvl/pcie8997_wlan_v4.bin"

#define PCIE_VENDOR_ID_MARVELL              (0x11ab)
#define PCIE_VENDOR_ID_V2_MARVELL           (0x1b4b)
@@ -47,9 +44,10 @@

#define PCIE8897_A0	0x1100
#define PCIE8897_B0	0x1200
#define PCIE8997_Z	0x0
#define PCIE8997_V2	0x471
#define PCIE8997_A0	0x10
#define PCIE8997_A1	0x11
#define CHIP_VER_PCIEUART	0x3
#define CHIP_MAGIC_VALUE	0x24

/* Constants for Buffer Descriptor (BD) rings */
#define MWIFIEX_MAX_TXRX_BD			0x20