@ -203,7 +203,8 @@ DECLARE_GLOBAL_DATA_PTR;
*/
u32 spl_boot_device ( void )
{
__maybe_unused struct mmc * mmc0 , * mmc1 ;
int boot_source ;
/*
* When booting from the SD card or NAND memory , the " eGON.BT0 "
* signature is expected to be found in memory at the address 0x0004
@ -223,32 +224,19 @@ u32 spl_boot_device(void)
if ( ! is_boot0_magic ( SPL_ADDR + 4 ) ) /* eGON.BT0 */
return BOOT_DEVICE_BOARD ;
# ifdef CONFIG_SPL_SPI_SUNXI
if ( readb ( SPL_ADDR + 0x28 ) = = SUNXI_BOOTED_FROM_SPI )
return BOOT_DEVICE_SPI ;
# endif
/* The BROM will try to boot from mmc0 first, so try that first. */
# ifdef CONFIG_MMC
mmc_initialize ( gd - > bd ) ;
mmc0 = find_mmc_device ( 0 ) ;
if ( sunxi_mmc_has_egon_boot_signature ( mmc0 ) )
boot_source = readb ( SPL_ADDR + 0x28 ) ;
switch ( boot_source ) {
case SUNXI_BOOTED_FROM_MMC0 :
return BOOT_DEVICE_MMC1 ;
# endif
/* Fallback to booting NAND if enabled. */
if ( IS_ENABLED ( CONFIG_SPL_NAND_SUPPORT ) )
case SUNXI_BOOTED_FROM_NAND :
return BOOT_DEVICE_NAND ;
# ifdef CONFIG_MMC
if ( CONFIG_MMC_SUNXI_SLOT_EXTRA = = 2 ) {
mmc1 = find_mmc_device ( 1 ) ;
if ( sunxi_mmc_has_egon_boot_signature ( mmc1 ) )
return BOOT_DEVICE_MMC2 ;
case SUNXI_BOOTED_FROM_MMC2 :
return BOOT_DEVICE_MMC2 ;
case SUNXI_BOOTED_FROM_SPI :
return BOOT_DEVICE_SPI ;
}
# endif
panic ( " Could not determine boot source \n " ) ;
panic ( " Unknown boot source %d \n " , boot_source ) ;
return - 1 ; /* Never reached */
}