net: phy: improve phy_init_hw
authorHeiner Kallweit <hkallweit1@gmail.com>
Sat, 19 Jan 2019 09:43:07 +0000 (10:43 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 22 Jan 2019 22:45:41 +0000 (14:45 -0800)
Currently the soft reset (if defined) is done only if the driver also
implements the config_init callback. I think this dependency is a
mistake, so let's remove it.

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

index d35038b23370bd76d89200b400e1de41bc0fdf46..6ccc2c7cc9f69dfcd61d23d0181e8b1cee4c5087 100644 (file)
@@ -1072,7 +1072,7 @@ int phy_init_hw(struct phy_device *phydev)
        /* Deassert the reset signal */
        phy_device_reset(phydev, 0);
 
-       if (!phydev->drv || !phydev->drv->config_init)
+       if (!phydev->drv)
                return 0;
 
        if (phydev->drv->soft_reset)
@@ -1085,7 +1085,10 @@ int phy_init_hw(struct phy_device *phydev)
        if (ret < 0)
                return ret;
 
-       return phydev->drv->config_init(phydev);
+       if (phydev->drv->config_init)
+               ret = phydev->drv->config_init(phydev);
+
+       return ret;
 }
 EXPORT_SYMBOL(phy_init_hw);