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 <ma...@denx.de>
Cc: Andrew Lunn <and...@lunn.ch>
Cc: Florian Fainelli <f.faine...@gmail.com>
Cc: Tristram Ha <tristram...@microchip.com>
Cc: Woojung Huh <woojung....@microchip.com>
---
 drivers/net/dsa/microchip/ksz9477.c | 26 ++++++++------------------
 1 file changed, 8 insertions(+), 18 deletions(-)

diff --git a/drivers/net/dsa/microchip/ksz9477.c 
b/drivers/net/dsa/microchip/ksz9477.c
index ece25f38e02a..0aab00bf23b9 100644
--- a/drivers/net/dsa/microchip/ksz9477.c
+++ b/drivers/net/dsa/microchip/ksz9477.c
@@ -89,22 +89,12 @@ static void ksz9477_port_cfg32(struct ksz_device *dev, int 
port, int offset,
                           bits, set ? bits : 0);
 }
 
-static int ksz9477_wait_vlan_ctrl_ready(struct ksz_device *dev, u32 waiton,
-                                       int timeout)
+static int ksz9477_wait_vlan_ctrl_ready(struct ksz_device *dev)
 {
-       u8 data;
-
-       do {
-               ksz_read8(dev, REG_SW_VLAN_CTRL, &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[0], REG_SW_VLAN_CTRL,
+                                       val, !(val & VLAN_START), 10, 1000);
 }
 
 static int ksz9477_get_vlan_table(struct ksz_device *dev, u16 vid,
@@ -118,8 +108,8 @@ static int ksz9477_get_vlan_table(struct ksz_device *dev, 
u16 vid,
        ksz_write8(dev, REG_SW_VLAN_CTRL, VLAN_READ | VLAN_START);
 
        /* wait to be cleared */
-       ret = ksz9477_wait_vlan_ctrl_ready(dev, VLAN_START, 1000);
-       if (ret < 0) {
+       ret = ksz9477_wait_vlan_ctrl_ready(dev);
+       if (ret) {
                dev_dbg(dev->dev, "Failed to read vlan table\n");
                goto exit;
        }
@@ -151,8 +141,8 @@ static int ksz9477_set_vlan_table(struct ksz_device *dev, 
u16 vid,
        ksz_write8(dev, REG_SW_VLAN_CTRL, VLAN_START | VLAN_WRITE);
 
        /* wait to be cleared */
-       ret = ksz9477_wait_vlan_ctrl_ready(dev, VLAN_START, 1000);
-       if (ret < 0) {
+       ret = ksz9477_wait_vlan_ctrl_ready(dev);
+       if (ret) {
                dev_dbg(dev->dev, "Failed to write vlan table\n");
                goto exit;
        }
-- 
2.20.1

Reply via email to