From e4bf61b0fa56e766d677ded495d8e3f37a2e0ba8 Mon Sep 17 00:00:00 2001 From: Ahmad Fatoum Date: Mon, 16 Jan 2023 14:44:58 +0100 Subject: net: dsa: always call port_pre_enable before port_enable The barebox DSA support differentiates between a port_pre_enable, that's called before connecting the PHY to drive a clock if nedeed and the actual port_enable. For user ports, port_enable of the CPU port is called, but not port_pre_enable. Fix this. Signed-off-by: Ahmad Fatoum Link: https://lore.barebox.org/20230116134501.2006391-7-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer --- drivers/net/dsa.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/net/dsa.c b/drivers/net/dsa.c index c1430a9361..793bbbb4f1 100644 --- a/drivers/net/dsa.c +++ b/drivers/net/dsa.c @@ -122,6 +122,16 @@ static int dsa_port_start(struct eth_device *edev) if (!ds->cpu_port_users) { struct dsa_port *dpc = ds->dp[ds->cpu_port]; + if (ops->port_pre_enable) { + /* In case of RMII interface we need to enable RMII clock + * before talking to the PHY. + */ + ret = ops->port_pre_enable(dpc, ds->cpu_port, + ds->cpu_port_fixed_phy->interface); + if (ret) + return ret; + } + if (ops->port_enable) { ret = ops->port_enable(dpc, ds->cpu_port, ds->cpu_port_fixed_phy); -- cgit v1.2.3