[PATCH v3] arm: imx8m: add boot_device and boot_instance env variables
William MARTIN
william.martin at muxen.fr
Wed Feb 11 14:18:28 CET 2026
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 <william.martin at muxen.fr>
>> ---
> 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
More information about the U-Boot
mailing list