Commit 4d2cd7b0 authored by David Mosberger-Tang's avatar David Mosberger-Tang Committed by Kalle Valo
Browse files

wilc1000: Convert static "chipid" variable to device-local variable



Move "chipid" variable into the per-driver structure so the code
doesn't break if more than one wilc1000 module is present.

Signed-off-by: default avatarDavid Mosberger-Tang <davidm@egauge.net>
Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20211221210538.4011227-1-davidm@egauge.net
parent 5f48d7bb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -212,6 +212,7 @@ struct wilc {
	s8 mac_status;
	struct clk *rtc_clk;
	bool initialized;
	u32 chipid;
	bool power_save_mode;
	int dev_irq_num;
	int close;
+13 −14
Original line number Diff line number Diff line
@@ -1443,31 +1443,30 @@ static int init_chip(struct net_device *dev)

u32 wilc_get_chipid(struct wilc *wilc, bool update)
{
	static u32 chipid;
	u32 tempchipid = 0;
	u32 chipid = 0;
	u32 rfrevid = 0;

	if (chipid == 0 || update) {
		wilc->hif_func->hif_read_reg(wilc, WILC_CHIPID, &tempchipid);
	if (wilc->chipid == 0 || update) {
		wilc->hif_func->hif_read_reg(wilc, WILC_CHIPID, &chipid);
		wilc->hif_func->hif_read_reg(wilc, WILC_RF_REVISION_ID,
					     &rfrevid);
		if (!is_wilc1000(tempchipid)) {
			chipid = 0;
			return chipid;
		if (!is_wilc1000(chipid)) {
			wilc->chipid = 0;
			return wilc->chipid;
		}
		if (tempchipid == WILC_1000_BASE_ID_2A) { /* 0x1002A0 */
		if (chipid == WILC_1000_BASE_ID_2A) { /* 0x1002A0 */
			if (rfrevid != 0x1)
				tempchipid = WILC_1000_BASE_ID_2A_REV1;
		} else if (tempchipid == WILC_1000_BASE_ID_2B) { /* 0x1002B0 */
				chipid = WILC_1000_BASE_ID_2A_REV1;
		} else if (chipid == WILC_1000_BASE_ID_2B) { /* 0x1002B0 */
			if (rfrevid == 0x4)
				tempchipid = WILC_1000_BASE_ID_2B_REV1;
				chipid = WILC_1000_BASE_ID_2B_REV1;
			else if (rfrevid != 0x3)
				tempchipid = WILC_1000_BASE_ID_2B_REV2;
				chipid = WILC_1000_BASE_ID_2B_REV2;
		}

		chipid = tempchipid;
		wilc->chipid = chipid;
	}
	return chipid;
	return wilc->chipid;
}

int wilc_wlan_init(struct net_device *dev)