
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