From 0b439e14a08b57b80b1a04cc28170dab9c8ce33f Mon Sep 17 00:00:00 2001 From: chillymattster <106633144+chillymattster@users.noreply.github.com> Date: Wed, 3 Sep 2025 11:48:35 +0200 Subject: [PATCH] add kernel patch to fix 10mbps ethernet for rockpi s --- ...board-rockpis-0030-fix10MbitEthernet.patch | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 patch/kernel/archive/rockchip64-6.12/board-rockpis-0030-fix10MbitEthernet.patch diff --git a/patch/kernel/archive/rockchip64-6.12/board-rockpis-0030-fix10MbitEthernet.patch b/patch/kernel/archive/rockchip64-6.12/board-rockpis-0030-fix10MbitEthernet.patch new file mode 100644 index 000000000..808383c11 --- /dev/null +++ b/patch/kernel/archive/rockchip64-6.12/board-rockpis-0030-fix10MbitEthernet.patch @@ -0,0 +1,73 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Brent Roman +Date: Sat, 30 Dec 2023 12:04:32 -0800 +Subject: fix10MbitEthernet + drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c + +Signed-off-by: Brent Roman +--- + drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 27 ++++++---- + 1 file changed, 17 insertions(+), 10 deletions(-) + +diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c +index cf682a9e3..512a7586c 100644 +--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c ++++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c +@@ -504,12 +504,12 @@ static const struct rk_gmac_ops rk3288_ops = { + #define RK3308_GRF_MAC_CON0 0x04a0 + + /* RK3308_GRF_MAC_CON0 */ + #define RK3308_GMAC_PHY_INTF_SEL_RMII (GRF_CLR_BIT(2) | GRF_CLR_BIT(3) | \ + GRF_BIT(4)) +-#define RK3308_GMAC_FLOW_CTRL GRF_BIT(3) +-#define RK3308_GMAC_FLOW_CTRL_CLR GRF_CLR_BIT(3) ++#define RK3308_GMAC_FLOW_CTRL GRF_BIT(1) ++#define RK3308_GMAC_FLOW_CTRL_CLR GRF_CLR_BIT(1) + #define RK3308_GMAC_SPEED_10M GRF_CLR_BIT(0) + #define RK3308_GMAC_SPEED_100M GRF_BIT(0) + + static void rk3308_set_to_rmii(struct rk_priv_data *bsp_priv) + { +@@ -525,24 +525,31 @@ static void rk3308_set_to_rmii(struct rk_priv_data *bsp_priv) + } + + static void rk3308_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed) + { + struct device *dev = &bsp_priv->pdev->dev; ++ int rateMode; + + if (IS_ERR(bsp_priv->grf)) { + dev_err(dev, "Missing rockchip,grf property\n"); + return; + } + +- if (speed == 10) { +- regmap_write(bsp_priv->grf, RK3308_GRF_MAC_CON0, +- RK3308_GMAC_SPEED_10M); +- } else if (speed == 100) { +- regmap_write(bsp_priv->grf, RK3308_GRF_MAC_CON0, +- RK3308_GMAC_SPEED_100M); +- } else { +- dev_err(dev, "unknown speed value for RMII! speed=%d", speed); ++ if (speed == 10) ++ rateMode = RK3308_GMAC_SPEED_10M; ++ else if (speed == 100) ++ rateMode = RK3308_GMAC_SPEED_100M; ++ else { ++ dev_err(dev, "RMII does not support %dMbps", speed); ++ return; ++ } ++ regmap_write(bsp_priv->grf, RK3308_GRF_MAC_CON0, rateMode); ++ { ++ int ret = clk_set_rate(bsp_priv->clks[RK_CLK_MAC_SPEED].clk, 250000*speed); ++ if (ret) ++ dev_err(dev, "%s: clk_set_rate for %dMbps returned: %d\n", ++ __func__, speed, ret); + } + } + + static const struct rk_gmac_ops rk3308_ops = { + .set_to_rmii = rk3308_set_to_rmii, +-- +Created with Armbian build tools https://github.com/armbian/build +