@ -10,6 +10,8 @@
# include <config.h>
# include <common.h>
# include <command.h>
# include <dm.h>
# include <dm/device-internal.h>
# include <errno.h>
# include <mmc.h>
# include <part.h>
@ -1759,10 +1761,44 @@ static void do_preinit(void)
}
}
# if defined(CONFIG_DM_MMC) && defined(CONFIG_SPL_BUILD)
static int mmc_probe ( bd_t * bis )
{
return 0 ;
}
# elif defined(CONFIG_DM_MMC)
static int mmc_probe ( bd_t * bis )
{
int ret ;
struct uclass * uc ;
struct udevice * m ;
ret = uclass_get ( UCLASS_MMC , & uc ) ;
if ( ret )
return ret ;
uclass_foreach_dev ( m , uc ) {
ret = device_probe ( m ) ;
if ( ret )
printf ( " %s - probe failed: %d \n " , m - > name , ret ) ;
}
return 0 ;
}
# else
static int mmc_probe ( bd_t * bis )
{
if ( board_mmc_init ( bis ) < 0 )
cpu_mmc_init ( bis ) ;
return 0 ;
}
# endif
int mmc_initialize ( bd_t * bis )
{
static int initialized = 0 ;
int ret ;
if ( initialized ) /* Avoid initializing mmc multiple times */
return 0 ;
initialized = 1 ;
@ -1770,10 +1806,9 @@ int mmc_initialize(bd_t *bis)
INIT_LIST_HEAD ( & mmc_devices ) ;
cur_dev_num = 0 ;
# ifndef CONFIG_DM_MMC
if ( board_mmc_init ( bis ) < 0 )
cpu_mmc_init ( bis ) ;
# endif
ret = mmc_probe ( bis ) ;
if ( ret )
return ret ;
# ifndef CONFIG_SPL_BUILD
print_mmc_devices ( ' , ' ) ;