mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 06:57:57 +00:00
mediatek: mt7623: fix Ethernet setup for TRGMII mode
This fixes the TX performance issues seen on MT7623 boards. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
This commit is contained in:
parent
be3c8f8b2b
commit
ff8cc137fb
@ -0,0 +1,62 @@
|
|||||||
|
In-Reply-To: <trinity-fb0cdf15-dfcf-4d60-9144-87d8fbfad5ba-1586179542451@3c-app-gmx-bap62>
|
||||||
|
References: <trinity-fb0cdf15-dfcf-4d60-9144-87d8fbfad5ba-1586179542451@3c-app-gmx-bap62>
|
||||||
|
Subject: [PATCH] net: ethernet: mtk_eth_soc: Always call mtk_gmac0_rgmii_adjust() for mt7623
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
From: René van Dorst <opensource@vdorst.com>
|
||||||
|
|
||||||
|
Modify mtk_gmac0_rgmii_adjust() so it can always be called.
|
||||||
|
mtk_gmac0_rgmii_adjust() sets-up the TRGMII clocks.
|
||||||
|
|
||||||
|
Signed-off-by: René van Dorst <opensource@vdorst.com>
|
||||||
|
Signed-off-By: David Woodhouse <dwmw2@infradead.org>
|
||||||
|
---
|
||||||
|
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 19 ++++++++++++++-----
|
||||||
|
1 file changed, 14 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
|
index b5408c5b954a..f89f225ab144 100644
|
||||||
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
|
@@ -171,11 +171,21 @@ static int mt7621_gmac0_rgmii_adjust(struct mtk_eth *eth,
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void mtk_gmac0_rgmii_adjust(struct mtk_eth *eth, int speed)
|
||||||
|
+static void mtk_gmac0_rgmii_adjust(struct mtk_eth *eth,
|
||||||
|
+ phy_interface_t interface, int speed)
|
||||||
|
{
|
||||||
|
u32 val;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
+ if (interface == PHY_INTERFACE_MODE_TRGMII) {
|
||||||
|
+ mtk_w32(eth, TRGMII_MODE, INTF_MODE);
|
||||||
|
+ val = 500000000;
|
||||||
|
+ ret = clk_set_rate(eth->clks[MTK_CLK_TRGPLL], val);
|
||||||
|
+ if (ret)
|
||||||
|
+ dev_err(eth->dev, "Failed to set trgmii pll: %d\n", ret);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
val = (speed == SPEED_1000) ?
|
||||||
|
INTF_MODE_RGMII_1000 : INTF_MODE_RGMII_10_100;
|
||||||
|
mtk_w32(eth, val, INTF_MODE);
|
||||||
|
@@ -262,10 +272,9 @@ static void mtk_mac_config(struct phylink_config *config, unsigned int mode,
|
||||||
|
state->interface))
|
||||||
|
goto err_phy;
|
||||||
|
} else {
|
||||||
|
- if (state->interface !=
|
||||||
|
- PHY_INTERFACE_MODE_TRGMII)
|
||||||
|
- mtk_gmac0_rgmii_adjust(mac->hw,
|
||||||
|
- state->speed);
|
||||||
|
+ mtk_gmac0_rgmii_adjust(mac->hw,
|
||||||
|
+ state->interface,
|
||||||
|
+ state->speed);
|
||||||
|
|
||||||
|
/* mt7623_pad_clk_setup */
|
||||||
|
for (i = 0 ; i < NUM_TRGMII_CTRL; i++)
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
Loading…
Reference in New Issue
Block a user