net: phy: dp83867: Allocate state struct in probe
authorTrent Piepho <tpiepho@impinj.com>
Wed, 22 May 2019 18:43:27 +0000 (18:43 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 23 May 2019 00:40:18 +0000 (17:40 -0700)
This was being done in config the first time the phy was configured.
Should be in the probe method.

Cc: Andrew Lunn <andrew@lunn.ch>
Cc: Florian Fainelli <f.fainelli@gmail.com>
Cc: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Trent Piepho <tpiepho@impinj.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/dp83867.c

index ce46ff4..3bdf940 100644 (file)
@@ -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,