summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Smith <kevin.smith@elecsyscorp.com>2016-02-16 21:28:19 +0000
committerKlaus Goger <klaus.goger@theobroma-systems.com>2016-09-18 12:38:59 +0200
commitc1f2b8ebec6bdcdd5d6206cf03278cc99c8e5ca7 (patch)
treef69f88b79602a47527409b83aa0c30091362f95b
parent82ad39a41e7118299579c44672f59472ffe69d2d (diff)
tools: kwboot: Add xmodem timeout option
Add command-line specification of xmodem timeout. If the binary header needs to take a while to do something (e.g. DDR ECC scrubbing), the xmodem transfer can time out. Add a configurable xmodem block timeout to allow transfers with slow binary headers to succeed. Signed-off-by: Kevin Smith <kevin.smith@elecsyscorp.com> Cc: Stefan Roese <sr@denx.de> Signed-off-by: Stefan Roese <sr@denx.de>
-rw-r--r--tools/kwboot.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/tools/kwboot.c b/tools/kwboot.c
index dee86cf650..e00958a4ce 100644
--- a/tools/kwboot.c
+++ b/tools/kwboot.c
@@ -76,6 +76,7 @@ static int kwboot_verbose;
static int msg_req_delay = KWBOOT_MSG_REQ_DELAY;
static int msg_rsp_timeo = KWBOOT_MSG_RSP_TIMEO;
+static int blk_rsp_timeo = KWBOOT_BLK_RSP_TIMEO;
static void
kwboot_printv(const char *fmt, ...)
@@ -380,7 +381,7 @@ kwboot_xm_sendblock(int fd, struct kwboot_block *block)
break;
do {
- rc = kwboot_tty_recv(fd, &c, 1, KWBOOT_BLK_RSP_TIMEO);
+ rc = kwboot_tty_recv(fd, &c, 1, blk_rsp_timeo);
if (rc)
break;
@@ -696,6 +697,8 @@ kwboot_usage(FILE *stream, char *progname)
fprintf(stream, " -a: use timings for Armada XP\n");
fprintf(stream, " -q <req-delay>: use specific request-delay\n");
fprintf(stream, " -s <resp-timeo>: use specific response-timeout\n");
+ fprintf(stream,
+ " -o <block-timeo>: use specific xmodem block timeout\n");
fprintf(stream, "\n");
fprintf(stream, " -t: mini terminal\n");
fprintf(stream, "\n");
@@ -728,7 +731,7 @@ main(int argc, char **argv)
kwboot_verbose = isatty(STDOUT_FILENO);
do {
- int c = getopt(argc, argv, "hb:ptaB:dD:q:s:");
+ int c = getopt(argc, argv, "hb:ptaB:dD:q:s:o:");
if (c < 0)
break;
@@ -768,6 +771,10 @@ main(int argc, char **argv)
msg_rsp_timeo = atoi(optarg);
break;
+ case 'o':
+ blk_rsp_timeo = atoi(optarg);
+ break;
+
case 'B':
speed = kwboot_tty_speed(atoi(optarg));
if (speed == -1)