void __iomem *base;
int irq;
int i;
+ unsigned long emc_clk_rate;
if (!ndev->dev.platform_data) {
dev_err(&ndev->dev, "no platform data\n");
goto err_put_clk;
}
- /*
- * The emc is a shared clock, it will be set to the highest
- * requested rate from any user. Set the rate to ULONG_MAX to
- * always request the max rate whenever this request is enabled
- */
- clk_set_rate(emc_clk, ULONG_MAX);
-
dc->clk = clk;
dc->emc_clk = emc_clk;
dc->base_res = base_res;
dc->ndev = ndev;
dc->pdata = ndev->dev.platform_data;
+ /*
+ * The emc is a shared clock, it will be set based on
+ * the requirements for each user on the bus.
+ */
+ emc_clk_rate = dc->pdata->emc_clk_rate;
+ clk_set_rate(emc_clk, emc_clk_rate ? emc_clk_rate : ULONG_MAX);
+
if (dc->pdata->flags & TEGRA_DC_FLAG_ENABLED)
dc->enabled = true;