[PATCH 3/5] fixup! net: eqos: Rockchip support

Ahmad Fatoum a.fatoum at pengutronix.de
Wed Jun 9 01:55:10 PDT 2021


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 at pengutronix.de>
---
 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




More information about the barebox mailing list