
Introduce board_start_saveenv() and board_finish_saveenv(), two "weak" functions that are called before and after saving the environment. This allows for board-specific functions that "prepare" the board for saving the environment. This is useful if, for some reason, the non-volatile storage is normally unavailable (e.g. blocked via a mux).
Signed-off-by: Timur Tabi timur@freescale.com --- common/cmd_nvedit.c | 24 +++++++++++++++++++++++- 1 files changed, 23 insertions(+), 1 deletions(-)
diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c index e1ccdd8..9637682 100644 --- a/common/cmd_nvedit.c +++ b/common/cmd_nvedit.c @@ -595,11 +595,33 @@ ulong getenv_ulong(const char *name, int base, ulong default_val) }
#if defined(CONFIG_CMD_SAVEENV) && !defined(CONFIG_ENV_IS_NOWHERE) + +static int __board_start_saveenv(void) +{ + return 0; +} +int board_start_saveenv(void) __attribute__((weak, alias("__board_start_saveenv"))); + +static void __board_finish_saveenv(void) +{ +} +void board_finish_saveenv(void) __attribute__((weak, alias("__board_finish_saveenv"))); + int do_env_save(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { + int ret; + printf("Saving Environment to %s...\n", env_name_spec);
- return saveenv() ? 1 : 0; + ret = board_start_saveenv(); + if (ret) + return 0; + + ret = saveenv() ? 1 : 0; + + board_finish_saveenv(); + + return ret; }
U_BOOT_CMD(