Message ID | 1403862911-6138-23-git-send-email-sr@denx.de |
---|---|
State | Superseded |
Delegated to: | Prafulla Wadaskar |
Headers | show |
Hi Stefan, It's great to see you working on adding support for Marvell's new SoCs :) Since now kwboot is going to support more SoCs except kirkwood it makes sense to rename it to mvboot. I've sent this patch long ago, dunno if it still applies: http://patchwork.ozlabs.org/patch/219741/ Also, I'd like to test this series on some boards I have - do you have patches on some git tree that can be pulled easily? Luka On Fri, Jun 27, 2014 at 11:55:08AM +0200, Stefan Roese wrote: > The barebox version of the kwboot tool has evolved a bit. To support > Armada XP and Dove. Additionally a few minor fixes have been applied. > So lets sync with the latest barebox version. > > Please note that the main difference between both versions now is, that > the U-Boot version still supports the -p option, to dynamically patch > an image for UART boot mode. I didn't test it now though. > > Signed-off-by: Stefan Roese <sr@denx.de> > --- > > tools/kwboot.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++++--------- > 1 file changed, 83 insertions(+), 14 deletions(-) > > diff --git a/tools/kwboot.c b/tools/kwboot.c > index e773f01..c47970e 100644 > --- a/tools/kwboot.c > +++ b/tools/kwboot.c > @@ -1,5 +1,6 @@ > /* > - * Boot a Marvell Kirkwood SoC, with Xmodem over UART0. > + * Boot a Marvell SoC, with Xmodem over UART0. > + * supports Kirkwood, Dove, Armada 370, Armada XP > * > * (c) 2012 Daniel Stodden <daniel.stodden@gmail.com> > * > @@ -37,8 +38,12 @@ static unsigned char kwboot_msg_boot[] = { > 0xBB, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 > }; > > -#define KWBOOT_MSG_REQ_DELAY 10 /* ms */ > -#define KWBOOT_MSG_RSP_TIMEO 50 /* ms */ > +static unsigned char kwboot_msg_debug[] = { > + 0xDD, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 > +}; > + > +#define KWBOOT_MSG_REQ_DELAY 1000 /* ms */ > +#define KWBOOT_MSG_RSP_TIMEO 1000 /* ms */ > > /* > * Xmodem Transfers > @@ -184,6 +189,9 @@ kwboot_tty_send(int fd, const void *buf, size_t len) > int rc; > ssize_t n; > > + if (!buf) > + return 0; > + > rc = -1; > > do { > @@ -268,7 +276,10 @@ kwboot_bootmsg(int tty, void *msg) > int rc; > char c; > > - kwboot_printv("Sending boot message. Please reboot the target..."); > + if (msg == NULL) > + kwboot_printv("Please reboot the target into UART boot mode..."); > + else > + kwboot_printv("Sending boot message. Please reboot the target..."); > > do { > rc = tcflush(tty, TCIOFLUSH); > @@ -293,6 +304,37 @@ kwboot_bootmsg(int tty, void *msg) > } > > static int > +kwboot_debugmsg(int tty, void *msg) > +{ > + int rc; > + > + kwboot_printv("Sending debug message. Please reboot the target..."); > + > + do { > + char buf[16]; > + > + rc = tcflush(tty, TCIOFLUSH); > + if (rc) > + break; > + > + rc = kwboot_tty_send(tty, msg, 8); > + if (rc) { > + usleep(KWBOOT_MSG_REQ_DELAY * 1000); > + continue; > + } > + > + rc = kwboot_tty_recv(tty, buf, 16, KWBOOT_MSG_RSP_TIMEO); > + > + kwboot_spinner(); > + > + } while (rc); > + > + kwboot_printv("\n"); > + > + return rc; > +} > + > +static int > kwboot_xm_makeblock(struct kwboot_block *block, const void *data, > size_t size, int pnum) > { > @@ -300,6 +342,7 @@ kwboot_xm_makeblock(struct kwboot_block *block, const void *data, > size_t n; > int i; > > + block->soh = SOH; > block->pnum = pnum; > block->_pnum = ~block->pnum; > > @@ -326,9 +369,15 @@ kwboot_xm_sendblock(int fd, struct kwboot_block *block) > if (rc) > break; > > - rc = kwboot_tty_recv(fd, &c, 1, KWBOOT_BLK_RSP_TIMEO); > - if (rc) > - break; > + do { > + rc = kwboot_tty_recv(fd, &c, 1, KWBOOT_BLK_RSP_TIMEO); > + if (rc) > + break; > + > + if (c != ACK && c != NAK && c != CAN) > + printf("%c", c); > + > + } while (c != ACK && c != NAK && c != CAN); > > if (c != ACK) > kwboot_progress(-1, '+'); > @@ -511,7 +560,6 @@ kwboot_mmap_image(const char *path, size_t *size, int prot) > void *img; > > rc = -1; > - fd = -1; > img = NULL; > > fd = open(path, O_RDONLY); > @@ -601,11 +649,15 @@ static void > kwboot_usage(FILE *stream, char *progname) > { > fprintf(stream, > - "Usage: %s -b <image> [ -p ] [ -t ] " > - "[-B <baud> ] <TTY>\n", progname); > + "Usage: %s [-d | -b <image> | -D <image> ] [ -t ] [-B <baud> ] <TTY>\n", > + progname); > fprintf(stream, "\n"); > - fprintf(stream, " -b <image>: boot <image>\n"); > + fprintf(stream, > + " -b <image>: boot <image> with preamble (Kirkwood, Armada 370/XP)\n"); > fprintf(stream, " -p: patch <image> to type 0x69 (uart boot)\n"); > + fprintf(stream, > + " -D <image>: boot <image> without preamble (Dove)\n"); > + fprintf(stream, " -d: enter debug mode\n"); > fprintf(stream, "\n"); > fprintf(stream, " -t: mini terminal\n"); > fprintf(stream, "\n"); > @@ -619,6 +671,7 @@ main(int argc, char **argv) > const char *ttypath, *imgpath; > int rv, rc, tty, term, prot, patch; > void *bootmsg; > + void *debugmsg; > void *img; > size_t size; > speed_t speed; > @@ -626,6 +679,7 @@ main(int argc, char **argv) > rv = 1; > tty = -1; > bootmsg = NULL; > + debugmsg = NULL; > imgpath = NULL; > img = NULL; > term = 0; > @@ -636,7 +690,7 @@ main(int argc, char **argv) > kwboot_verbose = isatty(STDOUT_FILENO); > > do { > - int c = getopt(argc, argv, "hb:ptB:"); > + int c = getopt(argc, argv, "hb:ptB:dD:"); > if (c < 0) > break; > > @@ -646,6 +700,15 @@ main(int argc, char **argv) > imgpath = optarg; > break; > > + case 'D': > + bootmsg = NULL; > + imgpath = optarg; > + break; > + > + case 'd': > + debugmsg = kwboot_msg_debug; > + break; > + > case 'p': > patch = 1; > break; > @@ -667,7 +730,7 @@ main(int argc, char **argv) > } > } while (1); > > - if (!bootmsg && !term) > + if (!bootmsg && !term && !debugmsg) > goto usage; > > if (patch && !imgpath) > @@ -702,7 +765,13 @@ main(int argc, char **argv) > } > } > > - if (bootmsg) { > + if (debugmsg) { > + rc = kwboot_debugmsg(tty, debugmsg); > + if (rc) { > + perror("debugmsg"); > + goto out; > + } > + } else { > rc = kwboot_bootmsg(tty, bootmsg); > if (rc) { > perror("bootmsg"); > -- > 2.0.1 > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot
On Fri, 2014-06-27 at 21:06 +0200, Luka Perkov wrote: > Hi Stefan, > > It's great to see you working on adding support for Marvell's new SoCs :) > > Since now kwboot is going to support more SoCs except kirkwood it makes > sense to rename it to mvboot. I've sent this patch long ago, dunno if it > still applies: > > http://patchwork.ozlabs.org/patch/219741/ > > Also, I'd like to test this series on some boards I have - do you have > patches on some git tree that can be pulled easily? In case Marvell gets bought out: wouldn't it make more sense to rename to mrvlboot and point a curl script at the nasdaq quotes to validate the build? Related, I don't think Marvell guarantees to not either yank or completely overhaul their SoC boot code entirely next September. I'm sorry for "kwboot" if it violates your aesthetic senses. Those as of 2014. Indeed, naming programs by product is often a weak choice, but there wasn't a more robust one available. But: there still isn't. Program paths don't get renamed at will. That's because once it's deployed it's not arbitrary anymore, and some real value in doing so better compensates for the overall pain. Here's one fix: one could write a yet better one with yet a better name, convince everyone to switch, and just obsolete the existing one. An easier, sometimes funnier, alternative is to learn to enjoy the historical trivia surrounding all those seemingly stupid names. Yeah, an 'apt-get git' used to install GNU interactive tools, then at some point it suddenly didn't. But NIS support still runs as ypbind for all the good reasons, too. Cheers, Daniel > Luka > > On Fri, Jun 27, 2014 at 11:55:08AM +0200, Stefan Roese wrote: > > The barebox version of the kwboot tool has evolved a bit. To support > > Armada XP and Dove. Additionally a few minor fixes have been applied. > > So lets sync with the latest barebox version. > > > > Please note that the main difference between both versions now is, that > > the U-Boot version still supports the -p option, to dynamically patch > > an image for UART boot mode. I didn't test it now though. > > > > Signed-off-by: Stefan Roese <sr@denx.de> > > --- > > > > tools/kwboot.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++++--------- > > 1 file changed, 83 insertions(+), 14 deletions(-) > > > > diff --git a/tools/kwboot.c b/tools/kwboot.c > > index e773f01..c47970e 100644 > > --- a/tools/kwboot.c > > +++ b/tools/kwboot.c > > @@ -1,5 +1,6 @@ > > /* > > - * Boot a Marvell Kirkwood SoC, with Xmodem over UART0. > > + * Boot a Marvell SoC, with Xmodem over UART0. > > + * supports Kirkwood, Dove, Armada 370, Armada XP > > * > > * (c) 2012 Daniel Stodden <daniel.stodden@gmail.com> > > * > > @@ -37,8 +38,12 @@ static unsigned char kwboot_msg_boot[] = { > > 0xBB, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 > > }; > > > > -#define KWBOOT_MSG_REQ_DELAY 10 /* ms */ > > -#define KWBOOT_MSG_RSP_TIMEO 50 /* ms */ > > +static unsigned char kwboot_msg_debug[] = { > > + 0xDD, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 > > +}; > > + > > +#define KWBOOT_MSG_REQ_DELAY 1000 /* ms */ > > +#define KWBOOT_MSG_RSP_TIMEO 1000 /* ms */ > > > > /* > > * Xmodem Transfers > > @@ -184,6 +189,9 @@ kwboot_tty_send(int fd, const void *buf, size_t len) > > int rc; > > ssize_t n; > > > > + if (!buf) > > + return 0; > > + > > rc = -1; > > > > do { > > @@ -268,7 +276,10 @@ kwboot_bootmsg(int tty, void *msg) > > int rc; > > char c; > > > > - kwboot_printv("Sending boot message. Please reboot the target..."); > > + if (msg == NULL) > > + kwboot_printv("Please reboot the target into UART boot mode..."); > > + else > > + kwboot_printv("Sending boot message. Please reboot the target..."); > > > > do { > > rc = tcflush(tty, TCIOFLUSH); > > @@ -293,6 +304,37 @@ kwboot_bootmsg(int tty, void *msg) > > } > > > > static int > > +kwboot_debugmsg(int tty, void *msg) > > +{ > > + int rc; > > + > > + kwboot_printv("Sending debug message. Please reboot the target..."); > > + > > + do { > > + char buf[16]; > > + > > + rc = tcflush(tty, TCIOFLUSH); > > + if (rc) > > + break; > > + > > + rc = kwboot_tty_send(tty, msg, 8); > > + if (rc) { > > + usleep(KWBOOT_MSG_REQ_DELAY * 1000); > > + continue; > > + } > > + > > + rc = kwboot_tty_recv(tty, buf, 16, KWBOOT_MSG_RSP_TIMEO); > > + > > + kwboot_spinner(); > > + > > + } while (rc); > > + > > + kwboot_printv("\n"); > > + > > + return rc; > > +} > > + > > +static int > > kwboot_xm_makeblock(struct kwboot_block *block, const void *data, > > size_t size, int pnum) > > { > > @@ -300,6 +342,7 @@ kwboot_xm_makeblock(struct kwboot_block *block, const void *data, > > size_t n; > > int i; > > > > + block->soh = SOH; > > block->pnum = pnum; > > block->_pnum = ~block->pnum; > > > > @@ -326,9 +369,15 @@ kwboot_xm_sendblock(int fd, struct kwboot_block *block) > > if (rc) > > break; > > > > - rc = kwboot_tty_recv(fd, &c, 1, KWBOOT_BLK_RSP_TIMEO); > > - if (rc) > > - break; > > + do { > > + rc = kwboot_tty_recv(fd, &c, 1, KWBOOT_BLK_RSP_TIMEO); > > + if (rc) > > + break; > > + > > + if (c != ACK && c != NAK && c != CAN) > > + printf("%c", c); > > + > > + } while (c != ACK && c != NAK && c != CAN); > > > > if (c != ACK) > > kwboot_progress(-1, '+'); > > @@ -511,7 +560,6 @@ kwboot_mmap_image(const char *path, size_t *size, int prot) > > void *img; > > > > rc = -1; > > - fd = -1; > > img = NULL; > > > > fd = open(path, O_RDONLY); > > @@ -601,11 +649,15 @@ static void > > kwboot_usage(FILE *stream, char *progname) > > { > > fprintf(stream, > > - "Usage: %s -b <image> [ -p ] [ -t ] " > > - "[-B <baud> ] <TTY>\n", progname); > > + "Usage: %s [-d | -b <image> | -D <image> ] [ -t ] [-B <baud> ] <TTY>\n", > > + progname); > > fprintf(stream, "\n"); > > - fprintf(stream, " -b <image>: boot <image>\n"); > > + fprintf(stream, > > + " -b <image>: boot <image> with preamble (Kirkwood, Armada 370/XP)\n"); > > fprintf(stream, " -p: patch <image> to type 0x69 (uart boot)\n"); > > + fprintf(stream, > > + " -D <image>: boot <image> without preamble (Dove)\n"); > > + fprintf(stream, " -d: enter debug mode\n"); > > fprintf(stream, "\n"); > > fprintf(stream, " -t: mini terminal\n"); > > fprintf(stream, "\n"); > > @@ -619,6 +671,7 @@ main(int argc, char **argv) > > const char *ttypath, *imgpath; > > int rv, rc, tty, term, prot, patch; > > void *bootmsg; > > + void *debugmsg; > > void *img; > > size_t size; > > speed_t speed; > > @@ -626,6 +679,7 @@ main(int argc, char **argv) > > rv = 1; > > tty = -1; > > bootmsg = NULL; > > + debugmsg = NULL; > > imgpath = NULL; > > img = NULL; > > term = 0; > > @@ -636,7 +690,7 @@ main(int argc, char **argv) > > kwboot_verbose = isatty(STDOUT_FILENO); > > > > do { > > - int c = getopt(argc, argv, "hb:ptB:"); > > + int c = getopt(argc, argv, "hb:ptB:dD:"); > > if (c < 0) > > break; > > > > @@ -646,6 +700,15 @@ main(int argc, char **argv) > > imgpath = optarg; > > break; > > > > + case 'D': > > + bootmsg = NULL; > > + imgpath = optarg; > > + break; > > + > > + case 'd': > > + debugmsg = kwboot_msg_debug; > > + break; > > + > > case 'p': > > patch = 1; > > break; > > @@ -667,7 +730,7 @@ main(int argc, char **argv) > > } > > } while (1); > > > > - if (!bootmsg && !term) > > + if (!bootmsg && !term && !debugmsg) > > goto usage; > > > > if (patch && !imgpath) > > @@ -702,7 +765,13 @@ main(int argc, char **argv) > > } > > } > > > > - if (bootmsg) { > > + if (debugmsg) { > > + rc = kwboot_debugmsg(tty, debugmsg); > > + if (rc) { > > + perror("debugmsg"); > > + goto out; > > + } > > + } else { > > rc = kwboot_bootmsg(tty, bootmsg); > > if (rc) { > > perror("bootmsg"); > > -- > > 2.0.1 > > > > _______________________________________________ > > U-Boot mailing list > > U-Boot@lists.denx.de > > http://lists.denx.de/mailman/listinfo/u-boot > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot
Hi Luka! On 27.06.2014 21:06, Luka Perkov wrote: > It's great to see you working on adding support for Marvell's new SoCs :) Thanks. > Since now kwboot is going to support more SoCs except kirkwood it makes > sense to rename it to mvboot. I've sent this patch long ago, dunno if it > still applies: > > http://patchwork.ozlabs.org/patch/219741/ I thought about renaming the tool(s) as well. But decided against it. Mostly because of historical reasons. This name for the tools has been around for quite some time. And is documented in many README / HOWTO files on the web. That's why I chose to not change it, at least for now. > Also, I'd like to test this series on some boards I have That would be great. Thanks. Please keep me informed. Note that I only merged some of the Kirkwood U-Boot code with the Armada XP code. More work could be done here. And Dove definitely can be squashed into this now common MVEBU infrastructure as well. Patches as always very welcome (after this patchset is accepted as a basis). ;) > - do you have > patches on some git tree that can be pulled easily? Sure. I just uploaded a branch "marvell-armada-xp-2014-06-27" to the u-boot-testing git repository: http://git.denx.de/?p=u-boot/u-boot-testing.git;a=shortlog;h=refs/heads/marvell-armada-xp-2014-06-27 Thanks, Stefan
Dear Daniel, In message <1403862911-6138-23-git-send-email-sr@denx.de> Stefan Roese wrote: ... > tools/kwboot.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++++--------- > 1 file changed, 83 insertions(+), 14 deletions(-) It appears that you are the original author of the kwboot.c code, is this correct? The file does not include any license information. As you submitted it to the U-Boot project, we can assume they are supposed to be covered by the project wide license terms, but I'd rather be sure about that. Could you please elucidate? Thanks. Best regards, Wolfgang Denk
diff --git a/tools/kwboot.c b/tools/kwboot.c index e773f01..c47970e 100644 --- a/tools/kwboot.c +++ b/tools/kwboot.c @@ -1,5 +1,6 @@ /* - * Boot a Marvell Kirkwood SoC, with Xmodem over UART0. + * Boot a Marvell SoC, with Xmodem over UART0. + * supports Kirkwood, Dove, Armada 370, Armada XP * * (c) 2012 Daniel Stodden <daniel.stodden@gmail.com> * @@ -37,8 +38,12 @@ static unsigned char kwboot_msg_boot[] = { 0xBB, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 }; -#define KWBOOT_MSG_REQ_DELAY 10 /* ms */ -#define KWBOOT_MSG_RSP_TIMEO 50 /* ms */ +static unsigned char kwboot_msg_debug[] = { + 0xDD, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 +}; + +#define KWBOOT_MSG_REQ_DELAY 1000 /* ms */ +#define KWBOOT_MSG_RSP_TIMEO 1000 /* ms */ /* * Xmodem Transfers @@ -184,6 +189,9 @@ kwboot_tty_send(int fd, const void *buf, size_t len) int rc; ssize_t n; + if (!buf) + return 0; + rc = -1; do { @@ -268,7 +276,10 @@ kwboot_bootmsg(int tty, void *msg) int rc; char c; - kwboot_printv("Sending boot message. Please reboot the target..."); + if (msg == NULL) + kwboot_printv("Please reboot the target into UART boot mode..."); + else + kwboot_printv("Sending boot message. Please reboot the target..."); do { rc = tcflush(tty, TCIOFLUSH); @@ -293,6 +304,37 @@ kwboot_bootmsg(int tty, void *msg) } static int +kwboot_debugmsg(int tty, void *msg) +{ + int rc; + + kwboot_printv("Sending debug message. Please reboot the target..."); + + do { + char buf[16]; + + rc = tcflush(tty, TCIOFLUSH); + if (rc) + break; + + rc = kwboot_tty_send(tty, msg, 8); + if (rc) { + usleep(KWBOOT_MSG_REQ_DELAY * 1000); + continue; + } + + rc = kwboot_tty_recv(tty, buf, 16, KWBOOT_MSG_RSP_TIMEO); + + kwboot_spinner(); + + } while (rc); + + kwboot_printv("\n"); + + return rc; +} + +static int kwboot_xm_makeblock(struct kwboot_block *block, const void *data, size_t size, int pnum) { @@ -300,6 +342,7 @@ kwboot_xm_makeblock(struct kwboot_block *block, const void *data, size_t n; int i; + block->soh = SOH; block->pnum = pnum; block->_pnum = ~block->pnum; @@ -326,9 +369,15 @@ kwboot_xm_sendblock(int fd, struct kwboot_block *block) if (rc) break; - rc = kwboot_tty_recv(fd, &c, 1, KWBOOT_BLK_RSP_TIMEO); - if (rc) - break; + do { + rc = kwboot_tty_recv(fd, &c, 1, KWBOOT_BLK_RSP_TIMEO); + if (rc) + break; + + if (c != ACK && c != NAK && c != CAN) + printf("%c", c); + + } while (c != ACK && c != NAK && c != CAN); if (c != ACK) kwboot_progress(-1, '+'); @@ -511,7 +560,6 @@ kwboot_mmap_image(const char *path, size_t *size, int prot) void *img; rc = -1; - fd = -1; img = NULL; fd = open(path, O_RDONLY); @@ -601,11 +649,15 @@ static void kwboot_usage(FILE *stream, char *progname) { fprintf(stream, - "Usage: %s -b <image> [ -p ] [ -t ] " - "[-B <baud> ] <TTY>\n", progname); + "Usage: %s [-d | -b <image> | -D <image> ] [ -t ] [-B <baud> ] <TTY>\n", + progname); fprintf(stream, "\n"); - fprintf(stream, " -b <image>: boot <image>\n"); + fprintf(stream, + " -b <image>: boot <image> with preamble (Kirkwood, Armada 370/XP)\n"); fprintf(stream, " -p: patch <image> to type 0x69 (uart boot)\n"); + fprintf(stream, + " -D <image>: boot <image> without preamble (Dove)\n"); + fprintf(stream, " -d: enter debug mode\n"); fprintf(stream, "\n"); fprintf(stream, " -t: mini terminal\n"); fprintf(stream, "\n"); @@ -619,6 +671,7 @@ main(int argc, char **argv) const char *ttypath, *imgpath; int rv, rc, tty, term, prot, patch; void *bootmsg; + void *debugmsg; void *img; size_t size; speed_t speed; @@ -626,6 +679,7 @@ main(int argc, char **argv) rv = 1; tty = -1; bootmsg = NULL; + debugmsg = NULL; imgpath = NULL; img = NULL; term = 0; @@ -636,7 +690,7 @@ main(int argc, char **argv) kwboot_verbose = isatty(STDOUT_FILENO); do { - int c = getopt(argc, argv, "hb:ptB:"); + int c = getopt(argc, argv, "hb:ptB:dD:"); if (c < 0) break; @@ -646,6 +700,15 @@ main(int argc, char **argv) imgpath = optarg; break; + case 'D': + bootmsg = NULL; + imgpath = optarg; + break; + + case 'd': + debugmsg = kwboot_msg_debug; + break; + case 'p': patch = 1; break; @@ -667,7 +730,7 @@ main(int argc, char **argv) } } while (1); - if (!bootmsg && !term) + if (!bootmsg && !term && !debugmsg) goto usage; if (patch && !imgpath) @@ -702,7 +765,13 @@ main(int argc, char **argv) } } - if (bootmsg) { + if (debugmsg) { + rc = kwboot_debugmsg(tty, debugmsg); + if (rc) { + perror("debugmsg"); + goto out; + } + } else { rc = kwboot_bootmsg(tty, bootmsg); if (rc) { perror("bootmsg");
The barebox version of the kwboot tool has evolved a bit. To support Armada XP and Dove. Additionally a few minor fixes have been applied. So lets sync with the latest barebox version. Please note that the main difference between both versions now is, that the U-Boot version still supports the -p option, to dynamically patch an image for UART boot mode. I didn't test it now though. Signed-off-by: Stefan Roese <sr@denx.de> --- tools/kwboot.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 83 insertions(+), 14 deletions(-)