Hi Adam,

MMC/SD boot is broken on OMAP-L138 LCDK. This is since v2018.11. 
v2018.09 is fine.

The first breakage occurred with commit 21af33ed0319 ("ARM: davinci: 
omapl138_lcdk: Enable DM_MMC"). This commit moved to DM_MMC for U-Boot 
while keeping legacy mode for SPL.

The "#ifndef CONFIG_DM_MMC" introduced by this commit is incorrect I 
think because CONFIG_DM_MMC is defined in SPL build too and because of 
this board_mmc_init() never gets defined. I think the intent was to 
define board_mmc_init() for SPL case, and for that the following diff 
should do:

diff --git a/board/davinci/da8xxevm/omapl138_lcdk.c 
b/board/davinci/da8xxevm/omapl138_lcdk.c
index 2c2f885d43e4..fe1bf4410145 100644
--- a/board/davinci/da8xxevm/omapl138_lcdk.c
+++ b/board/davinci/da8xxevm/omapl138_lcdk.c
@@ -353,7 +353,7 @@ int misc_init_r(void)
        return 0;
 }
 
-#ifndef CONFIG_DM_MMC
+#if !CONFIG_IS_ENABLED(DM_MMC)
 #ifdef CONFIG_MMC_DAVINCI
 static struct davinci_mmc mmc_sd0 = {
        .reg_base = (struct davinci_mmc_regs *)DAVINCI_MMC_SD0_BASE,


With this fixed, MMC/SD boot is still broken after commit 15b8c7505819 
("davinci: da850evm/omapl138-lcdk: Move BSS to SDRAM because SRAM is 
full").

After this commit, mmc_initialize() in drivers/mmc/mmc.c fails because 
the static variable 'initialized' does not get initialized to 0 as 
intended in code and gets set to a random value because of which no 
MMC/SD device gets registered. I did notice that 'initialized' is in 
BSS, so I believe after this commit BSS is not getting set to 0.

Thanks,
Sekhar
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to