[U-Boot] [PATCH 2/3] ARM: imx: cm_fx6: env: support distro boot command

christopher.spinrath at rwth-aachen.de christopher.spinrath at rwth-aachen.de
Sat Dec 9 15:37:42 UTC 2017


From: Christopher Spinrath <christopher.spinrath at rwth-aachen.de>

The current default environment of the cm_fx6 is not suitable for
booting modern distributions.

Instead of extending the custom environment, let's use the distro
boot command, which has been developed for precisely this use case.

If the distro boot command fails, fall back to the old behavior
(except for USB drives where the old behaviour is completely covered
by the distro boot command). That way it is still possible to create
"rescue SD cards" for old installations (e.g. if one messes up the
on-flash environment).

Signed-off-by: Christopher Spinrath <christopher.spinrath at rwth-aachen.de>
---
 configs/cm_fx6_defconfig |  2 ++
 include/configs/cm_fx6.h | 48 ++++++++++++++++++++++++++++--------------------
 2 files changed, 30 insertions(+), 20 deletions(-)

diff --git a/configs/cm_fx6_defconfig b/configs/cm_fx6_defconfig
index 2fe5d655d6..a2e92f283b 100644
--- a/configs/cm_fx6_defconfig
+++ b/configs/cm_fx6_defconfig
@@ -12,9 +12,11 @@ CONFIG_SPL_WATCHDOG_SUPPORT=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_DEFAULT_DEVICE_TREE="imx6q-cm-fx6"
 CONFIG_AHCI=y
+CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6QDL"
 CONFIG_BOOTDELAY=3
+CONFIG_BOOTCOMMAND="run distro_bootcmd; run legacy_bootcmd"
 CONFIG_SPL=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x80
 CONFIG_SPL_I2C_SUPPORT=y
diff --git a/include/configs/cm_fx6.h b/include/configs/cm_fx6.h
index e446caee66..2edbc4650e 100644
--- a/include/configs/cm_fx6.h
+++ b/include/configs/cm_fx6.h
@@ -13,6 +13,10 @@
 
 #include "mx6_common.h"
 
+#ifndef CONFIG_SPL_BUILD
+#include <config_distro_defaults.h>
+#endif
+
 /* Machine config */
 #define CONFIG_SYS_LITTLE_ENDIAN
 #define CONFIG_MACH_TYPE		4273
@@ -62,6 +66,7 @@
 #define CONFIG_ENV_SIZE			(8 * 1024)
 #define CONFIG_ENV_OFFSET		(768 * 1024)
 
+#ifndef CONFIG_SPL_BUILD
 #define CONFIG_EXTRA_ENV_SETTINGS \
 	"fdt_high=0xffffffff\0" \
 	"initrd_high=0xffffffff\0" \
@@ -126,7 +131,6 @@
 	"setupmmcboot=setenv storagetype mmc; setenv storagedev 2;\0" \
 	"setupsataboot=setenv storagetype sata; setenv storagedev 0;\0" \
 	"setupnandboot=setenv storagetype nand;\0" \
-	"setupusbboot=setenv storagetype usb; setenv storagedev 0;\0" \
 	"storagebootcmd=echo Booting from ${storagetype} ...;" \
 			"run ${storagetype}args; run doboot;\0" \
 	"trybootk=if run loadkernel; then " \
@@ -141,29 +145,33 @@
 		"run setboottypem;" \
 		"run trybootk;" \
 		"run setboottypez;" \
-		"run trybootk;\0"
-
-#define CONFIG_BOOTCOMMAND \
-	"run setupmmcboot;" \
-	"mmc dev ${storagedev};" \
-	"if mmc rescan; then " \
-		"run trybootsmz;" \
-	"fi;" \
-	"run setupusbboot;" \
-	"if usb start; then "\
-		"if run loadscript; then " \
-			"run bootscript;" \
+		"run trybootk;\0" \
+	"legacy_bootcmd=" \
+		"run setupmmcboot;" \
+		"mmc dev ${storagedev};" \
+		"if mmc rescan; then " \
+			"run trybootsmz;" \
 		"fi;" \
-	"fi;" \
-	"run setupsataboot;" \
-	"if sata init; then " \
-		"run trybootsmz;" \
-	"fi;" \
-	"run setupnandboot;" \
-	"run nandboot;"
+		"run setupsataboot;" \
+		"if sata init; then " \
+			"run trybootsmz;" \
+		"fi;" \
+		"run setupnandboot;" \
+		"run nandboot;\0" \
+	BOOTENV
 
 #define CONFIG_PREBOOT		"usb start;sf probe"
 
+#define BOOT_TARGET_DEVICES(func) \
+	func(USB, usb, 0) \
+	func(MMC, mmc, 2) \
+	func(SATA, sata, 0)
+
+#include <config_distro_bootcmd.h>
+#else
+#define CONFIG_EXTRA_ENV_SETTINGS
+#endif
+
 /* SPI */
 #define CONFIG_SPI
 #define CONFIG_MXC_SPI
-- 
2.15.0



More information about the U-Boot mailing list