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

Steven Kipisz s-kipisz2 at ti.com
Wed Nov 4 15:54:11 CET 2015


On 11/04/2015 02:32 AM, Lokesh Vutla wrote:
>
>
> 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.
>
How about changing it to
#if defined(CONFIG_SPL_BUILD) || defined(CONFIG_NOR_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