diff options
author | Jan Luebbe <jlu@pengutronix.de> | 2012-09-24 10:18:34 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-09-27 19:30:04 +0200 |
commit | faf7b7af6e51a33b88453821d792c89a84f72b1d (patch) | |
tree | bff70e6a71339e4d62e90c23ead1fc351effc89a /arch/arm/mach-at91 | |
parent | cc1602604d1654991f3ce02b664178b3e672afe7 (diff) | |
download | barebox-faf7b7af6e51a33b88453821d792c89a84f72b1d.tar.gz barebox-faf7b7af6e51a33b88453821d792c89a84f72b1d.tar.xz |
ARM: give boards control of the reset entry point
On some SoCs (for example AM35xx), the ROM bootloader passes useful
information in r0 when jumping to barebox.
To avoid overwriting this in the generic reset code, we introduce
common_reset as a C function and as an assembler macro. This is then
called form the reset entry point (either in common or in board code).
This patch is based on code by Sascha Hauer <s.hauer@pengutronix.de>.
Signed-off-by: Jan Luebbe <jlu@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-at91')
-rw-r--r-- | arch/arm/mach-at91/at91rm9200_lowlevel_init.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam926x_lowlevel_init.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/arch/arm/mach-at91/at91rm9200_lowlevel_init.c b/arch/arm/mach-at91/at91rm9200_lowlevel_init.c index 5340bbaaed..3ce3e6743e 100644 --- a/arch/arm/mach-at91/at91rm9200_lowlevel_init.c +++ b/arch/arm/mach-at91/at91rm9200_lowlevel_init.c @@ -7,6 +7,7 @@ #include <common.h> #include <asm/system.h> #include <asm/barebox-arm.h> +#include <asm/barebox-arm-head.h> #include <mach/hardware.h> #include <mach/at91rm9200.h> #include <mach/at91rm9200_mc.h> @@ -20,11 +21,13 @@ void static inline access_sdram(void) writel(0x00000000, AT91_SDRAM_BASE); } -void __naked __bare_init board_init_lowlevel(void) +void __naked __bare_init reset(void) { u32 r; int i; + common_reset(); + /* * PMC Check if the PLL is already initialized */ diff --git a/arch/arm/mach-at91/at91sam926x_lowlevel_init.c b/arch/arm/mach-at91/at91sam926x_lowlevel_init.c index 669f3777c4..0ee0345a3a 100644 --- a/arch/arm/mach-at91/at91sam926x_lowlevel_init.c +++ b/arch/arm/mach-at91/at91sam926x_lowlevel_init.c @@ -8,6 +8,7 @@ #include <common.h> #include <asm/system.h> #include <asm/barebox-arm.h> +#include <asm/barebox-arm-head.h> #include <mach/hardware.h> #include <mach/at91_pmc.h> #include <mach/at91_pio.h> @@ -33,11 +34,13 @@ static void inline pmc_check_mckrdy(void) } while (!(r & AT91_PMC_MCKRDY)); } -void __naked __bare_init board_init_lowlevel(void) +void __naked __bare_init reset(void) { u32 r; int i; + common_reset(); + at91_sys_write(AT91_WDT_MR, CONFIG_SYS_WDTC_WDMR_VAL); /* configure PIOx as EBI0 D[16-31] */ |