[U-Boot] [PATCH v2 1/5] ARM: OMAP4/5: Centralize early clock initialization

Lokesh Vutla a0131933 at ti.com
Wed Nov 4 09:32:48 CET 2015



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-kipisz2 at 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


More information about the U-Boot mailing list