This was being done in config the first time the phy was configured.
Should be in the probe method.

Cc: Andrew Lunn <and...@lunn.ch>
Cc: Florian Fainelli <f.faine...@gmail.com>
Cc: Heiner Kallweit <hkallwe...@gmail.com>
Signed-off-by: Trent Piepho <tpie...@impinj.com>
---

Notes:
    Changes from v1:
      New patch in series v2

 drivers/net/phy/dp83867.c | 33 +++++++++++++++++++--------------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
index ce46ff4cf880..3bdf94043693 100644
--- a/drivers/net/phy/dp83867.c
+++ b/drivers/net/phy/dp83867.c
@@ -268,25 +268,29 @@ static int dp83867_of_init(struct phy_device *phydev)
 }
 #endif /* CONFIG_OF_MDIO */
 
-static int dp83867_config_init(struct phy_device *phydev)
+static int dp83867_probe(struct phy_device *phydev)
 {
        struct dp83867_private *dp83867;
+
+       dp83867 = devm_kzalloc(&phydev->mdio.dev, sizeof(*dp83867),
+                              GFP_KERNEL);
+       if (!dp83867)
+               return -ENOMEM;
+
+       phydev->priv = dp83867;
+
+       return 0;
+}
+
+static int dp83867_config_init(struct phy_device *phydev)
+{
+       struct dp83867_private *dp83867 = phydev->priv;
        int ret, val, bs;
        u16 delay;
 
-       if (!phydev->priv) {
-               dp83867 = devm_kzalloc(&phydev->mdio.dev, sizeof(*dp83867),
-                                      GFP_KERNEL);
-               if (!dp83867)
-                       return -ENOMEM;
-
-               phydev->priv = dp83867;
-               ret = dp83867_of_init(phydev);
-               if (ret)
-                       return ret;
-       } else {
-               dp83867 = (struct dp83867_private *)phydev->priv;
-       }
+       ret = dp83867_of_init(phydev);
+       if (ret)
+               return ret;
 
        /* RX_DV/RX_CTRL strapped in mode 1 or mode 2 workaround */
        if (dp83867->rxctrl_strap_quirk)
@@ -402,6 +406,7 @@ static struct phy_driver dp83867_driver[] = {
                .name           = "TI DP83867",
                /* PHY_GBIT_FEATURES */
 
+               .probe          = dp83867_probe,
                .config_init    = dp83867_config_init,
                .soft_reset     = dp83867_phy_reset,
 
-- 
2.14.5

Reply via email to