sunxi: SPL: Factor out sunxi_get_boot_source()
The Boot ROM write some boot source ID (SD card, eMMC, SPI, ...) into a certain location in SRAM, so the SPL can easily determine where to load U-Boot proper from. Factor out reading this value, as it will come in handy again shortly. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Acked-by: Jagan Teki <jagan@amarulasolutions.com>
This commit is contained in:
committed by
Jagan Teki
parent
533f2433ff
commit
ee98d76893
@@ -221,12 +221,22 @@ void s_init(void)
|
|||||||
eth_init_board();
|
eth_init_board();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define SUNXI_INVALID_BOOT_SOURCE -1
|
||||||
|
|
||||||
|
static int sunxi_get_boot_source(void)
|
||||||
|
{
|
||||||
|
if (!is_boot0_magic(SPL_ADDR + 4)) /* eGON.BT0 */
|
||||||
|
return SUNXI_INVALID_BOOT_SOURCE;
|
||||||
|
|
||||||
|
return readb(SPL_ADDR + 0x28);
|
||||||
|
}
|
||||||
|
|
||||||
/* The sunxi internal brom will try to loader external bootloader
|
/* The sunxi internal brom will try to loader external bootloader
|
||||||
* from mmc0, nand flash, mmc2.
|
* from mmc0, nand flash, mmc2.
|
||||||
*/
|
*/
|
||||||
uint32_t sunxi_get_boot_device(void)
|
uint32_t sunxi_get_boot_device(void)
|
||||||
{
|
{
|
||||||
int boot_source;
|
int boot_source = sunxi_get_boot_source();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When booting from the SD card or NAND memory, the "eGON.BT0"
|
* When booting from the SD card or NAND memory, the "eGON.BT0"
|
||||||
@@ -244,11 +254,9 @@ uint32_t sunxi_get_boot_device(void)
|
|||||||
* binary over USB. If it is found, it determines where SPL was
|
* binary over USB. If it is found, it determines where SPL was
|
||||||
* read from.
|
* read from.
|
||||||
*/
|
*/
|
||||||
if (!is_boot0_magic(SPL_ADDR + 4)) /* eGON.BT0 */
|
|
||||||
return BOOT_DEVICE_BOARD;
|
|
||||||
|
|
||||||
boot_source = readb(SPL_ADDR + 0x28);
|
|
||||||
switch (boot_source) {
|
switch (boot_source) {
|
||||||
|
case SUNXI_INVALID_BOOT_SOURCE:
|
||||||
|
return BOOT_DEVICE_BOARD;
|
||||||
case SUNXI_BOOTED_FROM_MMC0:
|
case SUNXI_BOOTED_FROM_MMC0:
|
||||||
case SUNXI_BOOTED_FROM_MMC0_HIGH:
|
case SUNXI_BOOTED_FROM_MMC0_HIGH:
|
||||||
return BOOT_DEVICE_MMC1;
|
return BOOT_DEVICE_MMC1;
|
||||||
|
|||||||
Reference in New Issue
Block a user