OSDN Git Service

net: phy: probe the PHY before determining the supported features
authorAndrew Lunn <andrew@lunn.ch>
Sat, 9 Feb 2019 13:46:30 +0000 (14:46 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 9 Feb 2019 17:31:30 +0000 (09:31 -0800)
We will soon support asking the PHY at runtime to determine what
features it supports, rather than forcing it to be compile time.
But we should probe the PHY first. So probe the phy driver earlier.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/phy_device.c

index 31f9e7c..92b7a71 100644 (file)
@@ -2220,6 +2220,18 @@ static int phy_probe(struct device *dev)
 
        mutex_lock(&phydev->lock);
 
+       if (phydev->drv->probe) {
+               /* Deassert the reset signal */
+               phy_device_reset(phydev, 0);
+
+               err = phydev->drv->probe(phydev);
+               if (err) {
+                       /* Assert the reset signal */
+                       phy_device_reset(phydev, 1);
+                       goto out;
+               }
+       }
+
        /* Start out supporting everything. Eventually,
         * a controller will attach, and may modify one
         * or both of these values
@@ -2267,17 +2279,7 @@ static int phy_probe(struct device *dev)
        /* Set the state to READY by default */
        phydev->state = PHY_READY;
 
-       if (phydev->drv->probe) {
-               /* Deassert the reset signal */
-               phy_device_reset(phydev, 0);
-
-               err = phydev->drv->probe(phydev);
-               if (err) {
-                       /* Assert the reset signal */
-                       phy_device_reset(phydev, 1);
-               }
-       }
-
+out:
        mutex_unlock(&phydev->lock);
 
        return err;