From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from 6.mo1.mail-out.ovh.net ([46.105.43.205] helo=mo1.mail-out.ovh.net) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1TwWay-0006B2-87 for barebox@lists.infradead.org; Sat, 19 Jan 2013 11:28:21 +0000 Received: from mail405.ha.ovh.net (b7.ovh.net [213.186.33.57]) by mo1.mail-out.ovh.net (Postfix) with SMTP id 43591FF9199 for ; Sat, 19 Jan 2013 12:42:28 +0100 (CET) From: Jean-Christophe PLAGNIOL-VILLARD Date: Sat, 19 Jan 2013 12:26:49 +0100 Message-Id: <1358594814-8297-2-git-send-email-plagnioj@jcrosoft.com> In-Reply-To: <1358594814-8297-1-git-send-email-plagnioj@jcrosoft.com> References: <20130119112125.GH22953@game.jcrosoft.org> <1358594814-8297-1-git-send-email-plagnioj@jcrosoft.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: barebox-bounces@lists.infradead.org Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH 2/7] at91sam926x: lowlevel add external boot support To: barebox@lists.infradead.org Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD --- arch/arm/mach-at91/at91sam926x_lowlevel_init.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-at91/at91sam926x_lowlevel_init.c b/arch/arm/mach-at91/at91sam926x_lowlevel_init.c index cfae982..4dec275 100644 --- a/arch/arm/mach-at91/at91sam926x_lowlevel_init.c +++ b/arch/arm/mach-at91/at91sam926x_lowlevel_init.c @@ -36,10 +36,19 @@ static void inline pmc_check_mckrdy(void) } while (!(r & AT91_PMC_MCKRDY)); } +static int inline running_in_sram(void) +{ + u32 addr = get_pc(); + + addr >>= 28; + return addr == 0; +} + void __naked __bare_init reset(void) { u32 r; int i; + int in_sram = running_in_sram(); common_reset(); @@ -74,7 +83,7 @@ void __naked __bare_init reset(void) * PMC Check if the PLL is already initialized */ r = at91_pmc_read(AT91_PMC_MCKR); - if (r & AT91_PMC_CSS) + if (r & AT91_PMC_CSS && !in_sram) goto end; /* @@ -117,7 +126,7 @@ void __naked __bare_init reset(void) * SDRAMC Check if Refresh Timer Counter is already initialized */ r = at91_sys_read(AT91_SDRAMC_TR); - if (r) + if (r && !in_sram) goto end; /* SDRAMC_MR : Normal Mode */ @@ -170,6 +179,13 @@ void __naked __bare_init reset(void) /* MATRIX_MCFG - REMAP all masters */ at91_sys_write(AT91_MATRIX_MCFG0, 0x1FF); #endif + /* + * When boot from external boot + * we need to enable mck and ohter clock + * so enable all of them + * We will shutdown what we don't need later + */ + at91_pmc_write(AT91_PMC_PCER, 0xffffffff); end: board_init_lowlevel_return(); -- 1.7.10.4 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox