|
@@ -390,7 +390,8 @@ int omap3_noncore_dpll_enable(struct clk *clk)
|
|
|
* propagating?
|
|
|
*/
|
|
|
if (!r)
|
|
|
- clk->rate = omap2_get_dpll_rate(clk);
|
|
|
+ clk->rate = (clk->recalc) ? clk->recalc(clk) :
|
|
|
+ omap2_get_dpll_rate(clk);
|
|
|
|
|
|
return r;
|
|
|
}
|
|
@@ -424,6 +425,7 @@ void omap3_noncore_dpll_disable(struct clk *clk)
|
|
|
int omap3_noncore_dpll_set_rate(struct clk *clk, unsigned long rate)
|
|
|
{
|
|
|
struct clk *new_parent = NULL;
|
|
|
+ unsigned long hw_rate;
|
|
|
u16 freqsel = 0;
|
|
|
struct dpll_data *dd;
|
|
|
int ret;
|
|
@@ -435,7 +437,8 @@ int omap3_noncore_dpll_set_rate(struct clk *clk, unsigned long rate)
|
|
|
if (!dd)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- if (rate == omap2_get_dpll_rate(clk))
|
|
|
+ hw_rate = (clk->recalc) ? clk->recalc(clk) : omap2_get_dpll_rate(clk);
|
|
|
+ if (rate == hw_rate)
|
|
|
return 0;
|
|
|
|
|
|
/*
|