aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-mvebu/Kconfig4
-rw-r--r--arch/arm/mach-mvebu/spl.c12
2 files changed, 16 insertions, 0 deletions
diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
index 27d227d54a3..12de6f16259 100644
--- a/arch/arm/mach-mvebu/Kconfig
+++ b/arch/arm/mach-mvebu/Kconfig
@@ -257,6 +257,7 @@ config MVEBU_SPL_BOOT_DEVICE_SPI
select SPL_SPI_FLASH_SUPPORT
select SPL_SPI_LOAD
select SPL_SPI_SUPPORT
+ select SPL_BOOTROM_SUPPORT
config MVEBU_SPL_BOOT_DEVICE_MMC
bool "SDIO/MMC card"
@@ -267,14 +268,17 @@ config MVEBU_SPL_BOOT_DEVICE_MMC
select SPL_GPIO
select SPL_LIBDISK_SUPPORT
select SPL_MMC_SUPPORT
+ select SPL_BOOTROM_SUPPORT
config MVEBU_SPL_BOOT_DEVICE_SATA
bool "SATA"
select SPL_SATA_SUPPORT
select SPL_LIBDISK_SUPPORT
+ select SPL_BOOTROM_SUPPORT
config MVEBU_SPL_BOOT_DEVICE_UART
bool "UART"
+ select SPL_BOOTROM_SUPPORT
endchoice
diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c
index 16ebb7a59e5..836eb18889d 100644
--- a/arch/arm/mach-mvebu/spl.c
+++ b/arch/arm/mach-mvebu/spl.c
@@ -79,6 +79,18 @@ u32 spl_boot_device(void)
return get_boot_device();
}
+int board_return_to_bootrom(struct spl_image_info *spl_image,
+ struct spl_boot_device *bootdev)
+{
+ u32 *regs = *(u32 **)CONFIG_SPL_BOOTROM_SAVE;
+
+ printf("Returning to BootROM (return address 0x%08x)...\n", regs[13]);
+ return_to_bootrom();
+
+ /* NOTREACHED - return_to_bootrom() does not return */
+ hang();
+}
+
void board_init_f(ulong dummy)
{
int ret;