All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] autostart: unify duplicated logic into the bootm code
@ 2011-06-02 15:18 Mike Frysinger
  2011-06-03 19:41 ` McClintock Matthew-B29882
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Mike Frysinger @ 2011-06-02 15:18 UTC (permalink / raw)
  To: u-boot

Rather than having a bunch of random commands handle autostart behavior,
unify the logic in a single place.  This also fixes building of these
different commands when bootm is disabled.

Acked-by: Matthew McClintock <msm@freescale.com>
Acked-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 common/cmd_bootm.c |   15 +++++++++++++++
 common/cmd_fdc.c   |   15 +--------------
 common/cmd_fdos.c  |   11 +----------
 common/cmd_ide.c   |   15 +--------------
 common/cmd_nand.c  |   14 +-------------
 common/cmd_net.c   |   13 ++-----------
 common/cmd_scsi.c  |   11 +----------
 common/cmd_usb.c   |   13 ++-----------
 include/command.h  |    8 ++++++++
 9 files changed, 32 insertions(+), 83 deletions(-)

diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 18019d6..8982c92 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -707,6 +707,21 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	return 1;
 }
 
+int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd)
+{
+	const char *ep = getenv("autostart");
+
+	if (ep && !strcmp(ep, "yes")) {
+		char *local_args[2];
+		local_args[0] = (char *)cmd;
+		local_args[1] = NULL;
+		printf("Automatic boot of image at addr 0x%08lX ...\n", load_addr);
+		return do_bootm(cmdtp, 0, 1, local_args);
+	}
+
+	return 0;
+}
+
 /**
  * image_get_kernel - verify legacy format kernel image
  * @img_addr: in RAM address of the legacy format image to be verified
diff --git a/common/cmd_fdc.c b/common/cmd_fdc.c
index cdb050c..20ebf6c 100644
--- a/common/cmd_fdc.c
+++ b/common/cmd_fdc.c
@@ -722,7 +722,6 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	unsigned char boot_drive;
 	int i,nrofblk;
 	char *ep;
-	int rcode = 0;
 #if defined(CONFIG_FIT)
 	const void *fit_hdr = NULL;
 #endif
@@ -823,19 +822,7 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	/* Loading ok, update default load address */
 	load_addr = addr;
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
-		char *local_args[2];
-
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-
-		printf ("Automatic boot of image at addr 0x%08lX ...\n", addr);
-
-		do_bootm (cmdtp, 0, 1, local_args);
-		rcode ++;
-	}
-	return rcode;
+	return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 
 U_BOOT_CMD(
diff --git a/common/cmd_fdos.c b/common/cmd_fdos.c
index 2af4ca0..d714af8 100644
--- a/common/cmd_fdos.c
+++ b/common/cmd_fdos.c
@@ -40,7 +40,6 @@ int do_fdosboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
     char *name;
     char *ep;
     int size;
-    int rcode = 0;
     char buf [12];
     int drive = CONFIG_SYS_FDC_DRIVE_NUMBER;
 
@@ -98,15 +97,7 @@ int do_fdosboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
     printf("Floppy DOS load complete: %d bytes loaded to 0x%lx\n",
 	   size, load_addr);
 
-    /* Check if we should attempt an auto-start */
-    if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
-	char *local_args[2];
-	local_args[0] = argv[0];
-	local_args[1] = NULL;
-	printf ("Automatic boot of image at addr 0x%08lX ...\n", load_addr);
-	rcode = do_bootm (cmdtp, 0, 1, local_args);
-    }
-    return rcode;
+    return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 
 /*-----------------------------------------------------------------------------
diff --git a/common/cmd_ide.c b/common/cmd_ide.c
index a1f7e57..07890e7 100644
--- a/common/cmd_ide.c
+++ b/common/cmd_ide.c
@@ -356,7 +356,6 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	ulong addr, cnt;
 	disk_partition_t info;
 	image_header_t *hdr;
-	int rcode = 0;
 #if defined(CONFIG_FIT)
 	const void *fit_hdr = NULL;
 #endif
@@ -495,19 +494,7 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 	load_addr = addr;
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
-		char *local_args[2];
-
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-
-		printf ("Automatic boot of image at addr 0x%08lX ...\n", addr);
-
-		do_bootm (cmdtp, 0, 1, local_args);
-		rcode = 1;
-	}
-	return rcode;
+	return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 
 /* ------------------------------------------------------------------------- */
diff --git a/common/cmd_nand.c b/common/cmd_nand.c
index 7bd37de..92ae186 100644
--- a/common/cmd_nand.c
+++ b/common/cmd_nand.c
@@ -799,19 +799,7 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,
 
 	load_addr = addr;
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep, "yes") == 0)) {
-		char *local_args[2];
-
-		local_args[0] = cmd;
-		local_args[1] = NULL;
-
-		printf("Automatic boot of image at addr 0x%08lx ...\n", addr);
-
-		do_bootm(cmdtp, 0, 1, local_args);
-		return 1;
-	}
-	return 0;
+	return bootm_maybe_autostart(cmdtp, cmd);
 }
 
 int do_nandboot(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
diff --git a/common/cmd_net.c b/common/cmd_net.c
index 8c6f5c8..322839a 100644
--- a/common/cmd_net.c
+++ b/common/cmd_net.c
@@ -210,17 +210,8 @@ netboot_common (proto_t proto, cmd_tbl_t *cmdtp, int argc, char * const argv[])
 	/* flush cache */
 	flush_cache(load_addr, size);
 
-	/* Loading ok, check if we should attempt an auto-start */
-	if (((s = getenv("autostart")) != NULL) && (strcmp(s,"yes") == 0)) {
-		char *local_args[2];
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-
-		printf ("Automatic boot of image at addr 0x%08lX ...\n",
-			load_addr);
-		show_boot_progress (82);
-		rcode = do_bootm (cmdtp, 0, 1, local_args);
-	}
+	show_boot_progress (82);
+	rcode = bootm_maybe_autostart(cmdtp, argv[0]);
 
 	if (rcode < 0)
 		show_boot_progress (-83);
diff --git a/common/cmd_scsi.c b/common/cmd_scsi.c
index be4fe74..8019ada 100644
--- a/common/cmd_scsi.c
+++ b/common/cmd_scsi.c
@@ -210,7 +210,6 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	ulong addr, cnt;
 	disk_partition_t info;
 	image_header_t *hdr;
-	int rcode = 0;
 #if defined(CONFIG_FIT)
 	const void *fit_hdr = NULL;
 #endif
@@ -326,15 +325,7 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 	flush_cache (addr, (cnt+1)*info.blksz);
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
-		char *local_args[2];
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-		printf ("Automatic boot of image at addr 0x%08lX ...\n", addr);
-		rcode = do_bootm (cmdtp, 0, 1, local_args);
-	}
-	 return rcode;
+	return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 
 /*********************************************************************************
diff --git a/common/cmd_usb.c b/common/cmd_usb.c
index b5731a7..efec895 100644
--- a/common/cmd_usb.c
+++ b/common/cmd_usb.c
@@ -356,7 +356,7 @@ int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 	char *boot_device = NULL;
 	char *ep;
-	int dev, part = 1, rcode;
+	int dev, part = 1;
 	ulong addr, cnt;
 	disk_partition_t info;
 	image_header_t *hdr;
@@ -490,16 +490,7 @@ int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 	flush_cache(addr, (cnt+1)*info.blksz);
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep, "yes") == 0)) {
-		char *local_args[2];
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-		printf("Automatic boot of image@addr 0x%08lX ...\n", addr);
-		rcode = do_bootm(cmdtp, 0, 1, local_args);
-		return rcode;
-	}
-	return 0;
+	return maybe_autostart(cmdtp, argv[0]);
 }
 #endif /* CONFIG_USB_STORAGE */
 
diff --git a/include/command.h b/include/command.h
index cab9651..f1accd0 100644
--- a/include/command.h
+++ b/include/command.h
@@ -98,7 +98,15 @@ extern int cmd_get_data_size(char* arg, int default_size);
 #ifdef CONFIG_CMD_BOOTD
 extern int do_bootd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 #endif
+#ifdef CONFIG_CMD_BOOTM
 extern int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
+extern int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd);
+#else
+static inline int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd)
+{
+	return 0;
+}
+#endif
 extern int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 
 #endif	/* __ASSEMBLY__ */
-- 
1.7.5.3

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH] autostart: unify duplicated logic into the bootm code
  2011-06-02 15:18 [U-Boot] [PATCH] autostart: unify duplicated logic into the bootm code Mike Frysinger
@ 2011-06-03 19:41 ` McClintock Matthew-B29882
  2011-06-04  4:07 ` [U-Boot] [PATCH v2] " Mike Frysinger
  2011-06-05 23:43 ` [U-Boot] [PATCH v3] " Mike Frysinger
  2 siblings, 0 replies; 5+ messages in thread
