1// SPDX-License-Identifier: GPL-2.0+ 2 3#include <common.h> 4#include <command.h> 5#include <bootcount.h> 6 7static int do_bootcount_print(struct cmd_tbl *cmdtp, int flag, int argc, 8 char *const argv[]) 9{ 10 printf("%lu\n", bootcount_load()); 11 return CMD_RET_SUCCESS; 12} 13 14static int do_bootcount_reset(struct cmd_tbl *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 25static struct cmd_tbl 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 30static int do_bootcount(struct cmd_tbl *cmdtp, int flag, int argc, 31 char *const argv[]) 32{ 33 struct cmd_tbl *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 49U_BOOT_LONGHELP(bootcount, 50 "print - print current bootcounter\n" 51 "reset - reset the bootcounter"); 52 53U_BOOT_CMD(bootcount, 2, 1, do_bootcount, 54 "bootcount", 55 bootcount_help_text 56); 57