Patchwork [U-Boot,v3,10/10] tools: Add support for Dove to kwboot

login
register
mail settings
Submitter Sebastian Hesselbarth
Date Jan. 16, 2013, 7:25 p.m.
Message ID <1358364328-14904-11-git-send-email-sebastian.hesselbarth@gmail.com>
Download mbox | patch
Permalink /patch/213031/
State New
Delegated to: Prafulla Wadaskar
Headers show

Comments

Sebastian Hesselbarth - Jan. 16, 2013, 7:25 p.m.
On Dove kwboot can also be used to boot an u-boot image into RAM.
In contrast to Kirkwood, Dove does not support the UART boot mode
sequence but requires the UART boot mode to be selected through
strap pins. The SolidRun CuBox has a push button to allow uart
boot mode but fails on the boot sequence sent by kwboot.

This patch adds another cmdline option to allow to send a boot
image without the boot sequence and adds support for Dove.

Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Signed-off-by: Daniel Stodden <daniel.stodden@gmail.com>
---
Cc: u-boot@lists.denx.de
Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Cc: Rabeeh Khoury <rabeeh@solid-run.com>
Cc: Albert Aribaud <albert.u.boot@aribaud.net>
Cc: Prafulla Wadaskar <prafulla@marvell.com>
Cc: Andy Fleming <afleming@gmail.com>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Daniel Stodden <daniel.stodden@gmail.com>
Cc: Luka Perkov <luka@openwrt.org>
---
 doc/kwboot.1   |   13 ++++++++++---
 tools/Makefile |    2 ++
 tools/kwboot.c |   25 +++++++++++++++++++------
 3 files changed, 31 insertions(+), 9 deletions(-)
