[primary] Check MMC 0:1 for /extlinux/extlinux.conf and boot
[fallback 1] Check MMC 0:1 zImage and run mmcbootz
[fallback 2] Check MMC 0:1 uImage and run mmcboot
[fallback 3] Check NAND partitions and run nandboot

If 'extlinux.conf' is not found on MMC 0, the previous boot behavior is
followed.

Signed-off-by: Derald D. Woods <woods.techni...@gmail.com>
---
 configs/omap3_evm_defconfig |  2 +-
 include/configs/omap3_evm.h | 94 ++++++++++++++++++++++++++++++++-------------
 2 files changed, 68 insertions(+), 28 deletions(-)

diff --git a/configs/omap3_evm_defconfig b/configs/omap3_evm_defconfig
index f67bcb1895..0c513664fe 100644
--- a/configs/omap3_evm_defconfig
+++ b/configs/omap3_evm_defconfig
@@ -6,8 +6,8 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_SYS_MPUCLK=720
 CONFIG_TARGET_OMAP3_EVM=y
 CONFIG_DISTRO_DEFAULTS=y
-# CONFIG_USE_BOOTCOMMAND is not set
 CONFIG_BOOTDELAY=3
+CONFIG_USE_BOOTCOMMAND=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_DEFAULT_FDT_FILE="omap3-evm.dtb"
 CONFIG_VERSION_VARIABLE=y
diff --git a/include/configs/omap3_evm.h b/include/configs/omap3_evm.h
index df50325ab6..42f2153637 100644
--- a/include/configs/omap3_evm.h
+++ b/include/configs/omap3_evm.h
@@ -86,8 +86,49 @@
 /* Environment */
 #define CONFIG_PREBOOT                  "usb start"
 
+#if !defined(CONFIG_SPL_BUILD)
+
+#include <config_distro_defaults.h>
+
+#define MEM_LAYOUT_ENV_SETTINGS \
+       DEFAULT_LINUX_BOOT_ENV
+
+#if defined(CONFIG_NAND)
+#define BOOTENV_DEV_NAND(devtypeu, devtypel, instance) \
+       "bootcmd_" #devtypel #instance "=" \
+       "run nandboot\0"
+
+#define BOOTENV_DEV_NAME_NAND(devtypeu, devtypel, instance) \
+       #devtypel #instance " "
+#endif /* CONFIG_NAND */
+
+#define BOOTENV_DEV_UIMAGE_MMC(devtypeu, devtypel, instance) \
+       "bootcmd_" #devtypel #instance "=" \
+               "setenv mmcdev " #instance"; " \
+               "run mmcboot\0"
+
+#define BOOTENV_DEV_NAME_UIMAGE_MMC(devtypeu, devtypel, instance) \
+       #devtypel #instance " "
+
+#define BOOTENV_DEV_ZIMAGE_MMC(devtypeu, devtypel, instance) \
+       "bootcmd_" #devtypel #instance "=" \
+               "setenv mmcdev " #instance"; " \
+               "run mmcbootz\0"
+
+#define BOOTENV_DEV_NAME_ZIMAGE_MMC(devtypeu, devtypel, instance) \
+       #devtypel #instance " "
+
+#define BOOT_TARGET_DEVICES(func) \
+       func(MMC, mmc, 0) \
+       func(ZIMAGE_MMC, zimage_mmc, 0) \
+       func(UIMAGE_MMC, uimage_mmc, 0) \
+       func(NAND, nand, 0)
+
+#include <config_distro_bootcmd.h>
+
 #define CONFIG_EXTRA_ENV_SETTINGS \
-       DEFAULT_LINUX_BOOT_ENV \
+       MEM_LAYOUT_ENV_SETTINGS \
+       "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
        "mtdids=" CONFIG_MTDIDS_DEFAULT "\0" \
        "mtdparts=" CONFIG_MTDPARTS_DEFAULT "\0" \
        "bootenv=uEnv.txt\0" \
@@ -107,40 +148,39 @@
        "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
        "importbootenv=echo Importing environment from mmc ...; " \
                "env import -t ${loadaddr} ${filesize}\0" \
-       "bootscript=echo Running bootscript from mmc ...; " \
-               "source ${loadaddr}\0" \
+       "mmcbootenv=" \
+               "mmc dev ${mmcdev}; " \
+               "if mmc rescan && run loadbootenv; then " \
+                       "run importbootenv; " \
+                       "if test -n $uenvcmd; then " \
+                               "echo Running uenvcmd ...; " \
+                               "run uenvcmd; " \
+                       "fi; " \
+               "fi\0" \
        "loaduimage=setenv bootfile uImage; " \
                "fatload mmc ${mmcdev} ${loadaddr} uImage\0" \
        "loadzimage=setenv bootfile zImage; " \
                "fatload mmc ${mmcdev} ${loadaddr} zImage\0" \
-       "loaddtb=fatload mmc ${mmcdev} ${fdtaddr} " CONFIG_DEFAULT_FDT_FILE 
"\0" \
-       "mmcboot=echo Booting ${bootfile} from mmc ...; " \
-               "run mmcargs; " \
-               "bootm ${loadaddr} - ${fdtaddr}\0" \
-       "mmcbootz=echo Booting ${bootfile} from mmc ...; " \
-               "run mmcargs; " \
-               "bootz ${loadaddr} - ${fdtaddr}\0" \
+       "loaddtb=fatload mmc ${mmcdev} ${fdtaddr} ${fdtfile}\0" \
+       "mmcboot=run mmcbootenv; " \
+               "if run loaduimage && run loaddtb; then " \
+                       "echo Booting ${bootfile} from mmc ...; " \
+                       "run mmcargs; " \
+                       "bootm ${loadaddr} - ${fdtaddr}; " \
+               "fi\0" \
+       "mmcbootz=run mmcbootenv; " \
+               "if run loadzimage && run loaddtb; then " \
+                       "echo Booting ${bootfile} from mmc ...; " \
+                       "run mmcargs; " \
+                       "bootz ${loadaddr} - ${fdtaddr};" \
+               "fi\0" \
        "nandboot=echo Booting uImage from nand ...; " \
                "run nandargs; " \
                "nand read ${loadaddr} kernel; " \
                "nand read ${fdtaddr} dtb; " \
-               "bootm ${loadaddr} - ${fdtaddr}\0"
+               "bootm ${loadaddr} - ${fdtaddr}\0" \
+       BOOTENV
 
-#define CONFIG_BOOTCOMMAND \
-       "mmc dev ${mmcdev}; if mmc rescan; then " \
-               "if run loadbootenv; then " \
-                       "run importbootenv; " \
-                       "if test -n $uenvcmd; then " \
-                               "echo Running uenvcmd ...; " \
-                               "run uenvcmd; " \
-                       "fi; " \
-               "else " \
-                       "if run loadzimage && run loaddtb; then " \
-                               "run mmcbootz; fi; " \
-                       "if run loaduimage && run loaddtb; then " \
-                               "run mmcboot; fi; " \
-                       "run nandboot; " \
-               "fi; " \
-       "else run nandboot; fi"
+#endif /* !CONFIG_SPL_BUILD */
 
 #endif /* __CONFIG_H */
-- 
2.14.2

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to