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: David Mosberger-Tang <davidm@egauge.net> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20211221210538.4011227-1-davidm@egauge.net
This commit is contained in:
parent
5f48d7bbec
commit
4d2cd7b06c
|
@ -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;
|
||||
|
|
|
@ -1443,31 +1443,30 @@ release:
|
|||
|
||||
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)
|
||||
|
|
Loading…
Reference in New Issue