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

Reviewed-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/bcm84881.c

index 14d55a7..3840d2a 100644 (file)
@@ -22,30 +22,11 @@ enum {
 
 static int bcm84881_wait_init(struct phy_device *phydev)
 {
-       unsigned int tries = 20;
-       int ret, val;
-
-       do {
-               val = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_CTRL1);
-               if (val < 0) {
-                       ret = val;
-                       break;
-               }
-               if (!(val & MDIO_CTRL1_RESET)) {
-                       ret = 0;
-                       break;
-               }
-               if (!--tries) {
-                       ret = -ETIMEDOUT;
-                       break;
-               }
-               msleep(100);
-       } while (1);
+       int val;
 
-       if (ret)
-               phydev_err(phydev, "%s failed: %d\n", __func__, ret);
-
-       return ret;
+       return phy_read_mmd_poll_timeout(phydev, MDIO_MMD_PMAPMD, MDIO_CTRL1,
+                                        val, !(val & MDIO_CTRL1_RESET),
+                                        100000, 2000000, false);
 }
 
 static int bcm84881_config_init(struct phy_device *phydev)