On Thu, Apr 22, 2010 at 7:51 PM, Rob Emanuele <r...@emanuele.us> wrote: > Hi Henry & U-Boot Community, > > I've been experiencing the same errors and frustration you have. > > So I've been looking at this code and these patch sets for a day or > two now. I've done that in conjunction with reading the SD card spec: > http://www.sdcard.org/developers/tech/sdcard/pls/ > > I've come to the conclusion that this code as it stands will not work > with any card that conforms to the SD Physical Layer Simplified > Specification Version 2.0. This includes all SDHC cards and some > non-HC cards that conform to version 2.0. I have a few 1GB cards that > work just fine with the atmel_mci.c code on a 'G45 as it was in rev > 95c44ec485b46ffb43dbdaa299f1491a500fdadf . > > If your SD card is newer, you'll see in the for loop in "sd_init_card" > in atmel_mci.c time out. In the 2.0 spec, you need to perform a CMD8 > (SEND_IF_COND) first to see if your card is a 2.0 card. In CMD8 you > tell the card the voltages you support and if you support HC cards. > Once you send it the right data there, then ACMD41 will not have its > BUSY bit set. That's all well and good, but additionally the CSD > register is in a new format and that needs updating before any of this > will work.
The best solution is to use the MMC framework, which *does* do all of these things that you suggest. It should be fairly straightforward to port the atmel_mci driver to this framework. If you see something lacking, feel free to mention it, or modify the framework. :) Andy _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot