wilc1000: Convert module-global "isinit" to device-specific variable
authorDavid Mosberger-Tang <davidm@egauge.net>
Sat, 28 Aug 2021 15:19:11 +0000 (15:19 +0000)
committerKalle Valo <kvalo@codeaurora.org>
Sun, 29 Aug 2021 08:33:36 +0000 (11:33 +0300)
Move static "isinit" variable to wilc_spi structure to allow multiple
WILC1000 devices per machine.

Signed-off-by: David Mosberger-Tang <davidm@egauge.net>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210828151346.3012697-1-davidm@egauge.net
drivers/net/wireless/microchip/wilc1000/spi.c

index 8b180c29d682fa1d466b8ccaee879fc7abaef8a0..dd481dc0b5ce01713656c70048a726d17f8f44e6 100644 (file)
@@ -39,6 +39,7 @@ MODULE_PARM_DESC(enable_crc16,
 #define WILC_SPI_RSP_HDR_EXTRA_DATA    8
 
 struct wilc_spi {
+       bool isinit;            /* true if SPI protocol has been configured */
        bool probing_crc;       /* true if we're probing chip's CRC config */
        bool crc7_enabled;      /* true if crc7 is currently enabled */
        bool crc16_enabled;     /* true if crc16 is currently enabled */
@@ -908,15 +909,15 @@ static int wilc_spi_init(struct wilc *wilc, bool resume)
        struct wilc_spi *spi_priv = wilc->bus_data;
        u32 reg;
        u32 chipid;
-       static int isinit;
        int ret, i;
 
-       if (isinit) {
+       if (spi_priv->isinit) {
+               /* Confirm we can read chipid register without error: */
                ret = wilc_spi_read_reg(wilc, WILC_CHIPID, &chipid);
-               if (ret)
-                       dev_err(&spi->dev, "Fail cmd read chip id...\n");
+               if (ret == 0)
+                       return 0;
 
-               return ret;
+               dev_err(&spi->dev, "Fail cmd read chip id...\n");
        }
 
        /*
@@ -974,7 +975,7 @@ static int wilc_spi_init(struct wilc *wilc, bool resume)
        spi_priv->probing_crc = false;
 
        /*
-        * make sure can read back chip id correctly
+        * make sure can read chip id without protocol error
         */
        ret = wilc_spi_read_reg(wilc, WILC_CHIPID, &chipid);
        if (ret) {
@@ -982,7 +983,7 @@ static int wilc_spi_init(struct wilc *wilc, bool resume)
                return ret;
        }
 
-       isinit = 1;
+       spi_priv->isinit = true;
 
        return 0;
 }