Hi William, The Subject line ended up super long.
On Wed, Dec 3, 2025 at 7:02 AM William MARTIN <[email protected]> wrote: > > 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. Peng/Ye Li, Could you please help review this patch? Thanks > > Signed-off-by: William MARTIN <[email protected]> > --- > arch/arm/mach-imx/imx8m/soc.c | 67 +++++++++++++++++++++++++++++++++++ > 1 file changed, 67 insertions(+) > > diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c > index 1fe083ae94f..f39f2e90e55 100644 > --- a/arch/arm/mach-imx/imx8m/soc.c > +++ b/arch/arm/mach-imx/imx8m/soc.c > @@ -1472,6 +1472,71 @@ 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 QSPI_BOOT: > + env_set("boot_device", "spi-nand"); > + env_set("boot_instance", "0"); > + break; > + > + case SPI_NOR_BOOT: > + env_set("boot_device", "nor"); > + 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", "1"); > + break; > + > + case SD2_BOOT: > + env_set("boot_device", "sdcard"); > + env_set("boot_instance", "2"); > + break; > + > + case SD3_BOOT: > + env_set("boot_device", "sdcard"); > + env_set("boot_instance", "3"); > + break; > + > + case MMC1_BOOT: > + env_set("boot_device", "mmc"); > + env_set("boot_instance", "1"); > + break; > + > + case MMC2_BOOT: > + env_set("boot_device", "mmc"); > + env_set("boot_instance", "2"); > + break; > + > + case MMC3_BOOT: > + env_set("boot_device", "mmc"); > + env_set("boot_instance", "3"); > + 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 +1548,8 @@ int arch_misc_init(void) > printf("Failed to initialize caam_jr: %d\n", ret); > } > > + setup_boot_mode(); > + > return 0; > } > #endif > -- > 2.47.3 >