Prafulla Wadaskar - Feb. 11, 2013, 3:39 a.m.
> -----Original Message-----
> From: Sebastian Hesselbarth [mailto:sebastian.hesselbarth@gmail.com]
> Sent: 17 January 2013 00:55
> To: Sebastian Hesselbarth
> Cc: Daniel Stodden; u-boot@lists.denx.de; Rabeeh Khoury; Albert
> Aribaud; Prafulla Wadaskar; Andy Fleming; Joe Hershberger; Luka Perkov
> Subject: [PATCH v3 10/10] tools: Add support for Dove to kwboot
> 
> On Dove kwboot can also be used to boot an u-boot image into RAM.
> In contrast to Kirkwood, Dove does not support the UART boot mode
> sequence but requires the UART boot mode to be selected through
> strap pins. The SolidRun CuBox has a push button to allow uart
> boot mode but fails on the boot sequence sent by kwboot.
> 
> This patch adds another cmdline option to allow to send a boot
> image without the boot sequence and adds support for Dove.
> 
> Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
> Signed-off-by: Daniel Stodden <daniel.stodden@gmail.com>
> ---
> Cc: u-boot@lists.denx.de
> Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
> Cc: Rabeeh Khoury <rabeeh@solid-run.com>
> Cc: Albert Aribaud <albert.u.boot@aribaud.net>
> Cc: Prafulla Wadaskar <prafulla@marvell.com>
> Cc: Andy Fleming <afleming@gmail.com>
> Cc: Joe Hershberger <joe.hershberger@gmail.com>
> Cc: Daniel Stodden <daniel.stodden@gmail.com>
> Cc: Luka Perkov <luka@openwrt.org>
> ---
>  doc/kwboot.1   |   13 ++++++++++---
>  tools/Makefile |    2 ++
>  tools/kwboot.c |   25 +++++++++++++++++++------
>  3 files changed, 31 insertions(+), 9 deletions(-)
> 
> diff --git a/doc/kwboot.1 b/doc/kwboot.1
> index 25fe69a..ab4551b 100644
> --- a/doc/kwboot.1
> +++ b/doc/kwboot.1
> @@ -1,17 +1,18 @@
> -.TH KWBOOT 1 "2012-05-19"
> +.TH KWBOOT 1 "2013-01-16"
> 
>  .SH NAME
> -kwboot \- Boot Marvell Kirkwood SoCs over a serial link.
> +kwboot \- Boot Marvell Kirkwood/Dove SoCs over a serial link.
>  .SH SYNOPSIS
>  .B kwboot
>  .RB [ "-b \fIimage\fP" ]
> +.RB [ "-n" ]
>  .RB [ "-p" ]
>  .RB [ "-t" ]
>  .RB [ "-B \fIbaudrate\fP" ]
>  .RB \fITTY\fP
>  .SH "DESCRIPTION"
> 
> -The \fBmkimage\fP program boots boards based on Marvell's Kirkwood
> +The \fBmkimage\fP program boots boards based on Marvell's
> Kirkwood/Dove
>  platform over their integrated UART. Boot image files will typically
>  contain a second stage boot loader, such as U-Boot. The image file
>  must conform to Marvell's BootROM firmware image format
> @@ -68,6 +69,12 @@ If standard I/O streams connect to a console, this
> mode will terminate
>  after receiving 'ctrl-\\' followed by 'c' from console input.
> 
>  .TP
> +.BI "\-u"
> +Disables the UART boot mode sequence for platforms that do not
> support
> +it (e.g. Dove). Usually, the UART boot mode must be selected by
> pressing
> +a push button on power-up.
> +
> +.TP
>  .BI "\-B \fIbaudrate\fP"
>  Adjust the baud rate on \fITTY\fP. Default rate is 115200.
> 
> diff --git a/tools/Makefile b/tools/Makefile
> index 686840a..4816812 100644
> --- a/tools/Makefile
> +++ b/tools/Makefile
> @@ -72,6 +72,7 @@ BIN_FILES-$(CONFIG_SMDK5250) += mksmdk5250spl$(SFX)
>  BIN_FILES-$(CONFIG_MX28) += mxsboot$(SFX)
>  BIN_FILES-$(CONFIG_NETCONSOLE) += ncb$(SFX)
>  BIN_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1$(SFX)
> +BIN_FILES-$(CONFIG_DOVE) += kwboot$(SFX)
>  BIN_FILES-$(CONFIG_KIRKWOOD) += kwboot$(SFX)
> 
>  # Source files which exist outside the tools directory
> @@ -103,6 +104,7 @@ OBJ_FILES-$(CONFIG_NETCONSOLE) += ncb.o
>  NOPED_OBJ_FILES-y += os_support.o
>  OBJ_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1.o
>  NOPED_OBJ_FILES-y += ublimage.o
> +OBJ_FILES-$(CONFIG_DOVE) += kwboot.o
>  OBJ_FILES-$(CONFIG_KIRKWOOD) += kwboot.o
> 
>  # Don't build by default
> diff --git a/tools/kwboot.c b/tools/kwboot.c
> index e773f01..1e4edb6 100644
> --- a/tools/kwboot.c
> +++ b/tools/kwboot.c
> @@ -37,6 +37,10 @@ static unsigned char kwboot_msg_boot[] = {
>  	0xBB, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77
>  };
> 
> +static unsigned char kwboot_msg_none[] = {
> +	0x00
> +};
> +
>  #define KWBOOT_MSG_REQ_DELAY	10 /* ms */
>  #define KWBOOT_MSG_RSP_TIMEO	50 /* ms */
> 
> @@ -268,17 +272,21 @@ kwboot_bootmsg(int tty, void *msg)
>  	int rc;
>  	char c;
> 
> -	kwboot_printv("Sending boot message. Please reboot the
> target...");
> +	kwboot_printv(msg != kwboot_msg_none
> +	      ? "Sending boot message. Please reboot the target..."
> +	      : "Sensing target. Please reboot target into UART mode...");
> 
>  	do {
>  		rc = tcflush(tty, TCIOFLUSH);
>  		if (rc)
>  			break;
> 
> -		rc = kwboot_tty_send(tty, msg, 8);
> -		if (rc) {
> -			usleep(KWBOOT_MSG_REQ_DELAY * 1000);
> -			continue;
> +		if (msg != kwboot_msg_none) {
> +			rc = kwboot_tty_send(tty, msg, 8);
> +			if (rc) {
> +				usleep(KWBOOT_MSG_REQ_DELAY * 1000);
> +				continue;
> +			}
>  		}
> 
>  		rc = kwboot_tty_recv(tty, &c, 1, KWBOOT_MSG_RSP_TIMEO);
> @@ -607,6 +615,7 @@ kwboot_usage(FILE *stream, char *progname)
>  	fprintf(stream, "  -b <image>: boot <image>\n");
>  	fprintf(stream, "  -p: patch <image> to type 0x69 (uart boot)\n");
>  	fprintf(stream, "\n");
> +	fprintf(stream, "  -n: don't send boot message\n");
>  	fprintf(stream, "  -t: mini terminal\n");
>  	fprintf(stream, "\n");
>  	fprintf(stream, "  -B <baud>: set baud rate\n");
> @@ -636,7 +645,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:nptB:");
>  		if (c < 0)
>  			break;
> 
> @@ -646,6 +655,10 @@ main(int argc, char **argv)
>  			imgpath = optarg;
>  			break;
> 
> +		case 'n':
> +			bootmsg = kwboot_msg_none;
> +			break;
> +
>  		case 'p':
>  			patch = 1;
>  			break;
> --
> 1.7.10.4

Acked-By: Prafulla Wadaskar <prafulla@marvell.com>

Regards...
Prafulla . . .

Patch

diff --git a/doc/kwboot.1 b/doc/kwboot.1
index 25fe69a..ab4551b 100644
--- a/doc/kwboot.1
+++ b/doc/kwboot.1
@@ -1,17 +1,18 @@ 
-.TH KWBOOT 1 "2012-05-19"
+.TH KWBOOT 1 "2013-01-16"
 
 .SH NAME
-kwboot \- Boot Marvell Kirkwood SoCs over a serial link.
+kwboot \- Boot Marvell Kirkwood/Dove SoCs over a serial link.
 .SH SYNOPSIS
 .B kwboot
 .RB [ "-b \fIimage\fP" ]
+.RB [ "-n" ]
 .RB [ "-p" ]
 .RB [ "-t" ]
 .RB [ "-B \fIbaudrate\fP" ]
 .RB \fITTY\fP
 .SH "DESCRIPTION"
 
-The \fBmkimage\fP program boots boards based on Marvell's Kirkwood
+The \fBmkimage\fP program boots boards based on Marvell's Kirkwood/Dove
 platform over their integrated UART. Boot image files will typically
 contain a second stage boot loader, such as U-Boot. The image file
 must conform to Marvell's BootROM firmware image format
@@ -68,6 +69,12 @@  If standard I/O streams connect to a console, this mode will terminate
 after receiving 'ctrl-\\' followed by 'c' from console input.
 
 .TP
+.BI "\-u"
+Disables the UART boot mode sequence for platforms that do not support
+it (e.g. Dove). Usually, the UART boot mode must be selected by pressing
+a push button on power-up.
+
+.TP
 .BI "\-B \fIbaudrate\fP"
 Adjust the baud rate on \fITTY\fP. Default rate is 115200.
 
diff --git a/tools/Makefile b/tools/Makefile
index 686840a..4816812 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -72,6 +72,7 @@  BIN_FILES-$(CONFIG_SMDK5250) += mksmdk5250spl$(SFX)
 BIN_FILES-$(CONFIG_MX28) += mxsboot$(SFX)
 BIN_FILES-$(CONFIG_NETCONSOLE) += ncb$(SFX)
 BIN_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1$(SFX)
+BIN_FILES-$(CONFIG_DOVE) += kwboot$(SFX)
 BIN_FILES-$(CONFIG_KIRKWOOD) += kwboot$(SFX)
 
 # Source files which exist outside the tools directory
@@ -103,6 +104,7 @@  OBJ_FILES-$(CONFIG_NETCONSOLE) += ncb.o
 NOPED_OBJ_FILES-y += os_support.o
 OBJ_FILES-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1.o
 NOPED_OBJ_FILES-y += ublimage.o
+OBJ_FILES-$(CONFIG_DOVE) += kwboot.o
 OBJ_FILES-$(CONFIG_KIRKWOOD) += kwboot.o
 
 # Don't build by default
diff --git a/tools/kwboot.c b/tools/kwboot.c
index e773f01..1e4edb6 100644
--- a/tools/kwboot.c
+++ b/tools/kwboot.c
@@ -37,6 +37,10 @@  static unsigned char kwboot_msg_boot[] = {
 	0xBB, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77
 };
 
+static unsigned char kwboot_msg_none[] = {
+	0x00
+};
+
 #define KWBOOT_MSG_REQ_DELAY	10 /* ms */
 #define KWBOOT_MSG_RSP_TIMEO	50 /* ms */
 
@@ -268,17 +272,21 @@  kwboot_bootmsg(int tty, void *msg)
 	int rc;
 	char c;
 
-	kwboot_printv("Sending boot message. Please reboot the target...");
+	kwboot_printv(msg != kwboot_msg_none
+	      ? "Sending boot message. Please reboot the target..."
+	      : "Sensing target. Please reboot target into UART mode...");
 
 	do {
 		rc = tcflush(tty, TCIOFLUSH);
 		if (rc)
 			break;
 
-		rc = kwboot_tty_send(tty, msg, 8);
-		if (rc) {
-			usleep(KWBOOT_MSG_REQ_DELAY * 1000);
-			continue;
+		if (msg != kwboot_msg_none) {
+			rc = kwboot_tty_send(tty, msg, 8);
+			if (rc) {
+				usleep(KWBOOT_MSG_REQ_DELAY * 1000);
+				continue;
+			}
 		}
 
 		rc = kwboot_tty_recv(tty, &c, 1, KWBOOT_MSG_RSP_TIMEO);
@@ -607,6 +615,7 @@  kwboot_usage(FILE *stream, char *progname)
 	fprintf(stream, "  -b <image>: boot <image>\n");
 	fprintf(stream, "  -p: patch <image> to type 0x69 (uart boot)\n");
 	fprintf(stream, "\n");
+	fprintf(stream, "  -n: don't send boot message\n");
 	fprintf(stream, "  -t: mini terminal\n");
 	fprintf(stream, "\n");
 	fprintf(stream, "  -B <baud>: set baud rate\n");
@@ -636,7 +645,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:nptB:");
 		if (c < 0)
 			break;
 
@@ -646,6 +655,10 @@  main(int argc, char **argv)
 			imgpath = optarg;
 			break;
 
+		case 'n':
+			bootmsg = kwboot_msg_none;
+			break;
+
 		case 'p':
 			patch = 1;
 			break;