@ -90,19 +90,18 @@ static int mmc_set_env_part(struct mmc *mmc)
static inline int mmc_set_env_part ( struct mmc * mmc ) { return 0 ; } ;
# endif
static int init_mmc_for_env ( struct mmc * mmc )
static const char * init_mmc_for_env ( struct mmc * mmc )
{
if ( ! mmc ) {
puts ( " No MMC card found \n " ) ;
return - 1 ;
}
if ( ! mmc )
return " No MMC card found " ;
if ( mmc_init ( mmc ) ) {
puts ( " MMC init failed \n " ) ;
return - 1 ;
}
if ( mmc_init ( mmc ) )
return " MMC init failed " ;
if ( mmc_set_env_part ( mmc ) )
return " MMC partition switch failed " ;
return mmc_set_env_part ( mmc ) ;
return NULL ;
}
static void fini_mmc_for_env ( struct mmc * mmc )
@ -143,9 +142,13 @@ int saveenv(void)
struct mmc * mmc = find_mmc_device ( CONFIG_SYS_MMC_ENV_DEV ) ;
u32 offset ;
int ret , copy = 0 ;
const char * errmsg ;
if ( init_mmc_for_env ( mmc ) )
errmsg = init_mmc_for_env ( mmc ) ;
if ( errmsg ) {
printf ( " %s \n " , errmsg ) ;
return 1 ;
}
ret = env_export ( env_new ) ;
if ( ret )
@ -213,6 +216,7 @@ void env_relocate_spec(void)
env_t * ep ;
int ret ;
int dev = CONFIG_SYS_MMC_ENV_DEV ;
const char * errmsg = NULL ;
ALLOC_CACHE_ALIGN_BUFFER ( env_t , tmp_env1 , 1 ) ;
ALLOC_CACHE_ALIGN_BUFFER ( env_t , tmp_env2 , 1 ) ;
@ -223,7 +227,8 @@ void env_relocate_spec(void)
mmc = find_mmc_device ( dev ) ;
if ( init_mmc_for_env ( mmc ) ) {
errmsg = init_mmc_for_env ( mmc ) ;
if ( errmsg ) {
ret = 1 ;
goto err ;
}
@ -249,6 +254,7 @@ void env_relocate_spec(void)
( crc32 ( 0 , tmp_env2 - > data , ENV_SIZE ) = = tmp_env2 - > crc ) ;
if ( ! crc1_ok & & ! crc2_ok ) {
errmsg = " !bad CRC " ;
ret = 1 ;
goto fini ;
} else if ( crc1_ok & & ! crc2_ok ) {
@ -284,8 +290,7 @@ fini:
fini_mmc_for_env ( mmc ) ;
err :
if ( ret )
set_default_env ( NULL ) ;
set_default_env ( errmsg ) ;
# endif
}
# else /* ! CONFIG_ENV_OFFSET_REDUND */
@ -297,6 +302,7 @@ void env_relocate_spec(void)
u32 offset ;
int ret ;
int dev = CONFIG_SYS_MMC_ENV_DEV ;
const char * errmsg ;
# ifdef CONFIG_SPL_BUILD
dev = 0 ;
@ -304,7 +310,8 @@ void env_relocate_spec(void)
mmc = find_mmc_device ( dev ) ;
if ( init_mmc_for_env ( mmc ) ) {
errmsg = init_mmc_for_env ( mmc ) ;
if ( errmsg ) {
ret = 1 ;
goto err ;
}
@ -315,6 +322,7 @@ void env_relocate_spec(void)
}
if ( read_env ( mmc , CONFIG_ENV_SIZE , offset , buf ) ) {
errmsg = " !read failed " ;
ret = 1 ;
goto fini ;
}
@ -326,7 +334,7 @@ fini:
fini_mmc_for_env ( mmc ) ;
err :
if ( ret )
set_default_env ( NULL ) ;
set_default_env ( errmsg ) ;
# endif
}
# endif /* CONFIG_ENV_OFFSET_REDUND */