From: RenĂ© van Dorst <[email protected]>

[ Upstream commit 19016d93bfc335f0c158c0d9e3b9d06c4dd53d39 ]

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 <[email protected]>
Signed-off-By: David Woodhouse <[email protected]>
Tested-by: Frank Wunderlich <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
---
 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 997dc811382a4..be390c7e43b2f 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.25.1



Reply via email to