@ -171,6 +171,55 @@ static int mmc_load_image_raw_os(struct mmc *mmc)
}
}
# endif
# endif
# ifdef CONFIG_SYS_MMCSD_FS_BOOT_PARTITION
int spl_mmc_do_fs_boot ( struct mmc * mmc )
{
int err = - ENOSYS ;
# ifdef CONFIG_SPL_FAT_SUPPORT
if ( ! spl_start_uboot ( ) ) {
err = spl_load_image_fat_os ( & mmc - > block_dev ,
CONFIG_SYS_MMCSD_FS_BOOT_PARTITION ) ;
if ( ! err )
return err ;
}
# ifdef CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
err = spl_load_image_fat ( & mmc - > block_dev ,
CONFIG_SYS_MMCSD_FS_BOOT_PARTITION ,
CONFIG_SPL_FS_LOAD_PAYLOAD_NAME ) ;
if ( ! err )
return err ;
# endif
# endif
# ifdef CONFIG_SPL_EXT_SUPPORT
if ( ! spl_start_uboot ( ) ) {
err = spl_load_image_ext_os ( & mmc - > block_dev ,
CONFIG_SYS_MMCSD_FS_BOOT_PARTITION ) ;
if ( ! err )
return err ;
}
# ifdef CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
err = spl_load_image_ext ( & mmc - > block_dev ,
CONFIG_SYS_MMCSD_FS_BOOT_PARTITION ,
CONFIG_SPL_FS_LOAD_PAYLOAD_NAME ) ;
if ( ! err )
return err ;
# endif
# endif
# if defined(CONFIG_SPL_FAT_SUPPORT) || defined(CONFIG_SPL_EXT_SUPPORT)
err = - ENOENT ;
# endif
return err ;
}
# else
int spl_mmc_do_fs_boot ( struct mmc * mmc )
{
return - ENOSYS ;
}
# endif
void spl_mmc_load_image ( void )
void spl_mmc_load_image ( void )
{
{
struct mmc * mmc ;
struct mmc * mmc ;
@ -214,38 +263,10 @@ void spl_mmc_load_image(void)
case MMCSD_MODE_FS :
case MMCSD_MODE_FS :
debug ( " spl: mmc boot mode: fs \n " ) ;
debug ( " spl: mmc boot mode: fs \n " ) ;
# ifdef CONFIG_SYS_MMCSD_FS_BOOT_PARTITION
err = spl_mmc_do_fs_boot ( mmc ) ;
# ifdef CONFIG_SPL_FAT_SUPPORT
if ( ! spl_start_uboot ( ) ) {
err = spl_load_image_fat_os ( & mmc - > block_dev ,
CONFIG_SYS_MMCSD_FS_BOOT_PARTITION ) ;
if ( ! err )
if ( ! err )
return ;
return ;
}
# ifdef CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
err = spl_load_image_fat ( & mmc - > block_dev ,
CONFIG_SYS_MMCSD_FS_BOOT_PARTITION ,
CONFIG_SPL_FS_LOAD_PAYLOAD_NAME ) ;
if ( ! err )
return ;
# endif
# endif
# ifdef CONFIG_SPL_EXT_SUPPORT
if ( ! spl_start_uboot ( ) ) {
err = spl_load_image_ext_os ( & mmc - > block_dev ,
CONFIG_SYS_MMCSD_FS_BOOT_PARTITION ) ;
if ( ! err )
return ;
}
# ifdef CONFIG_SPL_FS_LOAD_PAYLOAD_NAME
err = spl_load_image_ext ( & mmc - > block_dev ,
CONFIG_SYS_MMCSD_FS_BOOT_PARTITION ,
CONFIG_SPL_FS_LOAD_PAYLOAD_NAME ) ;
if ( ! err )
return ;
# endif
# endif
# endif
break ;
break ;
# ifdef CONFIG_SUPPORT_EMMC_BOOT
# ifdef CONFIG_SUPPORT_EMMC_BOOT
case MMCSD_MODE_EMMCBOOT :
case MMCSD_MODE_EMMCBOOT :