[PATCH v3] arm: imx8m: add boot_device and boot_instance env variables
Peng Fan
peng.fan at nxp.com
Wed Feb 11 12:49:16 CET 2026
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 <william.martin at muxen.fr>
> ---
No change log here.
> 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.
> + 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
More information about the U-Boot
mailing list