[U-Boot] MMC boot broken on OMAP-L138 LCDK
Sekhar Nori
nsekhar at ti.com
Fri May 17 12:36:43 UTC 2019
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
More information about the U-Boot
mailing list