From: McClintock Matthew-B29882 @ 2011-06-03 19:41 UTC (permalink / raw)
  To: u-boot

On Thu, Jun 2, 2011 at 10:18 AM, Mike Frysinger <vapier@gentoo.org> wrote:
> diff --git a/common/cmd_usb.c b/common/cmd_usb.c
> index b5731a7..efec895 100644
> --- a/common/cmd_usb.c
> +++ b/common/cmd_usb.c
> @@ -356,7 +356,7 @@ int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
> ?{
> ? ? ? ?char *boot_device = NULL;
> ? ? ? ?char *ep;
> - ? ? ? int dev, part = 1, rcode;
> + ? ? ? int dev, part = 1;
> ? ? ? ?ulong addr, cnt;
> ? ? ? ?disk_partition_t info;
> ? ? ? ?image_header_t *hdr;
> @@ -490,16 +490,7 @@ int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>
> ? ? ? ?flush_cache(addr, (cnt+1)*info.blksz);
>
> - ? ? ? /* Check if we should attempt an auto-start */
> - ? ? ? if (((ep = getenv("autostart")) != NULL) && (strcmp(ep, "yes") == 0)) {
> - ? ? ? ? ? ? ? char *local_args[2];
> - ? ? ? ? ? ? ? local_args[0] = argv[0];
> - ? ? ? ? ? ? ? local_args[1] = NULL;
> - ? ? ? ? ? ? ? printf("Automatic boot of image at addr 0x%08lX ...\n", addr);
> - ? ? ? ? ? ? ? rcode = do_bootm(cmdtp, 0, 1, local_args);
> - ? ? ? ? ? ? ? return rcode;
> - ? ? ? }
> - ? ? ? return 0;
> + ? ? ? return maybe_autostart(cmdtp, argv[0]);

Typo here... need bootm_maybe_autostart

-M

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH v2] autostart: unify duplicated logic into the bootm code
  2011-06-02 15:18 [U-Boot] [PATCH] autostart: unify duplicated logic into the bootm code Mike Frysinger
  2011-06-03 19:41 ` McClintock Matthew-B29882
@ 2011-06-04  4:07 ` Mike Frysinger
  2011-06-05 23:43 ` [U-Boot] [PATCH v3] " Mike Frysinger
  2 siblings, 0 replies; 5+ messages in thread
From: Mike Frysinger @ 2011-06-04  4:07 UTC (permalink / raw)
  To: u-boot

Rather than having a bunch of random commands handle autostart behavior,
unify the logic in a single place.  This also fixes building of these
different commands when bootm is disabled.

Acked-by: Matthew McClintock <msm@freescale.com>
Acked-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
v2
	- fix usb typo pointed out by Matthew

 common/cmd_bootm.c |   15 +++++++++++++++
 common/cmd_fdc.c   |   15 +--------------
 common/cmd_fdos.c  |   11 +----------
 common/cmd_ide.c   |   15 +--------------
 common/cmd_nand.c  |   14 +-------------
 common/cmd_net.c   |   13 ++-----------
 common/cmd_scsi.c  |   11 +----------
 common/cmd_usb.c   |   13 ++-----------
 include/command.h  |    8 ++++++++
 9 files changed, 32 insertions(+), 83 deletions(-)

diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 18019d6..8982c92 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -707,6 +707,21 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	return 1;
 }
 
+int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd)
+{
+	const char *ep = getenv("autostart");
+
+	if (ep && !strcmp(ep, "yes")) {
+		char *local_args[2];
+		local_args[0] = (char *)cmd;
+		local_args[1] = NULL;
+		printf("Automatic boot of image at addr 0x%08lX ...\n", load_addr);
+		return do_bootm(cmdtp, 0, 1, local_args);
+	}
+
+	return 0;
+}
+
 /**
  * image_get_kernel - verify legacy format kernel image
  * @img_addr: in RAM address of the legacy format image to be verified
diff --git a/common/cmd_fdc.c b/common/cmd_fdc.c
index cdb050c..20ebf6c 100644
--- a/common/cmd_fdc.c
+++ b/common/cmd_fdc.c
@@ -722,7 +722,6 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	unsigned char boot_drive;
 	int i,nrofblk;
 	char *ep;
-	int rcode = 0;
 #if defined(CONFIG_FIT)
 	const void *fit_hdr = NULL;
 #endif
@@ -823,19 +822,7 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	/* Loading ok, update default load address */
 	load_addr = addr;
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
-		char *local_args[2];
-
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-
-		printf ("Automatic boot of image at addr 0x%08lX ...\n", addr);
-
-		do_bootm (cmdtp, 0, 1, local_args);
-		rcode ++;
-	}
-	return rcode;
+	return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 
 U_BOOT_CMD(
diff --git a/common/cmd_fdos.c b/common/cmd_fdos.c
index 2af4ca0..d714af8 100644
--- a/common/cmd_fdos.c
+++ b/common/cmd_fdos.c
@@ -40,7 +40,6 @@ int do_fdosboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
     char *name;
     char *ep;
     int size;
-    int rcode = 0;
     char buf [12];
     int drive = CONFIG_SYS_FDC_DRIVE_NUMBER;
 
@@ -98,15 +97,7 @@ int do_fdosboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
     printf("Floppy DOS load complete: %d bytes loaded to 0x%lx\n",
 	   size, load_addr);
 
-    /* Check if we should attempt an auto-start */
-    if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
-	char *local_args[2];
-	local_args[0] = argv[0];
-	local_args[1] = NULL;
-	printf ("Automatic boot of image at addr 0x%08lX ...\n", load_addr);
-	rcode = do_bootm (cmdtp, 0, 1, local_args);
-    }
-    return rcode;
+    return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 
 /*-----------------------------------------------------------------------------
diff --git a/common/cmd_ide.c b/common/cmd_ide.c
index a1f7e57..07890e7 100644
--- a/common/cmd_ide.c
+++ b/common/cmd_ide.c
@@ -356,7 +356,6 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	ulong addr, cnt;
 	disk_partition_t info;
 	image_header_t *hdr;
-	int rcode = 0;
 #if defined(CONFIG_FIT)
 	const void *fit_hdr = NULL;
 #endif
@@ -495,19 +494,7 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 	load_addr = addr;
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
-		char *local_args[2];
-
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-
-		printf ("Automatic boot of image at addr 0x%08lX ...\n", addr);
-
-		do_bootm (cmdtp, 0, 1, local_args);
-		rcode = 1;
-	}
-	return rcode;
+	return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 
 /* ------------------------------------------------------------------------- */
diff --git a/common/cmd_nand.c b/common/cmd_nand.c
index 7bd37de..92ae186 100644
--- a/common/cmd_nand.c
+++ b/common/cmd_nand.c
@@ -799,19 +799,7 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,
 
 	load_addr = addr;
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep, "yes") == 0)) {
-		char *local_args[2];
-
-		local_args[0] = cmd;
-		local_args[1] = NULL;
-
-		printf("Automatic boot of image at addr 0x%08lx ...\n", addr);
-
-		do_bootm(cmdtp, 0, 1, local_args);
-		return 1;
-	}
-	return 0;
+	return bootm_maybe_autostart(cmdtp, cmd);
 }
 
 int do_nandboot(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
diff --git a/common/cmd_net.c b/common/cmd_net.c
index 8c6f5c8..322839a 100644
--- a/common/cmd_net.c
+++ b/common/cmd_net.c
@@ -210,17 +210,8 @@ netboot_common (proto_t proto, cmd_tbl_t *cmdtp, int argc, char * const argv[])
 	/* flush cache */
 	flush_cache(load_addr, size);
 
-	/* Loading ok, check if we should attempt an auto-start */
-	if (((s = getenv("autostart")) != NULL) && (strcmp(s,"yes") == 0)) {
-		char *local_args[2];
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-
-		printf ("Automatic boot of image at addr 0x%08lX ...\n",
-			load_addr);
-		show_boot_progress (82);
-		rcode = do_bootm (cmdtp, 0, 1, local_args);
-	}
+	show_boot_progress (82);
+	rcode = bootm_maybe_autostart(cmdtp, argv[0]);
 
 	if (rcode < 0)
 		show_boot_progress (-83);
diff --git a/common/cmd_scsi.c b/common/cmd_scsi.c
index be4fe74..8019ada 100644
--- a/common/cmd_scsi.c
+++ b/common/cmd_scsi.c
@@ -210,7 +210,6 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	ulong addr, cnt;
 	disk_partition_t info;
 	image_header_t *hdr;
-	int rcode = 0;
 #if defined(CONFIG_FIT)
 	const void *fit_hdr = NULL;
 #endif
@@ -326,15 +325,7 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 	flush_cache (addr, (cnt+1)*info.blksz);
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
-		char *local_args[2];
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-		printf ("Automatic boot of image at addr 0x%08lX ...\n", addr);
-		rcode = do_bootm (cmdtp, 0, 1, local_args);
-	}
-	 return rcode;
+	return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 
 /*********************************************************************************
diff --git a/common/cmd_usb.c b/common/cmd_usb.c
index b5731a7..968bdf3 100644
--- a/common/cmd_usb.c
+++ b/common/cmd_usb.c
@@ -356,7 +356,7 @@ int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 	char *boot_device = NULL;
 	char *ep;
-	int dev, part = 1, rcode;
+	int dev, part = 1;
 	ulong addr, cnt;
 	disk_partition_t info;
 	image_header_t *hdr;
@@ -490,16 +490,7 @@ int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 	flush_cache(addr, (cnt+1)*info.blksz);
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep, "yes") == 0)) {
-		char *local_args[2];
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-		printf("Automatic boot of image@addr 0x%08lX ...\n", addr);
-		rcode = do_bootm(cmdtp, 0, 1, local_args);
-		return rcode;
-	}
-	return 0;
+	return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 #endif /* CONFIG_USB_STORAGE */
 
diff --git a/include/command.h b/include/command.h
index cab9651..f1accd0 100644
--- a/include/command.h
+++ b/include/command.h
@@ -98,7 +98,15 @@ extern int cmd_get_data_size(char* arg, int default_size);
 #ifdef CONFIG_CMD_BOOTD
 extern int do_bootd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 #endif
+#ifdef CONFIG_CMD_BOOTM
 extern int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
+extern int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd);
+#else
+static inline int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd)
+{
+	return 0;
+}
+#endif
 extern int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 
 #endif	/* __ASSEMBLY__ */
-- 
1.7.5.3

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH v3] autostart: unify duplicated logic into the bootm code
  2011-06-02 15:18 [U-Boot] [PATCH] autostart: unify duplicated logic into the bootm code Mike Frysinger
  2011-06-03 19:41 ` McClintock Matthew-B29882
  2011-06-04  4:07 ` [U-Boot] [PATCH v2] " Mike Frysinger
@ 2011-06-05 23:43 ` Mike Frysinger
  2011-07-25 20:18   ` Wolfgang Denk
  2 siblings, 1 reply; 5+ messages in thread
From: Mike Frysinger @ 2011-06-05 23:43 UTC (permalink / raw)
  To: u-boot

Rather than having a bunch of random commands handle autostart behavior,
unify the logic in a single place.  This also fixes building of these
different commands when bootm is disabled.

Acked-by: Matthew McClintock <msm@freescale.com>
Acked-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
v3
	- fix unused warnings arising from variables no longer being used

 common/cmd_bootm.c |   15 +++++++++++++++
 common/cmd_fdc.c   |   16 +---------------
 common/cmd_fdos.c  |   11 +----------
 common/cmd_ide.c   |   15 +--------------
 common/cmd_nand.c  |   16 ++--------------
 common/cmd_net.c   |   13 ++-----------
 common/cmd_scsi.c  |   11 +----------
 common/cmd_usb.c   |   13 ++-----------
 include/command.h  |    8 ++++++++
 9 files changed, 33 insertions(+), 85 deletions(-)

diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 18019d6..8982c92 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -707,6 +707,21 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	return 1;
 }
 
+int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd)
+{
+	const char *ep = getenv("autostart");
+
+	if (ep && !strcmp(ep, "yes")) {
+		char *local_args[2];
+		local_args[0] = (char *)cmd;
+		local_args[1] = NULL;
+		printf("Automatic boot of image at addr 0x%08lX ...\n", load_addr);
+		return do_bootm(cmdtp, 0, 1, local_args);
+	}
+
+	return 0;
+}
+
 /**
  * image_get_kernel - verify legacy format kernel image
  * @img_addr: in RAM address of the legacy format image to be verified
diff --git a/common/cmd_fdc.c b/common/cmd_fdc.c
index cdb050c..40d12f6 100644
--- a/common/cmd_fdc.c
+++ b/common/cmd_fdc.c
@@ -721,8 +721,6 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	image_header_t *hdr;  /* used for fdc boot */
 	unsigned char boot_drive;
 	int i,nrofblk;
-	char *ep;
-	int rcode = 0;
 #if defined(CONFIG_FIT)
 	const void *fit_hdr = NULL;
 #endif
@@ -823,19 +821,7 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	/* Loading ok, update default load address */
 	load_addr = addr;
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
-		char *local_args[2];
-
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-
-		printf ("Automatic boot of image at addr 0x%08lX ...\n", addr);
-
-		do_bootm (cmdtp, 0, 1, local_args);
-		rcode ++;
-	}
-	return rcode;
+	return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 
 U_BOOT_CMD(
diff --git a/common/cmd_fdos.c b/common/cmd_fdos.c
index 2af4ca0..d714af8 100644
--- a/common/cmd_fdos.c
+++ b/common/cmd_fdos.c
@@ -40,7 +40,6 @@ int do_fdosboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
     char *name;
     char *ep;
     int size;
-    int rcode = 0;
     char buf [12];
     int drive = CONFIG_SYS_FDC_DRIVE_NUMBER;
 
@@ -98,15 +97,7 @@ int do_fdosboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
     printf("Floppy DOS load complete: %d bytes loaded to 0x%lx\n",
 	   size, load_addr);
 
-    /* Check if we should attempt an auto-start */
-    if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
-	char *local_args[2];
-	local_args[0] = argv[0];
-	local_args[1] = NULL;
-	printf ("Automatic boot of image at addr 0x%08lX ...\n", load_addr);
-	rcode = do_bootm (cmdtp, 0, 1, local_args);
-    }
-    return rcode;
+    return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 
 /*-----------------------------------------------------------------------------
diff --git a/common/cmd_ide.c b/common/cmd_ide.c
index a1f7e57..07890e7 100644
--- a/common/cmd_ide.c
+++ b/common/cmd_ide.c
@@ -356,7 +356,6 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	ulong addr, cnt;
 	disk_partition_t info;
 	image_header_t *hdr;
-	int rcode = 0;
 #if defined(CONFIG_FIT)
 	const void *fit_hdr = NULL;
 #endif
@@ -495,19 +494,7 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 	load_addr = addr;
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
-		char *local_args[2];
-
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-
-		printf ("Automatic boot of image at addr 0x%08lX ...\n", addr);
-
-		do_bootm (cmdtp, 0, 1, local_args);
-		rcode = 1;
-	}
-	return rcode;
+	return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 
 /* ------------------------------------------------------------------------- */
diff --git a/common/cmd_nand.c b/common/cmd_nand.c
index 7bd37de..53fe17b 100644
--- a/common/cmd_nand.c
+++ b/common/cmd_nand.c
@@ -724,7 +724,7 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,
 			   ulong offset, ulong addr, char *cmd)
 {
 	int r;
-	char *ep, *s;
+	char *s;
 	size_t cnt;
 	image_header_t *hdr;
 #if defined(CONFIG_FIT)
@@ -799,19 +799,7 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,
 
 	load_addr = addr;
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep, "yes") == 0)) {
-		char *local_args[2];
-
-		local_args[0] = cmd;
-		local_args[1] = NULL;
-
-		printf("Automatic boot of image at addr 0x%08lx ...\n", addr);
-
-		do_bootm(cmdtp, 0, 1, local_args);
-		return 1;
-	}
-	return 0;
+	return bootm_maybe_autostart(cmdtp, cmd);
 }
 
 int do_nandboot(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
diff --git a/common/cmd_net.c b/common/cmd_net.c
index 8c6f5c8..064de49 100644
--- a/common/cmd_net.c
+++ b/common/cmd_net.c
@@ -210,17 +210,8 @@ netboot_common (proto_t proto, cmd_tbl_t *cmdtp, int argc, char * const argv[])
 	/* flush cache */
 	flush_cache(load_addr, size);
 
-	/* Loading ok, check if we should attempt an auto-start */
-	if (((s = getenv("autostart")) != NULL) && (strcmp(s,"yes") == 0)) {
-		char *local_args[2];
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-
-		printf ("Automatic boot of image at addr 0x%08lX ...\n",
-			load_addr);
-		show_boot_progress (82);
-		rcode = do_bootm (cmdtp, 0, 1, local_args);
-	}
+	show_boot_progress(82);
+	rcode = bootm_maybe_autostart(cmdtp, argv[0]);
 
 	if (rcode < 0)
 		show_boot_progress (-83);
diff --git a/common/cmd_scsi.c b/common/cmd_scsi.c
index be4fe74..8019ada 100644
--- a/common/cmd_scsi.c
+++ b/common/cmd_scsi.c
@@ -210,7 +210,6 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	ulong addr, cnt;
 	disk_partition_t info;
 	image_header_t *hdr;
-	int rcode = 0;
 #if defined(CONFIG_FIT)
 	const void *fit_hdr = NULL;
 #endif
@@ -326,15 +325,7 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 	flush_cache (addr, (cnt+1)*info.blksz);
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
-		char *local_args[2];
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-		printf ("Automatic boot of image at addr 0x%08lX ...\n", addr);
-		rcode = do_bootm (cmdtp, 0, 1, local_args);
-	}
-	 return rcode;
+	return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 
 /*********************************************************************************
diff --git a/common/cmd_usb.c b/common/cmd_usb.c
index b5731a7..968bdf3 100644
--- a/common/cmd_usb.c
+++ b/common/cmd_usb.c
@@ -356,7 +356,7 @@ int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 	char *boot_device = NULL;
 	char *ep;
-	int dev, part = 1, rcode;
+	int dev, part = 1;
 	ulong addr, cnt;
 	disk_partition_t info;
 	image_header_t *hdr;
@@ -490,16 +490,7 @@ int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 	flush_cache(addr, (cnt+1)*info.blksz);
 
-	/* Check if we should attempt an auto-start */
-	if (((ep = getenv("autostart")) != NULL) && (strcmp(ep, "yes") == 0)) {
-		char *local_args[2];
-		local_args[0] = argv[0];
-		local_args[1] = NULL;
-		printf("Automatic boot of image@addr 0x%08lX ...\n", addr);
-		rcode = do_bootm(cmdtp, 0, 1, local_args);
-		return rcode;
-	}
-	return 0;
+	return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 #endif /* CONFIG_USB_STORAGE */
 
diff --git a/include/command.h b/include/command.h
index cab9651..f1accd0 100644
--- a/include/command.h
+++ b/include/command.h
@@ -98,7 +98,15 @@ extern int cmd_get_data_size(char* arg, int default_size);
 #ifdef CONFIG_CMD_BOOTD
 extern int do_bootd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 #endif
+#ifdef CONFIG_CMD_BOOTM
 extern int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
+extern int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd);
+#else
+static inline int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd)
+{
+	return 0;
+}
+#endif
 extern int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 
 #endif	/* __ASSEMBLY__ */
-- 
1.7.5.3

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH v3] autostart: unify duplicated logic into the bootm code
  2011-06-05 23:43 ` [U-Boot] [PATCH v3] " Mike Frysinger
