allow env erase on secondary offset using CONFIG_ENV_OFFSET_REDUND Suggested-by: Simon Goldschmidt <simon.k.r.goldschm...@gmail.com> Signed-off-by: Frank Wunderlich <fran...@public-files.de> --- cmd/nvedit.c | 2 +- env/env.c | 4 ++-- env/mmc.c | 9 +++++++-- include/environment.h | 4 ++-- 4 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/cmd/nvedit.c b/cmd/nvedit.c index 0cbd8e8984..2071bcf443 100644 --- a/cmd/nvedit.c +++ b/cmd/nvedit.c @@ -766,7 +766,7 @@ U_BOOT_CMD( static int do_env_erase(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { - return env_erase() ? 1 : 0; + return env_erase(false) ? 1 : 0; } U_BOOT_CMD( eraseenv, 1, 0, do_env_erase, diff --git a/env/env.c b/env/env.c index d3cbe2f915..bf7f3b9684 100644 --- a/env/env.c +++ b/env/env.c @@ -256,7 +256,7 @@ int env_save(void) return -ENODEV; } -int env_erase(void) +int env_erase(bool use_redund) { struct env_driver *drv; @@ -271,7 +271,7 @@ int env_erase(void) return -ENODEV; printf("Erasing Environment on %s... ", drv->name); - ret = drv->erase(); + ret = drv->erase(use_redund); if (ret) printf("Failed (%d)\n", ret); else diff --git a/env/mmc.c b/env/mmc.c index 9ae9b1a66a..647bc693fa 100644 --- a/env/mmc.c +++ b/env/mmc.c @@ -244,7 +244,7 @@ fini: } #if defined(CONFIG_CMD_ERASEENV) -static int env_mmc_erase(void) +static int env_mmc_erase(bool use_redund) { int dev = mmc_get_env_dev(); struct mmc *mmc = find_mmc_device(dev); @@ -253,7 +253,12 @@ static int env_mmc_erase(void) if (!mmc) return CMD_RET_FAILURE; - blk = CONFIG_ENV_OFFSET / mmc->read_bl_len; +#ifdef CONFIG_ENV_OFFSET_REDUND + if (use_redund) + blk = CONFIG_ENV_OFFSET_REDUND / mmc->read_bl_len; + else +#endif + blk = CONFIG_ENV_OFFSET / mmc->read_bl_len; cnt = CONFIG_ENV_SIZE / mmc->read_bl_len; printf("\nMMC erase env: dev # %d, block # %d (0x%x), count %d (0x%x)\n", diff --git a/include/environment.h b/include/environment.h index de67cf4f0e..a823948da2 100644 --- a/include/environment.h +++ b/include/environment.h @@ -233,7 +233,7 @@ struct env_driver { * * @return 0 if OK, -ve on error */ - int (*erase)(void); + int (*erase)(bool use_redund); /** * init() - Set up the initial pre-relocation environment @@ -318,7 +318,7 @@ int env_save(void); * * @return 0 if OK, -ve on error */ -int env_erase(void); +int env_erase(bool use_redund); /** * env_fix_drivers() - Updates envdriver as per relocation -- 2.17.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot