[U-Boot] multichannel mmc strangeness on omap
Steve Sakoman
steve at sakoman.com
Mon Jul 30 15:36:24 CEST 2012
Does anyone have any experience enabling the second or third mmc
channels in u-boot on an omap3 board?
I used the feature successfully a couple of years ago on Overo, but of
course there have been many changes in the mmc code since then.
Here's what I tried for overo with the current head of tree:
diff --git a/board/overo/overo.c b/board/overo/overo.c
index f973870..51315b3 100644
--- a/board/overo/overo.c
+++ b/board/overo/overo.c
@@ -404,6 +404,7 @@ int board_eth_init(bd_t *bis)
int board_mmc_init(bd_t *bis)
{
omap_mmc_init(0, 0, 0);
+ omap_mmc_init(2, 0, 0);
return 0;
}
#endif
The result is a hang after printing: MMC: OMAP SD/MMC 0, SD/MMC 1
After adding a few printf's, it seems that the crash/hang is occurring
when calling env_relocate_spec in env_nand.c, which of course is
completely unrelated code!
Just for grins I tried enabling the second mmc channel instead (i.e
change omap_mmc_init(2, 0, 0) to omap_mmc_init(1, 0, 0)).
This worked as expected. I also tried enabling all three, which
resulted in the same crash. So enabling the third mmc channel seems
to be the issue.
Before I start debugging I thought I would check to see if anyone else
has seen this or has any theories as to why it is happening.
Steve
More information about the U-Boot
mailing list