[PATCH] net: tsec: add option to set device max-speed via dts

Aleksandar Gerasimovski aleksandar.gerasimovski at hitachi-powergrids.com
Fri Jun 4 13:13:36 CEST 2021


Current tsec adapter sets adapter gigabit capabilities by default, and in
reality this must not always be the case.
It is possible that tsec adapter is used for 100Mbit connection, and in
this case setting 1000Mbit capabilities can lead to some side effects such
longer autoneg process.

In our ls102x designs this problem leads to long autoneg times (> 4 sec)
in case board rgmii link is 100Mbs capble only.
Limiting the rgmii link capabilities provides smother and faster
link establishment.

Signed-off-by: Aleksandar Gerasimovski <aleksandar.gerasimovski at hitachi-powergrids.com>
---
 drivers/net/tsec.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c
index c68e4b7..501390f 100644
--- a/drivers/net/tsec.c
+++ b/drivers/net/tsec.c
@@ -824,6 +824,7 @@ int tsec_probe(struct udevice *dev)
 	struct tsec_private *priv = dev_get_priv(dev);
 	struct ofnode_phandle_args phandle_args;
 	u32 tbiaddr = CONFIG_SYS_TBIPA_VALUE;
+	u32 max_speed;
 	struct tsec_data *data;
 	const char *phy_mode;
 	ofnode parent, child;
@@ -893,8 +894,12 @@ int tsec_probe(struct udevice *dev)
 	}
 	priv->interface = pdata->phy_interface;
 
+	/* Check for speed limis, default is 1000Mbps */
+	max_speed = dev_read_u32_default(dev, "max-speed", 1000);
+
 	/* Initialize flags */
-	priv->flags = TSEC_GIGABIT;
+	if (max_speed == 1000)
+		priv->flags = TSEC_GIGABIT;
 	if (priv->interface == PHY_INTERFACE_MODE_SGMII)
 		priv->flags |= TSEC_SGMII;
 
-- 
1.8.3.1


More information about the U-Boot mailing list