Add a command to manipulate the bootcounter. This is useful if you can run device recovery from inside U-Boot and need to reset the bootcounter after executing that process as part of altbootcmd. Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> Reviewed-by: Lukasz Majewski <lukma@denx.de>lime2-spi
parent
c4d7b7a6b8
commit
b11ed7d602
@ -0,0 +1,61 @@ |
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
#include <common.h> |
||||
#include <command.h> |
||||
#include <bootcount.h> |
||||
|
||||
static int do_bootcount_print(cmd_tbl_t *cmdtp, int flag, int argc, |
||||
char * const argv[]) |
||||
{ |
||||
printf("%lu\n", bootcount_load()); |
||||
return CMD_RET_SUCCESS; |
||||
} |
||||
|
||||
static int do_bootcount_reset(cmd_tbl_t *cmdtp, int flag, int argc, |
||||
char * const argv[]) |
||||
{ |
||||
/*
|
||||
* note that we're explicitly not resetting the environment |
||||
* variable, so you still have the old bootcounter available |
||||
*/ |
||||
bootcount_store(0); |
||||
return CMD_RET_SUCCESS; |
||||
} |
||||
|
||||
static cmd_tbl_t bootcount_sub[] = { |
||||
U_BOOT_CMD_MKENT(print, 1, 1, do_bootcount_print, "", ""), |
||||
U_BOOT_CMD_MKENT(reset, 1, 1, do_bootcount_reset, "", ""), |
||||
}; |
||||
|
||||
static int do_bootcount(cmd_tbl_t *cmdtp, int flag, int argc, |
||||
char * const argv[]) |
||||
{ |
||||
cmd_tbl_t *cp; |
||||
|
||||
if (argc < 2) |
||||
return CMD_RET_USAGE; |
||||
|
||||
/* drop initial "bootcount" arg */ |
||||
argc--; |
||||
argv++; |
||||
|
||||
cp = find_cmd_tbl(argv[0], bootcount_sub, ARRAY_SIZE(bootcount_sub)); |
||||
if (cp) |
||||
return cp->cmd(cmdtp, flag, argc, argv); |
||||
|
||||
return CMD_RET_USAGE; |
||||
} |
||||
|
||||
#if CONFIG_IS_ENABLED(SYS_LONGHELP) |
||||
static char bootcount_help_text[] = |
||||
"print - print current bootcounter\n" |
||||
"reset - reset the bootcounter" |
||||
; |
||||
#endif |
||||
|
||||
U_BOOT_CMD(bootcount, 2, 1, do_bootcount, |
||||
"bootcount", |
||||
#if CONFIG_IS_ENABLED(SYS_LONGHELP) |
||||
bootcount_help_text |
||||
#endif |
||||
); |
Loading…
Reference in new issue