X-Git-Url: https://git.kernelconcepts.de/?a=blobdiff_plain;f=common%2Fcmd_otp.c;h=593bb8c650ca18fdb5418884d3941d0191021f83;hb=5bd19a6ca6ff07836aae1e4578b565a863026009;hp=65232903b22049d38be57a65d9156578751e042c;hpb=ee924e00300bd1136589b2d5f8ad1f008df01bd4;p=karo-tx-uboot.git diff --git a/common/cmd_otp.c b/common/cmd_otp.c index 65232903b2..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) @@ -80,35 +81,35 @@ static void set_otp_timing(bool write) bfrom_OtpCommand(OTP_INIT, write ? timing : timing & ~(-1 << 15)); } -int do_otp(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +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: - cmd_usage(cmdtp); - return 1; + 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; @@ -157,26 +158,14 @@ int do_otp(cmd_tbl_t *cmdtp, int flag, int argc, char *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()) { @@ -224,8 +213,9 @@ int do_otp(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) return ret; } -U_BOOT_CMD(otp, 7, 0, do_otp, - "One-Time-Programmable sub-system\n", +U_BOOT_CMD( + otp, 7, 0, do_otp, + "One-Time-Programmable sub-system", "read [count] [half]\n" " - read 'count' half-pages starting at 'page' (offset 'half') to 'addr'\n" "otp dump [count] [half]\n" @@ -233,4 +223,5 @@ U_BOOT_CMD(otp, 7, 0, do_otp, "otp write [--force] [count] [half]\n" " - write 'count' half-pages starting at 'page' (offset 'half') from 'addr'\n" "otp lock \n" - " - lock 'count' pages starting at 'page'\n"); + " - lock 'count' pages starting at 'page'" +);