mmc: fsl_esdhc_spl: Call mmc_init() before booting from SD card
authorPali Rohár <pali@kernel.org>
Sat, 2 Apr 2022 22:17:01 +0000 (00:17 +0200)
committerPriyanka Jain <priyanka.jain@nxp.com>
Tue, 26 Apr 2022 11:48:39 +0000 (17:18 +0530)
If env is stored on SD card then U-Boot SPL automatically calls mmc_init()
before it is going to load proper U-Boot from SD card.

If env is not stored on SD card then U-Boot SPL fails to read proper U-Boot
from SD card due to missing mmc_init() call.

So add missing mmc_init() call into fsl_esdhc_spl's mmc_boot() function.
It fixes booting from SD card on P2020 boards without env support in SPL.

mmc_init() returns early if card was already initialized, so there is no
issue with calling this function more times.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
drivers/mmc/fsl_esdhc_spl.c

index b87597a..0146a23 100644 (file)
@@ -77,6 +77,11 @@ void __noreturn mmc_boot(void)
                hang();
        }
 
+       if (mmc_init(mmc)) {
+               puts("spl: mmc device init failed!\n");
+               hang();
+       }
+
 #ifdef CONFIG_FSL_CORENET
        offset = CONFIG_SYS_MMC_U_BOOT_OFFS;
 #else