@ -64,6 +64,14 @@ int env_init(void)
static int init_mmc_for_env ( struct mmc * mmc )
{
# ifdef CONFIG_SYS_MMC_ENV_PART
int dev = CONFIG_SYS_MMC_ENV_DEV ;
# ifdef CONFIG_SPL_BUILD
dev = 0 ;
# endif
# endif
if ( ! mmc ) {
puts ( " No MMC card found \n " ) ;
return - 1 ;
@ -76,8 +84,7 @@ static int init_mmc_for_env(struct mmc *mmc)
# ifdef CONFIG_SYS_MMC_ENV_PART
if ( CONFIG_SYS_MMC_ENV_PART ! = mmc - > part_num ) {
if ( mmc_switch_part ( CONFIG_SYS_MMC_ENV_DEV ,
CONFIG_SYS_MMC_ENV_PART ) ) {
if ( mmc_switch_part ( dev , CONFIG_SYS_MMC_ENV_PART ) ) {
puts ( " MMC partition switch failed \n " ) ;
return - 1 ;
}
@ -90,9 +97,13 @@ static int init_mmc_for_env(struct mmc *mmc)
static void fini_mmc_for_env ( struct mmc * mmc )
{
# ifdef CONFIG_SYS_MMC_ENV_PART
int dev = CONFIG_SYS_MMC_ENV_DEV ;
# ifdef CONFIG_SPL_BUILD
dev = 0 ;
# endif
if ( CONFIG_SYS_MMC_ENV_PART ! = mmc - > part_num )
mmc_switch_part ( CONFIG_SYS_MMC_ENV_DEV ,
mmc - > part_num ) ;
mmc_switch_part ( dev , mmc - > part_num ) ;
# endif
}
@ -174,12 +185,16 @@ static inline int read_env(struct mmc *mmc, unsigned long size,
unsigned long offset , const void * buffer )
{
uint blk_start , blk_cnt , n ;
int dev = CONFIG_SYS_MMC_ENV_DEV ;
# ifdef CONFIG_SPL_BUILD
dev = 0 ;
# endif
blk_start = ALIGN ( offset , mmc - > read_bl_len ) / mmc - > read_bl_len ;
blk_cnt = ALIGN ( size , mmc - > read_bl_len ) / mmc - > read_bl_len ;
n = mmc - > block_dev . block_read ( CONFIG_SYS_MMC_ENV_DEV , blk_start ,
blk_cnt , ( uchar * ) buffer ) ;
n = mmc - > block_dev . block_read ( dev , blk_start , blk_cnt , ( uchar * ) buffer ) ;
return ( n = = blk_cnt ) ? 0 : - 1 ;
}
@ -188,16 +203,23 @@ static inline int read_env(struct mmc *mmc, unsigned long size,
void env_relocate_spec ( void )
{
# if !defined(ENV_IS_EMBEDDED)
struct mmc * mmc = find_mmc_device ( CONFIG_SYS_MMC_ENV_DEV ) ;
struct mmc * mmc ;
u32 offset1 , offset2 ;
int read1_fail = 0 , read2_fail = 0 ;
int crc1_ok = 0 , crc2_ok = 0 ;
env_t * ep ;
int ret ;
int dev = CONFIG_SYS_MMC_ENV_DEV ;
ALLOC_CACHE_ALIGN_BUFFER ( env_t , tmp_env1 , 1 ) ;
ALLOC_CACHE_ALIGN_BUFFER ( env_t , tmp_env2 , 1 ) ;
# ifdef CONFIG_SPL_BUILD
dev = 0 ;
# endif
mmc = find_mmc_device ( dev ) ;
if ( tmp_env1 = = NULL | | tmp_env2 = = NULL ) {
puts ( " Can't allocate buffers for environment \n " ) ;
ret = 1 ;
@ -274,9 +296,16 @@ void env_relocate_spec(void)
{
# if !defined(ENV_IS_EMBEDDED)
ALLOC_CACHE_ALIGN_BUFFER ( char , buf , CONFIG_ENV_SIZE ) ;
struct mmc * mmc = find_mmc_device ( CONFIG_SYS_MMC_ENV_DEV ) ;
struct mmc * mmc ;
u32 offset ;
int ret ;
int dev = CONFIG_SYS_MMC_ENV_DEV ;
# ifdef CONFIG_SPL_BUILD
dev = 0 ;
# endif
mmc = find_mmc_device ( dev ) ;
if ( init_mmc_for_env ( mmc ) ) {
ret = 1 ;