@ 2011-07-25 20:18   ` Wolfgang Denk
  0 siblings, 0 replies; 5+ messages in thread
From: Wolfgang Denk @ 2011-07-25 20:18 UTC (permalink / raw)
  To: u-boot

Dear Mike Frysinger,

In message <1307317382-22108-1-git-send-email-vapier@gentoo.org> you wrote:
> Rather than having a bunch of random commands handle autostart behavior,
> unify the logic in a single place.  This also fixes building of these
> different commands when bootm is disabled.
> 
> Acked-by: Matthew McClintock <msm@freescale.com>
> Acked-by: Scott Wood <scottwood@freescale.com>
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
> ---
> v3
> 	- fix unused warnings arising from variables no longer being used
> 
>  common/cmd_bootm.c |   15 +++++++++++++++
>  common/cmd_fdc.c   |   16 +---------------
>  common/cmd_fdos.c  |   11 +----------
>  common/cmd_ide.c   |   15 +--------------
>  common/cmd_nand.c  |   16 ++--------------
>  common/cmd_net.c   |   13 ++-----------
>  common/cmd_scsi.c  |   11 +----------
>  common/cmd_usb.c   |   13 ++-----------
>  include/command.h  |    8 ++++++++
>  9 files changed, 33 insertions(+), 85 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Uncontrolled power will turn even saints into savages. And we can all
be counted on to live down to our lowest impulses.
	-- Parmen, "Plato's Stepchildren", stardate 5784.3

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-07-25 20:18 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-02 15:18 [U-Boot] [PATCH] autostart: unify duplicated logic into the bootm code Mike Frysinger
2011-06-03 19:41 ` McClintock Matthew-B29882
2011-06-04  4:07 ` [U-Boot] [PATCH v2] " Mike Frysinger
2011-06-05 23:43 ` [U-Boot] [PATCH v3] " Mike Frysinger
2011-07-25 20:18   ` Wolfgang Denk

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.