On Tuesday 03 November 2015 05:52 PM, Steve Kipisz wrote: > Early clock initialization is currently done in two stages for OMAP4/5 > SoCs. The first stage is the initialization of console clocks and > then we initialize basic clocks for functionality necessary for SoC > initialization and basic board functionality. > > By splitting up prcm_init and centralizing this clock initialization, > we setup the code for follow on patches that can do board specific > initialization such as board detection which will depend on these > basic clocks. > > As part of this change, since the early clock initialization > is centralized, we no longer need to expose the console clock > initialization and build it just for SPL. > > NOTE: we change the sequence slightly by initializing console clocks > timer after the io settings are complete, but this is not expected > to have any functioanlity impact since we setup the basic IO drive > strength initialization as part of do_io_settings > > Signed-off-by: Steve Kipisz <s-kipi...@ti.com> > --- > v2 Based on: > master a6104737 ARM: at91: sama5: change the environment address to > 0x6000 > > Changes in v2: > - New patch > > arch/arm/cpu/armv7/omap-common/clocks-common.c | 26 > ++++++++++++++++++++++++-- > arch/arm/cpu/armv7/omap-common/hwinit-common.c | 3 +-- > arch/arm/include/asm/arch-omap4/sys_proto.h | 2 +- > arch/arm/include/asm/arch-omap5/sys_proto.h | 2 +- > 4 files changed, 27 insertions(+), 6 deletions(-) > > diff --git a/arch/arm/cpu/armv7/omap-common/clocks-common.c > b/arch/arm/cpu/armv7/omap-common/clocks-common.c > index e28b79568d1d..2ede0818e444 100644 > --- a/arch/arm/cpu/armv7/omap-common/clocks-common.c > +++ b/arch/arm/cpu/armv7/omap-common/clocks-common.c > @@ -769,7 +769,8 @@ void lock_dpll(u32 const base) > wait_for_lock(base); > } > > -void setup_clocks_for_console(void) > +#ifdef CONFIG_SPL_BUILD > +static void setup_clocks_for_console(void) > { > /* Do not add any spl_debug prints in this function */ > clrsetbits_le32((*prcm)->cm_l4per_clkstctrl, CD_CLKCTRL_CLKTRCTRL_MASK, > @@ -801,6 +802,9 @@ void setup_clocks_for_console(void) > CD_CLKCTRL_CLKTRCTRL_HW_AUTO << > CD_CLKCTRL_CLKTRCTRL_SHIFT); > } > +#else > +static inline void setup_clocks_for_console(void) { } > +#endif
Please drop this if condition as clocks will be needed in u-boot for xip boot. > > void do_enable_clocks(u32 const *clk_domains, > u32 const *clk_modules_hw_auto, > @@ -853,14 +857,32 @@ void do_disable_clocks(u32 const *clk_domains, > disable_clock_domain(clk_domains[i]); > } > > -void prcm_init(void) > +/** > + * setup_early_clocks() - Setup early clocks needed for SoC > + * > + * Setup clocks for console, SPL basic initialization clocks and initialize > + * the timer. This is invoked prior prcm_init. > + */ > +void setup_early_clocks(void) > { > + setup_clocks_for_console(); > + > switch (omap_hw_init_context()) { > case OMAP_INIT_CONTEXT_SPL: > case OMAP_INIT_CONTEXT_UBOOT_FROM_NOR: > case OMAP_INIT_CONTEXT_UBOOT_AFTER_CH: Add setup_clocks_for_console() here instead of adding in the beginning of function. Thanks and regards, Lokesh _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot