unsigned int num_por;
        bool rgmii_config_loopback_en;
        bool has_emac3;
+       const char *link_clk_name;
        struct dwmac4_addrs dwmac4_addrs;
 };
 
        struct platform_device *pdev;
        void __iomem *rgmii_base;
 
-       unsigned int rgmii_clk_rate;
-       struct clk *rgmii_clk;
+       unsigned int link_clk_rate;
+       struct clk *link_clk;
        struct phy *serdes_phy;
        unsigned int speed;
 
 #define RGMII_ID_MODE_10_LOW_SVS_CLK_FREQ        (5 * 1000 * 1000UL)
 
 static void
-ethqos_update_rgmii_clk(struct qcom_ethqos *ethqos, unsigned int speed)
+ethqos_update_link_clk(struct qcom_ethqos *ethqos, unsigned int speed)
 {
        switch (speed) {
        case SPEED_1000:
-               ethqos->rgmii_clk_rate =  RGMII_1000_NOM_CLK_FREQ;
+               ethqos->link_clk_rate =  RGMII_1000_NOM_CLK_FREQ;
                break;
 
        case SPEED_100:
-               ethqos->rgmii_clk_rate =  RGMII_ID_MODE_100_LOW_SVS_CLK_FREQ;
+               ethqos->link_clk_rate =  RGMII_ID_MODE_100_LOW_SVS_CLK_FREQ;
                break;
 
        case SPEED_10:
-               ethqos->rgmii_clk_rate =  RGMII_ID_MODE_10_LOW_SVS_CLK_FREQ;
+               ethqos->link_clk_rate =  RGMII_ID_MODE_10_LOW_SVS_CLK_FREQ;
                break;
        }
 
-       clk_set_rate(ethqos->rgmii_clk, ethqos->rgmii_clk_rate);
+       clk_set_rate(ethqos->link_clk, ethqos->link_clk_rate);
 }
 
 static void ethqos_set_func_clk_en(struct qcom_ethqos *ethqos)
        struct qcom_ethqos *ethqos = priv;
 
        ethqos->speed = speed;
-       ethqos_update_rgmii_clk(ethqos, speed);
+       ethqos_update_link_clk(ethqos, speed);
        ethqos_configure(ethqos);
 }
 
        int ret = 0;
 
        if (enabled) {
-               ret = clk_prepare_enable(ethqos->rgmii_clk);
+               ret = clk_prepare_enable(ethqos->link_clk);
                if (ret) {
-                       dev_err(ðqos->pdev->dev, "rgmii_clk enable failed\n");
+                       dev_err(ðqos->pdev->dev, "link_clk enable failed\n");
                        return ret;
                }
 
                 */
                ethqos_set_func_clk_en(ethqos);
        } else {
-               clk_disable_unprepare(ethqos->rgmii_clk);
+               clk_disable_unprepare(ethqos->link_clk);
        }
 
        return ret;
        ethqos->rgmii_config_loopback_en = data->rgmii_config_loopback_en;
        ethqos->has_emac3 = data->has_emac3;
 
-       ethqos->rgmii_clk = devm_clk_get(dev, "rgmii");
-       if (IS_ERR(ethqos->rgmii_clk)) {
-               ret = PTR_ERR(ethqos->rgmii_clk);
+       ethqos->link_clk = devm_clk_get(dev, data->link_clk_name ?: "rgmii");
+       if (IS_ERR(ethqos->link_clk)) {
+               ret = PTR_ERR(ethqos->link_clk);
                goto out_config_dt;
        }
 
        }
 
        ethqos->speed = SPEED_1000;
-       ethqos_update_rgmii_clk(ethqos, SPEED_1000);
+       ethqos_update_link_clk(ethqos, SPEED_1000);
        ethqos_set_func_clk_en(ethqos);
 
        plat_dat->bsp_priv = ethqos;