1 // SPDX-License-Identifier: GPL-2.0+ 2 3 #include <common.h> 4 #include <command.h> 5 #include <bootcount.h> 6 7 static int do_bootcount_print(cmd_tbl_t *cmdtp, int flag, int argc, 8 char * const argv[]) 9 { 10 printf("%lu\n", bootcount_load()); 11 return CMD_RET_SUCCESS; 12 } 13 14 static int do_bootcount_reset(cmd_tbl_t *cmdtp, int flag, int argc, 15 char * const argv[]) 16 { 17 /* 18 * note that we're explicitly not resetting the environment 19 * variable, so you still have the old bootcounter available 20 */ 21 bootcount_store(0); 22 return CMD_RET_SUCCESS; 23 } 24 25 static cmd_tbl_t bootcount_sub[] = { 26 U_BOOT_CMD_MKENT(print, 1, 1, do_bootcount_print, "", ""), 27 U_BOOT_CMD_MKENT(reset, 1, 1, do_bootcount_reset, "", ""), 28 }; 29 30 static int do_bootcount(cmd_tbl_t *cmdtp, int flag, int argc, 31 char * const argv[]) 32 { 33 cmd_tbl_t *cp; 34 35 if (argc < 2) 36 return CMD_RET_USAGE; 37 38 /* drop initial "bootcount" arg */ 39 argc--; 40 argv++; 41 42 cp = find_cmd_tbl(argv[0], bootcount_sub, ARRAY_SIZE(bootcount_sub)); 43 if (cp) 44 return cp->cmd(cmdtp, flag, argc, argv); 45 46 return CMD_RET_USAGE; 47 } 48 49 #if CONFIG_IS_ENABLED(SYS_LONGHELP) 50 static char bootcount_help_text[] = 51 "print - print current bootcounter\n" 52 "reset - reset the bootcounter" 53 ; 54 #endif 55 56 U_BOOT_CMD(bootcount, 2, 1, do_bootcount, 57 "bootcount", 58 #if CONFIG_IS_ENABLED(SYS_LONGHELP) 59 bootcount_help_text 60 #endif 61 ); 62