On Fri, May 8, 2015 at 2:52 PM, Tim Harvey <thar...@gateworks.com> wrote: > Add an error message that gets passed to set_default_env() like > env_nand implements. This message is displayed to the user as the > reason for falling back to the default environment. > > Signed-off-by: Tim Harvey <thar...@gateworks.com> > --- > common/env_mmc.c | 40 ++++++++++++++++++++++++---------------- > 1 file changed, 24 insertions(+), 16 deletions(-) > > diff --git a/common/env_mmc.c b/common/env_mmc.c > index 14648e3..6c4ce2f 100644 > --- a/common/env_mmc.c > +++ b/common/env_mmc.c > @@ -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 */ > -- > 1.9.1 >
Tom, I'm thinking I should have sent the above patch to you for lack of a clear maintainer of this file/section? Regards, Tim _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot