From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Kipisz Date: Wed, 4 Nov 2015 08:54:11 -0600 Subject: [U-Boot] [PATCH v2 1/5] ARM: OMAP4/5: Centralize early clock initialization In-Reply-To: <5639C2B0.1010905@ti.com> References: <1446553362-29732-1-git-send-email-s-kipisz2@ti.com> <1446553362-29732-2-git-send-email-s-kipisz2@ti.com> <5639C2B0.1010905@ti.com> Message-ID: <563A1C13.5040105@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 >> --- >> 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 >