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 <a.fatoum@xxxxxxxxxxxxxx> --- drivers/net/dsa.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/net/dsa.c b/drivers/net/dsa.c index c1430a93615b..793bbbb4f18f 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); -- 2.30.2