[PATCH 1/6] phytec: change preferred bootdevice dynamically

Benjamin Hahn B.Hahn at phytec.de
Tue Nov 25 18:23:10 CET 2025


Change the preferred bootdevice dynamically based on the device the
U-Boot is loaded from. The same way is already implemented for
imx8mp-libra-fpsc board. Also let standardboot set bootcmd variable
automatically.

Signed-off-by: Benjamin Hahn <B.Hahn at phytec.de>
---
 board/phytec/phycore_imx8mm/phycore-imx8mm.c   | 2 ++
 board/phytec/phycore_imx8mp/phycore-imx8mp.c   | 5 ++++-
 board/phytec/phycore_imx8mp/phycore_imx8mp.env | 6 ------
 configs/phycore-imx8mp_defconfig               | 1 -
 4 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/board/phytec/phycore_imx8mm/phycore-imx8mm.c b/board/phytec/phycore_imx8mm/phycore-imx8mm.c
index 06cffbca3a69..7d569d475e63 100644
--- a/board/phytec/phycore_imx8mm/phycore-imx8mm.c
+++ b/board/phytec/phycore_imx8mm/phycore-imx8mm.c
@@ -41,6 +41,8 @@ int board_late_init(void)
 	switch (get_boot_device()) {
 	case SD2_BOOT:
 		env_set_ulong("mmcdev", 1);
+		if (!strcmp(env_get("boot_targets"), env_get_default("boot_targets")))
+			env_set("boot_targets", "mmc1 mmc2 usb ethernet");
 		break;
 	case MMC3_BOOT:
 		env_set_ulong("mmcdev", 2);
diff --git a/board/phytec/phycore_imx8mp/phycore-imx8mp.c b/board/phytec/phycore_imx8mp/phycore-imx8mp.c
index bf2d5ce01fa5..25cf889d357c 100644
--- a/board/phytec/phycore_imx8mp/phycore-imx8mp.c
+++ b/board/phytec/phycore_imx8mp/phycore-imx8mp.c
@@ -76,13 +76,16 @@ int board_late_init(void)
 	switch (get_boot_device()) {
 	case SD2_BOOT:
 		env_set_ulong("mmcdev", 1);
+		if (!strcmp(env_get("boot_targets"), env_get_default("boot_targets")))
+			env_set("boot_targets", "mmc1 mmc2 usb ethernet");
 		break;
 	case MMC3_BOOT:
 		env_set_ulong("mmcdev", 2);
 		break;
 	case USB_BOOT:
 		printf("Detect USB boot. Will enter fastboot mode!\n");
-		env_set_ulong("dofastboot", 1);
+		if (!strcmp(env_get("bootcmd"), env_get_default("bootcmd")))
+			env_set("bootcmd", "fastboot 0; bootflow scan -lb;");
 		break;
 	default:
 		break;
diff --git a/board/phytec/phycore_imx8mp/phycore_imx8mp.env b/board/phytec/phycore_imx8mp/phycore_imx8mp.env
index 70044997adb8..323199b041b1 100644
--- a/board/phytec/phycore_imx8mp/phycore_imx8mp.env
+++ b/board/phytec/phycore_imx8mp/phycore_imx8mp.env
@@ -1,8 +1,3 @@
-bootcmd=
-	if test ${dofastboot} = 1; then
-		fastboot 0;
-	fi;
-	bootflow scan -lb;
 #ifdef CONFIG_BOOTMETH_RAUC
 bootmeths=rauc script efi
 #else
@@ -12,7 +7,6 @@ boot_targets=mmc2 mmc1 usb ethernet
 bootenv_addr_r=0x49100000
 boot_script_dhcp=boot.scr.uimg
 console=ttymxc0,115200
-dofastboot=0
 fastboot_raw_partition_all=0 4194304
 fastboot_raw_partition_bootloader=64 8128
 fdt_addr_r=0x48000000
diff --git a/configs/phycore-imx8mp_defconfig b/configs/phycore-imx8mp_defconfig
index c497f0bcd913..2fcf7db9e5c8 100644
--- a/configs/phycore-imx8mp_defconfig
+++ b/configs/phycore-imx8mp_defconfig
@@ -38,7 +38,6 @@ CONFIG_BOOTSTD_FULL=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_SYSTEM_SETUP=y
 CONFIG_FDT_FIXUP_PARTITIONS=y
-# CONFIG_USE_BOOTCOMMAND is not set
 CONFIG_DEFAULT_FDT_FILE="oftree"
 CONFIG_SYS_CBSIZE=2048
 CONFIG_SYS_PBSIZE=2074

-- 
2.43.0



More information about the U-Boot mailing list