wilc1000: Convert static "chipid" variable to device-local variable
authorDavid Mosberger-Tang <davidm@egauge.net>
Tue, 21 Dec 2021 21:05:41 +0000 (21:05 +0000)
committerKalle Valo <kvalo@kernel.org>
Wed, 22 Dec 2021 17:50:50 +0000 (19:50 +0200)
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
drivers/net/wireless/microchip/wilc1000/netdev.h
drivers/net/wireless/microchip/wilc1000/wlan.c

index 6c0e634d02499f56267119b360634271d977d207..a067274c20144a6c03b3182f1fcead3b411e5206 100644 (file)
@@ -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;
index 3f339c2f46f114fd8aee227ea282be72a7f55f6a..a2aa8894320f2f6b5130be0f9b0d704fa8bcb563 100644 (file)
@@ -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)