X-Git-Url: https://git.kernelconcepts.de/?a=blobdiff_plain;f=common%2Fcmd_otp.c;h=593bb8c650ca18fdb5418884d3941d0191021f83;hb=8b07e1565c9e99e8c01614655967a923076f03f0;hp=56f08e0c05767973da03257263bc6a5483e222de;hpb=9844d027b52cc89264f6bf7686e26d9dc50134fd;p=karo-tx-uboot.git diff --git a/common/cmd_otp.c b/common/cmd_otp.c index 56f08e0c05..593bb8c650 100644 --- a/common/cmd_otp.c +++ b/common/cmd_otp.c @@ -18,6 +18,7 @@ #include #include +#include #include static const char *otp_strerror(uint32_t err) @@ -82,32 +83,33 @@ static void set_otp_timing(bool write) int do_otp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { + char *cmd; uint32_t ret, base_flags; bool prompt_user, force_read; uint32_t (*otp_func)(uint32_t page, uint32_t flags, uint64_t *page_content); if (argc < 4) { usage: - return cmd_usage(cmdtp); + return CMD_RET_USAGE; } prompt_user = false; base_flags = 0; - if (!strcmp(argv[1], "read")) + cmd = argv[1]; + if (!strcmp(cmd, "read")) otp_func = bfrom_OtpRead; - else if (!strcmp(argv[1], "dump")) { + else if (!strcmp(cmd, "dump")) { otp_func = bfrom_OtpRead; force_read = true; - } else if (!strcmp(argv[1], "write")) { + } else if (!strcmp(cmd, "write")) { otp_func = bfrom_OtpWrite; base_flags = OTP_CHECK_FOR_PREV_WRITE; if (!strcmp(argv[2], "--force")) { - argv[2] = argv[1]; argv++; --argc; } else prompt_user = false; - } else if (!strcmp(argv[1], "lock")) { + } else if (!strcmp(cmd, "lock")) { if (argc != 4) goto usage; otp_func = bfrom_OtpWrite; @@ -156,26 +158,14 @@ int do_otp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) lowup(half + count - 1), page + (half + count - 1) / 2, half + count ); - - i = 0; - while (1) { - if (tstc()) { - const char exp_ans[] = "YES\r"; - char c; - putc(c = getc()); - if (exp_ans[i++] != c) { - printf(" Aborting\n"); - return 1; - } else if (!exp_ans[i]) { - puts("\n"); - break; - } - } + if (!confirm_yesno()) { + printf(" Aborting\n"); + return 1; } } printf("OTP memory %s: addr 0x%p page 0x%03X count %zu ... ", - argv[1], addr, page, count); + cmd, addr, page, count); set_otp_timing(otp_func == bfrom_OtpWrite); if (otp_func == bfrom_OtpWrite && check_voltage()) {