From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Schocher Date: Fri, 31 Oct 2014 07:03:37 +0100 Subject: [U-Boot] [v2 PATCH 10/12] arm, spl, at91: add at91sam9260 and at91sam9g45 spl support In-Reply-To: <5452EAD4.7080903@atmel.com> References: <1414656906-16632-1-git-send-email-hs@denx.de> <1414656906-16632-11-git-send-email-hs@denx.de> <5452EAD4.7080903@atmel.com> Message-ID: <54532639.9050304@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hello Bo, Am 31.10.2014 02:50, schrieb Bo Shen: > Hi Heiko, > > On 10/30/2014 04:15 PM, Heiko Schocher wrote: >> diff --git a/arch/arm/cpu/at91-common/spl.c b/arch/arm/cpu/at91-common/spl.c >> index 674a470..5c9a3ad 100644 >> --- a/arch/arm/cpu/at91-common/spl.c >> +++ b/arch/arm/cpu/at91-common/spl.c > > I am thinking, whether it be better to keep this file as two copy? This will remove #ifdef, although a little code duplication. > > If this solution acceptable, some suggestion as following: > - for armv5 (arm926ejs, now at91 series), named it spl_at91.c, > - for armv7 (cortex-a5, now, sama5d3), named it spl_atmel.c? > (As for arm9 series, we have at91 prefix for SoC name, and for armv7 SoC, we don't have at91 prefix, and it now changed to Atmel Smart) Ok, I look into this. [...] >> @@ -57,77 +91,134 @@ static void switch_to_main_crystal_osc(void) [...] >> - /* disable watchdog */ >> +void spl_board_init(void) >> +{ >> + struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; >> + >> + lowlevel_clock_init(); >> at91_disable_wdt(); >> >> - /* PMC configuration */ >> - at91_pmc_init(); >> + /* >> + * At this stage the main oscillator is supposed to be enabled >> + * PCK = MCK = MOSC >> + */ >> + writel(0x00, &pmc->pllicpr); >> >> - at91_clock_init(CONFIG_SYS_AT91_MAIN_CLOCK); >> + /* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ >> + at91_plla_init(CONFIG_SYS_AT91_PLLA); >> >> - timer_init(); >> + /* PCK = PLLA = 2 * MCK */ >> + at91_mck_init(CONFIG_SYS_MCKR); >> >> - board_early_init_f(); >> + /* Switch MCK on PLLA output */ >> + at91_mck_init(CONFIG_SYS_MCKR_CSS); >> + >> +#if defined(CONFIG_SYS_AT91_PLLB) >> + /* Configure PLLB */ >> + at91_pllb_init(CONFIG_SYS_AT91_PLLB); >> +#endif >> + >> + /* Enable External Reset */ >> + enable_ext_reset(); >> >> +#if defined(CONFIG_ATMEL_MATRIX_INIT) >> + /* Initialize matrix */ >> + matrix_init(); >> +#endif > > Can this also be weak function? And put matrix_init() code to SoC/board related file. Changed. Thanks! bye, Heiko -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany