提交 4d2cd7b0 编写于 作者: D David Mosberger-Tang 提交者: Kalle Valo

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: NDavid Mosberger-Tang <davidm@egauge.net>
Signed-off-by: NKalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20211221210538.4011227-1-davidm@egauge.net
上级 5f48d7bb
......@@ -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 @@ 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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册