OSDN Git Service

net: dsa: microchip: Replace ksz9477_wait_alu_sta_ready polling with regmap
authorMarek Vasut <marex@denx.de>
Thu, 27 Jun 2019 21:55:55 +0000 (23:55 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 28 Jun 2019 02:25:02 +0000 (19:25 -0700)
Regmap provides polling function to poll for bits in a register. This
function is another reimplementation of polling for bit being clear in
a register. Replace this with regmap polling function. Moreover, inline
the function parameters, as the function is never called with any other
parameter values than this one.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Andrew Lunn <andrew@lunn.ch>
Cc: Florian Fainelli <f.fainelli@gmail.com>
Cc: Tristram Ha <Tristram.Ha@microchip.com>
Cc: Woojung Huh <Woojung.Huh@microchip.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/microchip/ksz9477.c

index e5b2f3e..bfc4479 100644 (file)
@@ -184,22 +184,14 @@ static int ksz9477_wait_alu_ready(struct ksz_device *dev)
                                        val, !(val & ALU_START), 10, 1000);
 }
 
-static int ksz9477_wait_alu_sta_ready(struct ksz_device *dev, u32 waiton,
-                                     int timeout)
+static int ksz9477_wait_alu_sta_ready(struct ksz_device *dev)
 {
-       u32 data;
-
-       do {
-               ksz_read32(dev, REG_SW_ALU_STAT_CTRL__4, &data);
-               if (!(data & waiton))
-                       break;
-               usleep_range(1, 10);
-       } while (timeout-- > 0);
-
-       if (timeout <= 0)
-               return -ETIMEDOUT;
+       unsigned int val;
 
-       return 0;
+       return regmap_read_poll_timeout(dev->regmap[2],
+                                       REG_SW_ALU_STAT_CTRL__4,
+                                       val, !(val & ALU_STAT_START),
+                                       10, 1000);
 }
 
 static int ksz9477_reset_switch(struct ksz_device *dev)
@@ -821,7 +813,7 @@ static void ksz9477_port_mdb_add(struct dsa_switch *ds, int port,
                ksz_write32(dev, REG_SW_ALU_STAT_CTRL__4, data);
 
                /* wait to be finished */
-               if (ksz9477_wait_alu_sta_ready(dev, ALU_STAT_START, 1000) < 0) {
+               if (ksz9477_wait_alu_sta_ready(dev)) {
                        dev_dbg(dev->dev, "Failed to read ALU STATIC\n");
                        goto exit;
                }
@@ -862,7 +854,7 @@ static void ksz9477_port_mdb_add(struct dsa_switch *ds, int port,
        ksz_write32(dev, REG_SW_ALU_STAT_CTRL__4, data);
 
        /* wait to be finished */
-       if (ksz9477_wait_alu_sta_ready(dev, ALU_STAT_START, 1000) < 0)
+       if (ksz9477_wait_alu_sta_ready(dev))
                dev_dbg(dev->dev, "Failed to read ALU STATIC\n");
 
 exit:
@@ -892,8 +884,8 @@ static int ksz9477_port_mdb_del(struct dsa_switch *ds, int port,
                ksz_write32(dev, REG_SW_ALU_STAT_CTRL__4, data);
 
                /* wait to be finished */
-               ret = ksz9477_wait_alu_sta_ready(dev, ALU_STAT_START, 1000);
-               if (ret < 0) {
+               ret = ksz9477_wait_alu_sta_ready(dev);
+               if (ret) {
                        dev_dbg(dev->dev, "Failed to read ALU STATIC\n");
                        goto exit;
                }
@@ -934,8 +926,8 @@ static int ksz9477_port_mdb_del(struct dsa_switch *ds, int port,
        ksz_write32(dev, REG_SW_ALU_STAT_CTRL__4, data);
 
        /* wait to be finished */
-       ret = ksz9477_wait_alu_sta_ready(dev, ALU_STAT_START, 1000);
-       if (ret < 0)
+       ret = ksz9477_wait_alu_sta_ready(dev);
+       if (ret)
                dev_dbg(dev->dev, "Failed to read ALU STATIC\n");
 
 exit: