mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
65 lines
2.2 KiB
Diff
65 lines
2.2 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 111111111111..222222222222 100644
|
|
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
|
|
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
|
|
@@ -505,8 +505,8 @@ static const struct rk_gmac_ops rk3288_ops = {
|
|
/* 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)
|
|
|
|
@@ -526,20 +526,27 @@ 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);
|
|
}
|
|
}
|
|
|
|
--
|
|
Armbian
|
|
|