env: mmc/fat/ext4: make sure that the MMC sub-system is initialized before using it

When booting from a non-MMC device, the MMC sub-system may not be
initialized when the environment is first accessed.
We need to make sure that the MMC sub-system is ready in even a non-MMC
boot case.

Therefore, initialize mmc before loading environment from it.

Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>
This commit is contained in:
Faiz Abbas 2018-02-12 19:24:31 +05:30 committed by Tom Rini
parent 7b1cfec317
commit 26862b4a40
3 changed files with 8 additions and 0 deletions

3
env/ext4.c vendored
View File

@ -87,6 +87,9 @@ static int env_ext4_load(void)
int err;
loff_t off;
if (!strcmp(CONFIG_ENV_EXT4_INTERFACE, "mmc"))
mmc_initialize(NULL);
part = blk_get_device_part_str(CONFIG_ENV_EXT4_INTERFACE,
CONFIG_ENV_EXT4_DEVICE_AND_PART,
&dev_desc, &info, 1);

3
env/fat.c vendored
View File

@ -89,6 +89,9 @@ static int env_fat_load(void)
int dev, part;
int err;
if (!strcmp(CONFIG_ENV_FAT_INTERFACE, "mmc"))
mmc_initialize(NULL);
part = blk_get_device_part_str(CONFIG_ENV_FAT_INTERFACE,
CONFIG_ENV_FAT_DEVICE_AND_PART,
&dev_desc, &info, 1);

2
env/mmc.c vendored
View File

@ -273,6 +273,8 @@ static int env_mmc_load(void)
ALLOC_CACHE_ALIGN_BUFFER(env_t, tmp_env1, 1);
ALLOC_CACHE_ALIGN_BUFFER(env_t, tmp_env2, 1);
mmc_initialize(NULL);
mmc = find_mmc_device(dev);
errmsg = init_mmc_for_env(mmc);