[REGRESSION] mmc: "unable to select a mode: -5" on i.MX8M/AM62 platforms

Max Merchel max.merchel at ew.tq-group.com
Thu Jan 8 08:02:13 CET 2026



Am 08.01.26 um 00:15 schrieb Vitor Soares:
> Hi,
> 
> U-Boot 2026.01 fails to initialize MMC devices on multiple platforms
> with "unable to select a mode: -5" during mmc_select_mode().
> 
> Affected platforms:
> - Verdin iMX8M Mini (SPL boot failure - cannot boot at all)
> - Verdin iMX8M Plus (MMC init fails in U-Boot proper - cannot boot)
> - SMARC iMX8M Plus (MMC init fails in U-Boot proper)
> - Verdin AM62 (boot failure, no output)
> 
> All platforms use eMMC and worked correctly prior to this regression.
> 
> Bisect results:
> - Last known good commit: 228810d0bac3
> - Known bad commit: 36aeeb591b0d
> 
> Between these commits, several MMC-related changes were merged. These
> seem particularly relevant:
> commit aebb523a2381 ("mmc: mmc-uclass: Use max-frequency from device tree with
> default handling")
> commit 1e40e419aeb2 ("mmc: sdhci-cadence: Use max-frequency property from device
> tree")
> commit fa7e82127fad ("mmc: sdhci-cadence: Set controller and PHY speed modes for
> SD and eMMC cards")
> 
> Could someone familiar with these recent changes help identify what might have
> changed in the mode selection logic?
> 
> === Example logs ===
> 
> Verdin iMX8M Mini (SPL failure):
> 
> U-Boot SPL 2026.01-0.0.0-devel+git.53c0d5b38795 (Jan 06 2026 - 20:44:27 +0000)
> WDT:   Started watchdog at 30280000 with servicing every 1000ms (60s timeout)
> SEC0:  RNG instantiated
> Trying to boot from MMC1
> unable to select a mode: -5
> spl: mmc init failed with error: -524
> Error: -524
> SPL: Unsupported Boot Device!
> SPL: failed to boot from all boot devices
> ### ERROR ### Please RESET the board ###
> 
> ---
> 
> Verdin iMX8M Plus (U-Boot proper failure):
> 
> U-Boot SPL 2026.01-0.0.0-devel+git.53c0d5b38795 (Jan 06 2026 - 20:44:27 +0000)
> DDR configured as dual rank
> WDT:   Started watchdog at 30280000 with servicing every 1000ms (60s timeout)
> SEC0:  RNG instantiated
> Normal Boot
> Trying to boot from BOOTROM
> Boot Stage: Primary boot
> Find img info 0x?, size 1208151552
> Need continue download 1024
> load_simple_fit: Skip load 'tee': image size is 0!
> NOTICE:  Do not release JR0 to NS as it can be used by HAB
> NOTICE:  BL31: v2.12.0(release):lf-6.12.20-2.0.0-dirty
> NOTICE:  BL31: Built : 08:15:07, May  9 2025
> 
> U-Boot 2026.01-0.0.0-devel+git.53c0d5b38795 (Jan 06 2026 - 20:44:27 +0000)
> 
> CPU:   NXP i.MX8MP[8] Rev1.1 A53 at 1200 MHz
> CPU:   Industrial temperature grade (-40C to 105C) at 23C
> DRAM:  8 GiB
> Core:  309 devices, 31 uclasses, devicetree: separate
> WDT:   Started watchdog at 30280000 with servicing every 1000ms (60s timeout)
> MMC:   FSL_SDHC: 1, FSL_SDHC: 2
> Loading Environment from MMC... unable to select a mode: -5
> 
> Verdin iMX8MP # saveenv
> Saving Environment to MMC... unable to select a mode: -5
> No block device
> Failed (1)
> 
> ---
> 
> SMARC iMX8M Plus:
> 
> U-Boot SPL 2026.01-0.0.0-devel+git.53c0d5b38795 (Jan 06 2026 - 20:44:27 +0000)
> Training FAILED
> DDR configured as single rank
> SEC0:  RNG instantiated
> Normal Boot
> Trying to boot from BOOTROM
> Boot Stage: Primary boot
> Find img info 0x?, size 1208152064
> Need continue download 1024
> load_simple_fit: Skip load 'tee': image size is 0!
> NOTICE:  Do not release JR0 to NS as it can be used by HAB
> NOTICE:  BL31: v2.12.0(release):lf-6.12.20-2.0.0-dirty
> NOTICE:  BL31: Built : 08:15:07, May  9 2025
> 
> U-Boot 2026.01-0.0.0-devel+git.53c0d5b38795 (Jan 06 2026 - 20:44:27 +0000)
> 
> CPU:   NXP i.MX8MP[8] Rev1.1 A53 at 1200 MHz
> CPU:   Industrial temperature grade (-40C to 105C) at 23C
> DRAM:  4 GiB
> Core:  317 devices, 32 uclasses, devicetree: separate
> WDT:   Started watchdog at 30280000 with servicing every 1000ms (60s timeout)
> MMC:   FSL_SDHC: 1, FSL_SDHC: 0
> Loading Environment from MMC... unable to select a mode: -5
> *** Warning - No block device, using default environment
> unable to select a mode: -5
> MMC init failed
> ---
> 
> I'm available to test patches or provide additional debug output if needed.
> 
> Best regards,
> Vitor Soares

Hi Victor,

what frequencies are output when you enable DEBUG output in mmc.c?

I'm currently trying to find a solution for why the SD card and MMC in 
U-Boot (they work fine in SPL) are only running at a minimum frequency 
on the TQMa6 (iMX6) and TQMa6UL (iMX6UL).

My problem comes from commit aebb523a2381 ("mmc: mmc-uclass: Use 
max-frequency from device tree with.


=== Example logs ===

U-Boot SPL 2026.01+g6955caf8885+p13111 (Jan 07 2026 - 15:26:17 +0100)
SD
Trying to boot from MMC2
clock is disabled (0Hz)
clock is enabled (400000Hz)
clock is enabled (50000000Hz)
Device tree: imx6q-mba6a


U-Boot 2026.01+g6955caf8885+p13111 (Jan 07 2026 - 15:26:17 +0100)

CPU:   Freescale i.MX6D rev1.3 at 792MHz
CPU:   Industrial temperature grade (-40C to 105C) at 20C
Reset cause: POR
Model: TQ TQMa6Q on MBa6x
Board: TQMa6D on a MBa6x
Enet workaround: Unknown
DRAM:  1 GiB
Core:  104 devices, 27 uclasses, devicetree: separate
WDT:   Started watchdog at 20bc000 with servicing every 1000ms (128s timeout)
MMC:   FSL_SDHC: 1, FSL_SDHC: 0
Loading Environment from MMC... clock is disabled (0Hz)
clock is enabled (400000Hz)
clock is enabled (400000Hz)
Reading from redundant MMC(1)... OK
In:    serial at 21e8000
Out:   serial at 21e8000
Err:   serial at 21e8000
clock is disabled (0Hz)
clock is enabled (400000Hz)
clock is enabled (400000Hz)
switch to partitions #0, OK
mmc1 is current device

-- 
Best regards,
Max

TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany
Amtsgericht München, HRB 105018
Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider
http://www.tq-group.com/



More information about the U-Boot mailing list