[U-Boot] [PATCH v3 10/10] spl_mmc/CONFIG_SPL_OS_BOOT: Allow environment to determine what to boot

Tom Rini trini at ti.com
Fri Mar 28 17:03:42 CET 2014


We add two new environment variables, falcon_args_file and
falcon_image_file, which when set will override the compiled in default
values for falcon mode.

Signed-off-by: Tom Rini <trini at ti.com>
---
 common/spl/spl_fat.c |   27 +++++++++++++++++++++++++++
 doc/README.falcon    |    4 ++++
 2 files changed, 31 insertions(+)

diff --git a/common/spl/spl_fat.c b/common/spl/spl_fat.c
index 1e532d5..56be943 100644
--- a/common/spl/spl_fat.c
+++ b/common/spl/spl_fat.c
@@ -74,11 +74,38 @@ end:
 int spl_load_image_fat_os(block_dev_desc_t *block_dev, int partition)
 {
 	int err;
+	__maybe_unused char *file;
 
 	err = spl_register_fat_device(block_dev, partition);
 	if (err)
 		return err;
 
+#if defined(CONFIG_SPL_ENV_SUPPORT) && defined(CONFIG_SPL_OS_BOOT)
+	file = getenv("falcon_args_file");
+	if (file) {
+		err = file_fat_read(file, (void *)CONFIG_SYS_SPL_ARGS_ADDR, 0);
+		if (err <= 0) {
+			printf("spl: error reading image %s, err - %d, falling back to default\n",
+			       file, err);
+			goto defaults;
+		}
+		file = getenv("falcon_image_file");
+		if (file) {
+			err = spl_load_image_fat(block_dev, partition, file);
+			if (err != 0) {
+				puts("spl: falling back to default\n");
+				goto defaults;
+			}
+
+			return 0;
+		} else
+			puts("spl: falcon_image_file not set in environment, falling back to default\n");
+	} else
+		puts("spl: falcon_args_file not set in environment, falling back to default\n");
+
+defaults:
+#endif
+
 	err = file_fat_read(CONFIG_SPL_FAT_LOAD_ARGS_NAME,
 			    (void *)CONFIG_SYS_SPL_ARGS_ADDR, 0);
 	if (err <= 0) {
diff --git a/doc/README.falcon b/doc/README.falcon
index bccf6c9..82a254b 100644
--- a/doc/README.falcon
+++ b/doc/README.falcon
@@ -89,6 +89,10 @@ mode.  In this case the following variables may be supported:
 boot_os : 		Set to yes/Yes/true/True/1 to enable booting to OS,
 			any other value to fall back to U-Boot (including
 			unset)
+falcon_args_file :	Filename to load as the 'args' portion of falcon mode
+			rather than the hard-coded value.
+falcon_image_file :	Filename to load as the OS image portion of falcon
+			mode rather than the hard-coded value.
 
 Using spl command
 -----------------
-- 
1.7.9.5



More information about the U-Boot mailing list