imx: spl: return boot mode for asked MMC device in spl_mmc_boot_mode()
authorAnatolij Gustschin <agust@denx.de>
Thu, 23 Apr 2020 11:07:49 +0000 (13:07 +0200)
committerStefano Babic <sbabic@denx.de>
Fri, 1 May 2020 16:46:55 +0000 (18:46 +0200)
Boards may extend or re-define the boot list in their board_boot_order()
function by modifying spl_boot_list. E.g. a board might boot SPL from a
slow SPI NOR flash and then load the U-Boot from an eMMC or SD-card.
Or it might use additional MMC boot device in spl_boot_list for cases
when the image in SPI NOR flash is not found, so it could fall back to
eMMC, SD-card or another boot device.

Getting the MMC boot mode in spl_mmc will fail when we are trying to
boot from an MMC device in the spl_boot_list and the original board
boot mode (as returned by spl_boot_device()) is not an MMC boot mode.
Fix it by checking the asked MMC boot device from the spl_mmc_boot_mode()
argument.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
arch/arm/mach-imx/spl.c

index 49bb3b9..e583515 100644 (file)
@@ -229,7 +229,7 @@ u32 spl_mmc_boot_mode(const u32 boot_device)
 #ifdef CONFIG_SPL_FORCE_MMC_BOOT
        switch (boot_device) {
 #else
 #ifdef CONFIG_SPL_FORCE_MMC_BOOT
        switch (boot_device) {
 #else
-       switch (spl_boot_device()) {
+       switch (boot_device) {
 #endif
        /* for MMC return either RAW or FAT mode */
        case BOOT_DEVICE_MMC1:
 #endif
        /* for MMC return either RAW or FAT mode */
        case BOOT_DEVICE_MMC1: