Currently the init_phy function may overwrite the priv->interface
property, since it calls tsec_get_interface which tries to determine it
dynamically based on default register values in ECNTRL.

Let's do that only if phy-connection-type happens to not be defined in
the device tree.

Signed-off-by: Vladimir Oltean <vladimir.olt...@nxp.com>
---
 drivers/net/tsec.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c
index ee820aae15ef..809cf7e432e6 100644
--- a/drivers/net/tsec.c
+++ b/drivers/net/tsec.c
@@ -701,8 +701,6 @@ static int init_phy(struct tsec_private *priv)
        /* Assign a Physical address to the TBI */
        out_be32(&regs->tbipa, priv->tbiaddr);
 
-       priv->interface = tsec_get_interface(priv);
-
        if (priv->interface == PHY_INTERFACE_MODE_SGMII)
                tsec_configure_serdes(priv);
 
@@ -888,10 +886,9 @@ int tsec_probe(struct udevice *dev)
        phy_mode = dev_read_prop(dev, "phy-connection-type", NULL);
        if (phy_mode)
                pdata->phy_interface = phy_get_interface_by_name(phy_mode);
-       if (pdata->phy_interface == -1) {
-               printf("Invalid PHY interface '%s'\n", phy_mode);
-               return -EINVAL;
-       }
+       if (pdata->phy_interface == -1)
+               pdata->phy_interface = tsec_get_interface(priv);
+
        priv->interface = pdata->phy_interface;
 
        /* Check for speed limit, default is 1000Mbps */
-- 
2.25.1

Reply via email to