From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Date: Wed, 25 Nov 2009 15:02:43 -0600 Subject: [U-Boot] [PATCH resend] at91: Enable slow master clock on meesc board In-Reply-To: <12589670901243-git-send-email-Daniel.Gorsulowski@esd.eu> References: <12589670901243-git-send-email-Daniel.Gorsulowski@esd.eu> Message-ID: <4B0D9B73.7020908@windriver.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Daniel Gorsulowski wrote: > In some cases, we need low speed master clock. So depending on the > "mdiv" variable, the processor clock is divided by 2 (default) or 4. > > Signed-off-by: Daniel Gorsulowski > --- > board/esd/meesc/meesc.c | 24 ++++++++++++++++++++++++ > include/configs/meesc.h | 1 + > 2 files changed, 25 insertions(+), 0 deletions(-) > > diff --git a/board/esd/meesc/meesc.c b/board/esd/meesc/meesc.c > index efba60d..4f6c5b7 100644 > --- a/board/esd/meesc/meesc.c > +++ b/board/esd/meesc/meesc.c > @@ -219,6 +219,30 @@ u32 get_board_rev(void) > } > #endif > > +#ifdef CONFIG_MISC_INIT_R > +int misc_init_r(void) > +{ > + char *str; > + char buf[32]; > + > + /* > + * In some cases, we need low speed master clock. So depending on the > + * "mdiv" variable, the processor clock is divided by 2 (default) or 4. > + */ This comment does not follow what is done. From the comment there should be an 'else' branch where the mdiv_2 is done. > + if ((str = getenv("mdiv")) && (!strcmp(str, "4"))) { Move the getenv out of the if-check. The string comparision should be strengthened. str = "44" would be valid. Perhaps warn if the expected 2 or 4 is not set. There are more that 2 and 4 possible clk divisors. Do you want to make this function more general? > + at91_sys_write(AT91_PMC_MCKR, > + (at91_sys_read(AT91_PMC_MCKR) & ~AT91_PMC_MDIV) | > + AT91SAM9_PMC_MDIV_4); > + at91_clock_init(0); > + serial_setbrg(); > + printf("Setting master clock to %s MHz\n", > + strmhz(buf, get_mck_clk_rate())); This printf should be moved outside of the if check so the default case also gets the printout. Tom > + } > + > + return 0; > +} > +#endif /* CONFIG_MISC_INIT_R */ > + > int board_init(void) > { > /* Peripheral Clock Enable Register */ > diff --git a/include/configs/meesc.h b/include/configs/meesc.h > index b996854..034e81c 100644 > --- a/include/configs/meesc.h > +++ b/include/configs/meesc.h > @@ -48,6 +48,7 @@ > > #define CONFIG_SKIP_LOWLEVEL_INIT > #define CONFIG_SKIP_RELOCATE_UBOOT > +#define CONFIG_MISC_INIT_R /* Call misc_init_r */ > > #define CONFIG_ARCH_CPU_INIT >