net: phy: smsc: use phy_read_poll_timeout() to simplify the code
authorDejin Zheng <zhengdejin5@gmail.com>
Mon, 23 Mar 2020 15:05:59 +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 lan87xx_read_status() function.

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

index b732982507939563d08a49f7c6ec22d86f1b0dcf..93da7d3d0954cf976dca76d80882a2254c34e72b 100644 (file)
@@ -112,8 +112,6 @@ static int lan87xx_read_status(struct phy_device *phydev)
        int err = genphy_read_status(phydev);
 
        if (!phydev->link && priv->energy_enable) {
-               int i;
-
                /* Disable EDPD to wake up PHY */
                int rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);
                if (rc < 0)
@@ -125,15 +123,11 @@ static int lan87xx_read_status(struct phy_device *phydev)
                        return rc;
 
                /* Wait max 640 ms to detect energy */
-               for (i = 0; i < 64; i++) {
-                       /* Sleep to allow link test pulses to be sent */
-                       msleep(10);
-                       rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);
-                       if (rc < 0)
-                               return rc;
-                       if (rc & MII_LAN83C185_ENERGYON)
-                               break;
-               }
+               phy_read_poll_timeout(phydev, MII_LAN83C185_CTRL_STATUS, rc,
+                                     rc & MII_LAN83C185_ENERGYON, 10000,
+                                     640000, true);
+               if (rc < 0)
+                       return rc;
 
                /* Re-enable EDPD */
                rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);