[PATCH] arm: imx: imx9: scmi: Fix booting from USB

Frieder Schrempf frieder.schrempf at kontron.de
Wed Jul 30 08:35:40 CEST 2025


Hi,

Am 28.07.25 um 18:44 schrieb Francesco Dolcini:
> On Mon, Jul 28, 2025 at 11:25:04AM -0300, Fabio Estevam wrote:
>> On Mon, Jul 28, 2025 at 7:29 AM Francesco Dolcini <francesco at dolcini.it> wrote:
>>
>>> You worked on a similar topic, for imx8m, some time ago, commit
>>> d175982c207b ("imx8mn/8mp: Allow booting via USB"). What's your opinion
>>> here? How should we fix this?
>>
>> The solution on the commit you mentioned is related to the
>> i.MX8MN/i.MX8MP boot ROM implementation, and it works there.
>>
>> What confuses me about João's patch is that it was not tested against
>> the mainline U-Boot.
>>
>> Can U-Boot mainline boot over serial download on i.MX95?
>>
>> Adding Tim, as he has been trying to get USB boot to work with i.MX95.
>>
>> I don't have access to any i.MX95 board to try it myself, so I
>> appreciate some help here.
> 
> The issue here is not specific about USB, this is about code assuming
> that the relevant env config options are enabled without checking
> anything AND assuming that ENVL_NOWHERE is working as a default in any
> case.
> 
> See also env_locations in env/env.c and arch_env_get_location()
> 
> Francesco

I have the below patch in our downstream fork to fix the issue mentioned
here for i.MX93. It is derived from Fabio's patch [1]. I'm not sure if
it's correct, though.

[1]
https://source.denx.de/u-boot/u-boot/-/commit/d175982c207bb2ace592d7985cd3f05ab99759d9

Best regards
Frieder


>From 49b028284e36eeb7516f618e31bbf569956295ad Mon Sep 17 00:00:00 2001
From: Frieder Schrempf <frieder.schrempf at kontron.de>
Date: Thu, 16 May 2024 14:27:39 +0200
Subject: [PATCH] arm: imx: imx9: Allow booting via USB

When trying to boot via USB on i.MX93 it is necessary to specify
the U-Boot environment location, otherwise the boot process simply
hangs (unless CONFIG_ENV_IS_NOWHERE is enabled).

Specify the environment location when booting from USB.

Signed-off-by: Frieder Schrempf <frieder.schrempf at kontron.de>
---
 arch/arm/mach-imx/imx9/soc.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/arm/mach-imx/imx9/soc.c b/arch/arm/mach-imx/imx9/soc.c
index 829b3b7b748..5bb0ab871ac 100644
--- a/arch/arm/mach-imx/imx9/soc.c
+++ b/arch/arm/mach-imx/imx9/soc.c
@@ -808,6 +808,14 @@ enum env_location arch_env_get_location(enum
env_operation op, int prio)
                return ENVL_UNKNOWN;

        switch (dev) {
+       case USB_BOOT:
+               if (CONFIG_IS_ENABLED(ENV_IS_IN_SPI_FLASH))
+                       return ENVL_SPI_FLASH;
+               if (CONFIG_IS_ENABLED(ENV_IS_IN_MMC))
+                       return ENVL_MMC;
+               if (CONFIG_IS_ENABLED(ENV_IS_NOWHERE))
+                       return ENVL_NOWHERE;
+               return ENVL_UNKNOWN;
        case QSPI_BOOT:
                if (CONFIG_IS_ENABLED(ENV_IS_IN_SPI_FLASH))
                        return ENVL_SPI_FLASH;
-- 
2.50.1



More information about the U-Boot mailing list