Hi Dmitry, On Jul 30, 2014, at 1:19 PM, Dmitry Lifshitz wrote:
> Add callback with __weak annotation to allow setup of environment > partition number in runtime from a board file. > > Propagate mmc_switch_part() return value into init_mmc_for_env() instead > of -1 in case of failure. > > Signed-off-by: Dmitry Lifshitz <lifsh...@compulab.co.il> > Signed-off-by: Igor Grinberg <grinb...@compulab.co.il> > --- > > Changes in v2: > > * Added mmc_get_env_part() proto in environment.h. > > common/env_mmc.c | 35 +++++++++++++++++++++++------------ > include/environment.h | 3 +++ > 2 files changed, 26 insertions(+), 12 deletions(-) > > diff --git a/common/env_mmc.c b/common/env_mmc.c > index 7da10e6..a7621a8 100644 > --- a/common/env_mmc.c > +++ b/common/env_mmc.c > @@ -62,16 +62,36 @@ int env_init(void) > return 0; > } > > -static int init_mmc_for_env(struct mmc *mmc) > -{ > #ifdef CONFIG_SYS_MMC_ENV_PART > +__weak uint mmc_get_env_part(struct mmc *mmc) > +{ > + return CONFIG_SYS_MMC_ENV_PART; > +} > + > +static int mmc_set_env_part(struct mmc *mmc) > +{ > + uint part = mmc_get_env_part(mmc); > int dev = CONFIG_SYS_MMC_ENV_DEV; > + int ret = 0; > > #ifdef CONFIG_SPL_BUILD > dev = 0; > #endif > + > + if (part != mmc->part_num) { > + ret = mmc_switch_part(dev, part); > + if (ret) > + puts("MMC partition switch failed\n"); > + } > + > + return ret; > +} > +#else > +static inline int mmc_set_env_part(struct mmc *mmc) {return 0; }; > #endif > > +static int init_mmc_for_env(struct mmc *mmc) > +{ > if (!mmc) { > puts("No MMC card found\n"); > return -1; > @@ -82,16 +102,7 @@ static int init_mmc_for_env(struct mmc *mmc) > return -1; > } > > -#ifdef CONFIG_SYS_MMC_ENV_PART > - if (CONFIG_SYS_MMC_ENV_PART != mmc->part_num) { > - if (mmc_switch_part(dev, CONFIG_SYS_MMC_ENV_PART)) { > - puts("MMC partition switch failed\n"); > - return -1; > - } > - } > -#endif > - > - return 0; > + return mmc_set_env_part(mmc); > } > > static void fini_mmc_for_env(struct mmc *mmc) > diff --git a/include/environment.h b/include/environment.h > index d7a1adf..1fdbdad 100644 > --- a/include/environment.h > +++ b/include/environment.h > @@ -184,6 +184,9 @@ extern void env_reloc(void); > #include <mmc.h> > > extern int mmc_get_env_addr(struct mmc *mmc, int copy, u32 *env_addr); > +# ifdef CONFIG_SYS_MMC_ENV_PART > +extern uint mmc_get_env_part(struct mmc *mmc); > +# endif > #endif > > #ifndef DO_DEPS_ONLY > -- > 1.7.5.4 Applied, thanks. -- Pantelis _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot