Files
build/patch/kernel/archive/rockchip64-6.12/board-rockpis-0030-fix10MbitEthernet.patch
2025-09-07 06:35:27 +08:00

74 lines
2.4 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Brent Roman <genosensor@gmail.com>
Date: Sat, 30 Dec 2023 12:04:32 -0800
Subject: fix10MbitEthernet
drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
Signed-off-by: Brent Roman <genosensor@gmail.com>
---
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