]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
spl_mmc/CONFIG_SPL_OS_BOOT: Allow environment to determine what to boot
authorTom Rini <trini@ti.com>
Fri, 28 Mar 2014 16:03:42 +0000 (12:03 -0400)
committerTom Rini <trini@ti.com>
Thu, 17 Apr 2014 18:39:54 +0000 (14:39 -0400)
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@ti.com>
common/spl/spl_fat.c
doc/README.falcon

index 1e532d5963e0e0ef84bbf3a90809c9b0aafc982d..56be94388149856ebd40f7daf0ad1eb95d238a1e 100644 (file)
@@ -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) {
index bccf6c95c869388ae6824a50ccb25e378d925104..82a254b2e2565357a97a3479246023bbc02e3dbb 100644 (file)
@@ -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
 -----------------