[PATCH 0/2] TSEC Ethernet driver phy-mode changes

Make the Freescale/NXP TSEC driver listen to the phy-mode or phy-connection-type OF property.
Currently there is an attempt to auto-determine the PHY mode, only do that if the phy-mode string is not specified.
Also, be compatible with phy-mode, right now the driver only parses phy-connection-type, both both are equivalent.
Vladimir Oltean (2): net: tsec: only call tsec_get_interface as fallback to DT-specified PHY mode net: tsec: read the phy-mode property as fallback to phy-connection-type
drivers/net/tsec.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-)

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.oltean@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(®s->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 */

On Sat, Sep 18, 2021 at 8:47 PM Vladimir Oltean vladimir.oltean@nxp.com wrote:
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.oltean@nxp.com
drivers/net/tsec.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
Reviewed-by: Bin Meng bmeng.cn@gmail.com Tested-by: Bin Meng bmeng.cn@gmail.com

On Sun, Sep 19, 2021 at 10:32 AM Bin Meng bmeng.cn@gmail.com wrote:
On Sat, Sep 18, 2021 at 8:47 PM Vladimir Oltean vladimir.oltean@nxp.com wrote:
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.oltean@nxp.com
drivers/net/tsec.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
Reviewed-by: Bin Meng bmeng.cn@gmail.com Tested-by: Bin Meng bmeng.cn@gmail.com
Reviewed-by: Ramon Fried rfried.dev@gmail.com

The two should be equivalent, but at the moment some platforms (ls1021a-tsn.dts) use phy-mode only, which is not parsed.
Signed-off-by: Vladimir Oltean vladimir.oltean@nxp.com --- drivers/net/tsec.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index 809cf7e432e6..f0cf0a7559ab 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -884,6 +884,8 @@ int tsec_probe(struct udevice *dev) priv->tbiaddr = tbiaddr;
phy_mode = dev_read_prop(dev, "phy-connection-type", NULL); + if (!phy_mode) + phy_mode = dev_read_prop(dev, "phy-mode", NULL); if (phy_mode) pdata->phy_interface = phy_get_interface_by_name(phy_mode); if (pdata->phy_interface == -1)

On Sat, Sep 18, 2021 at 8:47 PM Vladimir Oltean vladimir.oltean@nxp.com wrote:
The two should be equivalent, but at the moment some platforms (ls1021a-tsn.dts) use phy-mode only, which is not parsed.
Signed-off-by: Vladimir Oltean vladimir.oltean@nxp.com
drivers/net/tsec.c | 2 ++ 1 file changed, 2 insertions(+)
Reviewed-by: Bin Meng bmeng.cn@gmail.com Tested-by: Bin Meng bmeng.cn@gmail.com

On Sun, Sep 19, 2021 at 10:32 AM Bin Meng bmeng.cn@gmail.com wrote:
On Sat, Sep 18, 2021 at 8:47 PM Vladimir Oltean vladimir.oltean@nxp.com wrote:
The two should be equivalent, but at the moment some platforms (ls1021a-tsn.dts) use phy-mode only, which is not parsed.
Signed-off-by: Vladimir Oltean vladimir.oltean@nxp.com
drivers/net/tsec.c | 2 ++ 1 file changed, 2 insertions(+)
Reviewed-by: Bin Meng bmeng.cn@gmail.com Tested-by: Bin Meng bmeng.cn@gmail.com
Reviewed-by: Ramon Fried rfried.dev@gmail.com
participants (3)
-
Bin Meng
-
Ramon Fried
-
Vladimir Oltean