Le 11/02/2026 à 12:49, Peng Fan a écrit :
Hi William,

Thanks for your patch!

Subject: [PATCH v3] arm: imx8m: add boot_device and boot_instance
env variables

Some SoCs have supports for 'boot_device' and 'boot_instance'
environment variable. Those variables help to choose the right boot
media during the execution of the boot command.

The i.MX8M SoC doesn't have support for those variables but provides
internally all the needed information to create those variables.

Fill this lack adding support for those variables in the i.MX8M SoC.

Signed-off-by: William MARTIN <[email protected]>
---
No change log here.
I will add in next patch

  arch/arm/mach-imx/imx8m/soc.c | 72
+++++++++++++++++++++++++++++++++++
  1 file changed, 72 insertions(+)

diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-
imx/imx8m/soc.c index 1fe083ae94f..498b565183b 100644
--- a/arch/arm/mach-imx/imx8m/soc.c
+++ b/arch/arm/mach-imx/imx8m/soc.c
@@ -1472,6 +1472,76 @@ void reset_cpu(void)  #endif

  #if IS_ENABLED(CONFIG_ARCH_MISC_INIT)
+static void setup_boot_mode(void)
+{
+       enum boot_device dev = get_boot_device();
+
+       log_debug("setup_boot_mode = %u\n", dev);
+
+       switch (dev) {
+       case USB_BOOT:
+               env_set("boot_device", "usb");
+               env_set("boot_instance", "0");
+               break;
+
+       case USB2_BOOT:
+               env_set("boot_device", "usb");
+               env_set("boot_instance", "1");
+               break;
+
+       case QSPI_BOOT:
+               env_set("boot_device", "flexspi");
i.MX8MQ does not have flexspi. It is qspi.
i.MX8MM/N/P has flexspi.

Regards
Peng.

Thanks for your feedback.

Does the use of IS_ENABLED(CONFIG_IMX8MQ) to change boot_device from flexspi to qspi is enought ?

Regards,
William


+               env_set("boot_instance", "0");
+               break;
+
+       case SPI_NOR_BOOT:
+               env_set("boot_device", "spi");
+               env_set("boot_instance", "0");
+               break;
+
+       case NAND_BOOT:
+               env_set("boot_device", "nand");
+               env_set("boot_instance", "0");
+               break;
+
+       case SD1_BOOT:
+               env_set("boot_device", "sdcard");
+               env_set("boot_instance", "0");
+               break;
+
+       case SD2_BOOT:
+               env_set("boot_device", "sdcard");
+               env_set("boot_instance", "1");
+               break;
+
+       case SD3_BOOT:
+               env_set("boot_device", "sdcard");
+               env_set("boot_instance", "2");
+               break;
+
+       case MMC1_BOOT:
+               env_set("boot_device", "mmc");
+               env_set("boot_instance", "0");
+               break;
+
+       case MMC2_BOOT:
+               env_set("boot_device", "mmc");
+               env_set("boot_instance", "1");
+               break;
+
+       case MMC3_BOOT:
+               env_set("boot_device", "mmc");
+               env_set("boot_instance", "2");
+               break;
+
+       default:
+               env_set("boot_device", "invalid");
+               env_set("boot_instance", "");
+               log_err("unexpected boot mode = %x\n", dev);
+               break;
+       }
+}
+
  int arch_misc_init(void)
  {
         if (IS_ENABLED(CONFIG_FSL_CAAM)) { @@ -1483,6 +1553,8 @@
int arch_misc_init(void)
                         printf("Failed to initialize caam_jr: %d\n", ret);
         }

+       setup_boot_mode();
+
         return 0;
  }
  #endif
--
2.47.3

Reply via email to