[U-Boot] [PATCH] env_mmc: Allow SPL to use any MMC device to load/save the environment

Jean-Jacques Hiblot jjhiblot at ti.com
Tue Feb 14 14:16:13 CET 2017


Hi Tom,

Have you had a chance to look at the patch below?

Jean-Jacques


On 01/02/2017 11:26, Jean-Jacques Hiblot wrote:
> SPL has been restricted to use only dev 0 based on the assumption that only
> one MMC device is registered. This is not always the case and many
> platforms now register several devices as expected by the spl mmc boot code
> For those platform SPL_ENV_SUPPORT is broken if dev is forced to 0.
>
> A word of warning: this commit may break SPL_ENV_SUPPORT on platforms that
> do not register the same MMC controllers in SPL and in u-boot (mostly iMX6
> based platforms). Fortunately none of those activate SPL_ENV_SUPPORT in
> their default configuration.
>
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot at ti.com>
> ---
>   common/env_mmc.c | 15 ---------------
>   1 file changed, 15 deletions(-)
>
> diff --git a/common/env_mmc.c b/common/env_mmc.c
> index 16f6a17..a5d14d4 100644
> --- a/common/env_mmc.c
> +++ b/common/env_mmc.c
> @@ -82,10 +82,6 @@ static int mmc_set_env_part(struct mmc *mmc)
>   	int dev = mmc_get_env_dev();
>   	int ret = 0;
>   
> -#ifdef CONFIG_SPL_BUILD
> -	dev = 0;
> -#endif
> -
>   	env_mmc_orig_hwpart = mmc_get_blk_desc(mmc)->hwpart;
>   	ret = blk_select_hwpart_devnum(IF_TYPE_MMC, dev, part);
>   	if (ret)
> @@ -116,9 +112,6 @@ static void fini_mmc_for_env(struct mmc *mmc)
>   #ifdef CONFIG_SYS_MMC_ENV_PART
>   	int dev = mmc_get_env_dev();
>   
> -#ifdef CONFIG_SPL_BUILD
> -	dev = 0;
> -#endif
>   	blk_select_hwpart_devnum(IF_TYPE_MMC, dev, env_mmc_orig_hwpart);
>   #endif
>   }
> @@ -223,10 +216,6 @@ void env_relocate_spec(void)
>   	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);
>   
>   	errmsg = init_mmc_for_env(mmc);
> @@ -306,10 +295,6 @@ void env_relocate_spec(void)
>   	int dev = mmc_get_env_dev();
>   	const char *errmsg;
>   
> -#ifdef CONFIG_SPL_BUILD
> -	dev = 0;
> -#endif
> -
>   	mmc = find_mmc_device(dev);
>   
>   	errmsg = init_mmc_for_env(mmc);



More information about the U-Boot mailing list