struct gpio_desc *reset;
 };
 
+static struct clk *dwc_eth_find_clk(struct plat_stmmacenet_data *plat_dat,
+                                   const char *name)
+{
+       for (int i = 0; i < plat_dat->num_clks; i++)
+               if (strcmp(plat_dat->clks[i].id, name) == 0)
+                       return plat_dat->clks[i].clk;
+
+       return NULL;
+}
+
 static int dwc_eth_dwmac_config_dt(struct platform_device *pdev,
                                   struct plat_stmmacenet_data *plat_dat)
 {
                         struct plat_stmmacenet_data *plat_dat,
                         struct stmmac_resources *stmmac_res)
 {
-       for (int i = 0; i < plat_dat->num_clks; i++) {
-               if (strcmp(plat_dat->clks[i].id, "apb_pclk") == 0)
-                       plat_dat->stmmac_clk = plat_dat->clks[i].clk;
-               else if (strcmp(plat_dat->clks[i].id, "phy_ref_clk") == 0)
-                       plat_dat->pclk = plat_dat->clks[i].clk;
-       }
+       plat_dat->pclk = dwc_eth_find_clk(plat_dat, "phy_ref_clk");
 
        return 0;
 }
 
        eqos->dev = &pdev->dev;
        eqos->regs = res->addr;
+       eqos->clk_slave = plat_dat->stmmac_clk;
 
        if (!is_of_node(dev->fwnode))
                goto bypass_clk_reset_gpio;
 
-       for (int i = 0; i < plat_dat->num_clks; i++) {
-               if (strcmp(plat_dat->clks[i].id, "slave_bus") == 0) {
-                       eqos->clk_slave = plat_dat->clks[i].clk;
-                       plat_dat->stmmac_clk = eqos->clk_slave;
-               } else if (strcmp(plat_dat->clks[i].id, "tx") == 0) {
-                       eqos->clk_tx = plat_dat->clks[i].clk;
-               }
-       }
+       eqos->clk_tx = dwc_eth_find_clk(plat_dat, "tx");
 
        eqos->reset = devm_gpiod_get(&pdev->dev, "phy-reset", GPIOD_OUT_HIGH);
        if (IS_ERR(eqos->reset)) {
                     struct plat_stmmacenet_data *plat_dat,
                     struct stmmac_resources *res);
        void (*remove)(struct platform_device *pdev);
+       const char *stmmac_clk_name;
 };
 
 static const struct dwc_eth_dwmac_data dwc_qos_data = {
        .probe = dwc_qos_probe,
+       .stmmac_clk_name = "apb_pclk",
 };
 
 static const struct dwc_eth_dwmac_data tegra_eqos_data = {
        .probe = tegra_eqos_probe,
        .remove = tegra_eqos_remove,
+       .stmmac_clk_name = "slave_bus",
 };
 
 static int dwc_eth_dwmac_probe(struct platform_device *pdev)
        if (ret)
                return dev_err_probe(&pdev->dev, ret, "Failed to enable clocks\n");
 
+       plat_dat->stmmac_clk = dwc_eth_find_clk(plat_dat,
+                                               data->stmmac_clk_name);
+
        ret = data->probe(pdev, plat_dat, &stmmac_res);
        if (ret < 0) {
                dev_err_probe(&pdev->dev, ret, "failed to probe subdriver\n");