> +static int fsd_clks_endisable(void *priv, bool enabled) > +{ > + struct fsd_eqos_plat_data *plat = priv; > + > + if (enabled) { > + return clk_bulk_prepare_enable(plat->num_clks, plat->clks); > + } else { > + clk_bulk_disable_unprepare(plat->num_clks, plat->clks); > + return 0; > + } > +} > + > +static int fsd_eqos_probe(struct platform_device *pdev, > + struct plat_stmmacenet_data *data, > + struct stmmac_resources *res) > +{ > + struct fsd_eqos_plat_data *priv_plat; > + struct clk *rx1 = NULL; > + struct clk *rx2 = NULL; > + int ret = 0; > + > + priv_plat = devm_kzalloc(&pdev->dev, sizeof(*priv_plat), GFP_KERNEL); > + if (!priv_plat) > + return -ENOMEM; > + > + priv_plat->dev = &pdev->dev; > + > + ret = devm_clk_bulk_get_all(&pdev->dev, &priv_plat->clks); > + if (ret < 0) > + return dev_err_probe(&pdev->dev, ret, "No clocks available\n"); > + > + priv_plat->num_clks = ret; It looks like you should be able to share all the clk_bulk code with tegra_eqos_probe(). The stmmac driver suffers from lots of cut/paste code with no consolidation. You can at least not make the tegra code worse by doing a little refactoring. Andrew