OMAP2+: clock: autoidle as many clocks as possible if CONFIG_OMAP_RESET_CLOCKS
Attempt to enable autoidle for as many clocks as possible in the OMAP2+-common CONFIG_OMAP_RESET_CLOCKS code. Currently, this only enables DPLL autoidle for OMAP3/4 DPLLs; but future patches will enable autoidle for other clocks and the OMAP2 DPLL/APLLs. In the long run, we should probably get rid of CONFIG_OMAP_RESET_CLOCKS, and unconditionally run the code that it selects. Otherwise, the state of the clock tree won't match the hardware state - this could result in clocks being enabled or disabled unpredictably. Based on a patch by Rajendra Nayak <rnayak@ti.com> that did this in the pm34xx.c/pm44xx.c code. Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Rajendra Nayak <rnayak@ti.com>
This commit is contained in:
parent
6c6f5a7437
commit
b80b956dc5
|
@ -813,23 +813,6 @@ static void __init prcm_setup_regs(void)
|
||||||
|
|
||||||
omap_ctrl_writel(OMAP3430_AUTOIDLE_MASK, OMAP2_CONTROL_SYSCONFIG);
|
omap_ctrl_writel(OMAP3430_AUTOIDLE_MASK, OMAP2_CONTROL_SYSCONFIG);
|
||||||
|
|
||||||
/*
|
|
||||||
* Set all plls to autoidle. This is needed until autoidle is
|
|
||||||
* enabled by clockfw
|
|
||||||
*/
|
|
||||||
omap2_cm_write_mod_reg(1 << OMAP3430_AUTO_IVA2_DPLL_SHIFT,
|
|
||||||
OMAP3430_IVA2_MOD, CM_AUTOIDLE2);
|
|
||||||
omap2_cm_write_mod_reg(1 << OMAP3430_AUTO_MPU_DPLL_SHIFT,
|
|
||||||
MPU_MOD,
|
|
||||||
CM_AUTOIDLE2);
|
|
||||||
omap2_cm_write_mod_reg((1 << OMAP3430_AUTO_PERIPH_DPLL_SHIFT) |
|
|
||||||
(1 << OMAP3430_AUTO_CORE_DPLL_SHIFT),
|
|
||||||
PLL_MOD,
|
|
||||||
CM_AUTOIDLE);
|
|
||||||
omap2_cm_write_mod_reg(1 << OMAP3430ES2_AUTO_PERIPH2_DPLL_SHIFT,
|
|
||||||
PLL_MOD,
|
|
||||||
CM_AUTOIDLE2);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enable control of expternal oscillator through
|
* Enable control of expternal oscillator through
|
||||||
* sys_clkreq. In the long run clock framework should
|
* sys_clkreq. In the long run clock framework should
|
||||||
|
|
|
@ -446,6 +446,7 @@ static int __init clk_disable_unused(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
late_initcall(clk_disable_unused);
|
late_initcall(clk_disable_unused);
|
||||||
|
late_initcall(omap_clk_enable_autoidle_all);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int __init clk_init(struct clk_functions * custom_clocks)
|
int __init clk_init(struct clk_functions * custom_clocks)
|
||||||
|
|
Loading…
Reference in New Issue