mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
add kernel patch to fix 10mbps ethernet for rockpi s
This commit is contained in:
committed by
Rolf Leggewie
parent
e696c2eb3b
commit
0b439e14a0
@@ -0,0 +1,73 @@
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user