arm: spl: Provide for a board-specific loader

Some boards have a special way of loading U-Boot that does not fit with
the existing SPL code. For example sunxi uses an 'FEL' mode where U-Boot
is loaded over USB. Add a CONFIG option and boot mode for this.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
Simon Glass 2015-02-07 10:47:29 -07:00 committed by Hans de Goede
parent e11c6c279d
commit c01c71bc16
2 changed files with 9 additions and 0 deletions

View File

@ -26,10 +26,14 @@ enum {
BOOT_DEVICE_SPI, BOOT_DEVICE_SPI,
BOOT_DEVICE_SATA, BOOT_DEVICE_SATA,
BOOT_DEVICE_I2C, BOOT_DEVICE_I2C,
BOOT_DEVICE_BOARD,
BOOT_DEVICE_NONE BOOT_DEVICE_NONE
}; };
#endif #endif
/* Board-specific load method */
void spl_board_load_image(void);
/* Linker symbols. */ /* Linker symbols. */
extern char __bss_start[], __bss_end[]; extern char __bss_start[], __bss_end[];

View File

@ -228,6 +228,11 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
case BOOT_DEVICE_SATA: case BOOT_DEVICE_SATA:
spl_sata_load_image(); spl_sata_load_image();
break; break;
#endif
#ifdef CONFIG_SPL_BOARD_LOAD_IMAGE
case BOOT_DEVICE_BOARD:
spl_board_load_image();
break;
#endif #endif
default: default:
#if defined(CONFIG_SPL_SERIAL_SUPPORT) && defined(CONFIG_SPL_LIBCOMMON_SUPPORT) #if defined(CONFIG_SPL_SERIAL_SUPPORT) && defined(CONFIG_SPL_LIBCOMMON_SUPPORT)