Other network controllers have different clock settings when configuring link speed for RMII vs. RGMII. Split up the callback like with Linux to make future extension easier. Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- drivers/net/designware_rockchip.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/net/designware_rockchip.c b/drivers/net/designware_rockchip.c index a4c7bfe925db..09b53e2cc08d 100644 --- a/drivers/net/designware_rockchip.c +++ b/drivers/net/designware_rockchip.c @@ -18,7 +18,8 @@ struct rk_gmac_ops { void (*set_to_rgmii)(struct eqos *eqos, int tx_delay, int rx_delay); void (*set_to_rmii)(struct eqos *eqos); - void (*set_speed)(struct eqos *eqos, int speed); + void (*set_rmii_speed)(struct eqos *eqos, int speed); + void (*set_rgmii_speed)(struct eqos *eqos, int speed); void (*integrated_phy_powerup)(struct eqos *eqos); const struct clk_bulk_data *extra_clks; @@ -182,7 +183,8 @@ static void rk3568_set_gmac_speed(struct eqos *eqos, int speed) static const struct rk_gmac_ops rk3568_ops = { .set_to_rgmii = rk3568_set_to_rgmii, .set_to_rmii = rk3568_set_to_rmii, - .set_speed = rk3568_set_gmac_speed, + .set_rmii_speed = rk3568_set_gmac_speed, + .set_rgmii_speed = rk3568_set_gmac_speed, .extra_clks = rk3568_gmac_clks, .num_extra_clks = ARRAY_SIZE(rk3568_gmac_clks), @@ -228,7 +230,10 @@ static void eqos_rk_adjust_link(struct eth_device *edev) struct eqos *eqos = edev->priv; struct eqos_rk_gmac *priv = to_rk_gmac(eqos); - priv->ops->set_speed(eqos, edev->phydev->speed); + if (phy_interface_mode_is_rgmii(eqos->interface)) + priv->ops->set_rgmii_speed(eqos, edev->phydev->speed); + else + priv->ops->set_rmii_speed(eqos, edev->phydev->speed); eqos_adjust_link(edev); } -- 2.29.2 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox