net: phy: use phy_read_poll_timeout() to simplify the code
authorDejin Zheng <zhengdejin5@gmail.com>
Mon, 23 Mar 2020 15:05:58 +0000 (23:05 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Mar 2020 05:00:02 +0000 (22:00 -0700)
use phy_read_poll_timeout() to replace the poll codes for
simplify the code in phy_poll_reset() function.

Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Dejin Zheng <zhengdejin5@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/phy_device.c

index a585faf..3b8f6b0 100644 (file)
@@ -1059,18 +1059,12 @@ EXPORT_SYMBOL(phy_disconnect);
 static int phy_poll_reset(struct phy_device *phydev)
 {
        /* Poll until the reset bit clears (50ms per retry == 0.6 sec) */
-       unsigned int retries = 12;
-       int ret;
-
-       do {
-               msleep(50);
-               ret = phy_read(phydev, MII_BMCR);
-               if (ret < 0)
-                       return ret;
-       } while (ret & BMCR_RESET && --retries);
-       if (ret & BMCR_RESET)
-               return -ETIMEDOUT;
+       int ret, val;
 
+       ret = phy_read_poll_timeout(phydev, MII_BMCR, val, !(val & BMCR_RESET),
+                                   50000, 600000, true);
+       if (ret)
+               return ret;
        /* Some chips (smsc911x) may still need up to another 1ms after the
         * BMCR_RESET bit is cleared before they are usable.
         */