Merge branch 'clock_devel_3.7' into hwmod_prcm_clock_a_3.7
Conflicts: arch/arm/mach-omap2/clkt34xx_dpll3m2.c arch/arm/mach-omap2/clkt_clksel.c arch/arm/mach-omap2/clock.c
This commit is contained in:
@@ -87,7 +87,7 @@ static int _dpll_test_fint(struct clk *clk, u8 n)
|
||||
dd = clk->dpll_data;
|
||||
|
||||
/* DPLL divider must result in a valid jitter correction val */
|
||||
fint = clk->parent->rate / n;
|
||||
fint = __clk_get_rate(__clk_get_parent(clk)) / n;
|
||||
|
||||
if (cpu_is_omap24xx()) {
|
||||
/* Should not be called for OMAP2, so warn if it is called */
|
||||
@@ -252,16 +252,16 @@ u32 omap2_get_dpll_rate(struct clk *clk)
|
||||
if (cpu_is_omap24xx()) {
|
||||
if (v == OMAP2XXX_EN_DPLL_LPBYPASS ||
|
||||
v == OMAP2XXX_EN_DPLL_FRBYPASS)
|
||||
return dd->clk_bypass->rate;
|
||||
return __clk_get_rate(dd->clk_bypass);
|
||||
} else if (cpu_is_omap34xx()) {
|
||||
if (v == OMAP3XXX_EN_DPLL_LPBYPASS ||
|
||||
v == OMAP3XXX_EN_DPLL_FRBYPASS)
|
||||
return dd->clk_bypass->rate;
|
||||
return __clk_get_rate(dd->clk_bypass);
|
||||
} else if (soc_is_am33xx() || cpu_is_omap44xx()) {
|
||||
if (v == OMAP4XXX_EN_DPLL_LPBYPASS ||
|
||||
v == OMAP4XXX_EN_DPLL_FRBYPASS ||
|
||||
v == OMAP4XXX_EN_DPLL_MNBYPASS)
|
||||
return dd->clk_bypass->rate;
|
||||
return __clk_get_rate(dd->clk_bypass);
|
||||
}
|
||||
|
||||
v = __raw_readl(dd->mult_div1_reg);
|
||||
@@ -270,7 +270,7 @@ u32 omap2_get_dpll_rate(struct clk *clk)
|
||||
dpll_div = v & dd->div1_mask;
|
||||
dpll_div >>= __ffs(dd->div1_mask);
|
||||
|
||||
dpll_clk = (long long)dd->clk_ref->rate * dpll_mult;
|
||||
dpll_clk = (long long) __clk_get_rate(dd->clk_ref) * dpll_mult;
|
||||
do_div(dpll_clk, dpll_div + 1);
|
||||
|
||||
return dpll_clk;
|
||||
@@ -296,16 +296,20 @@ long omap2_dpll_round_rate(struct clk *clk, unsigned long target_rate)
|
||||
unsigned long scaled_rt_rp;
|
||||
unsigned long new_rate = 0;
|
||||
struct dpll_data *dd;
|
||||
unsigned long ref_rate;
|
||||
const char *clk_name;
|
||||
|
||||
if (!clk || !clk->dpll_data)
|
||||
return ~0;
|
||||
|
||||
dd = clk->dpll_data;
|
||||
|
||||
ref_rate = __clk_get_rate(dd->clk_ref);
|
||||
clk_name = __clk_get_name(clk);
|
||||
pr_debug("clock: %s: starting DPLL round_rate, target rate %ld\n",
|
||||
clk->name, target_rate);
|
||||
clk_name, target_rate);
|
||||
|
||||
scaled_rt_rp = target_rate / (dd->clk_ref->rate / DPLL_SCALE_FACTOR);
|
||||
scaled_rt_rp = target_rate / (ref_rate / DPLL_SCALE_FACTOR);
|
||||
scaled_max_m = dd->max_multiplier * DPLL_SCALE_FACTOR;
|
||||
|
||||
dd->last_rounded_rate = 0;
|
||||
@@ -332,14 +336,14 @@ long omap2_dpll_round_rate(struct clk *clk, unsigned long target_rate)
|
||||
break;
|
||||
|
||||
r = _dpll_test_mult(&m, n, &new_rate, target_rate,
|
||||
dd->clk_ref->rate);
|
||||
ref_rate);
|
||||
|
||||
/* m can't be set low enough for this n - try with a larger n */
|
||||
if (r == DPLL_MULT_UNDERFLOW)
|
||||
continue;
|
||||
|
||||
pr_debug("clock: %s: m = %d: n = %d: new_rate = %ld\n",
|
||||
clk->name, m, n, new_rate);
|
||||
clk_name, m, n, new_rate);
|
||||
|
||||
if (target_rate == new_rate) {
|
||||
dd->last_rounded_m = m;
|
||||
@@ -350,8 +354,8 @@ long omap2_dpll_round_rate(struct clk *clk, unsigned long target_rate)
|
||||
}
|
||||
|
||||
if (target_rate != new_rate) {
|
||||
pr_debug("clock: %s: cannot round to rate %ld\n", clk->name,
|
||||
target_rate);
|
||||
pr_debug("clock: %s: cannot round to rate %ld\n",
|
||||
clk_name, target_rate);
|
||||
return ~0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user