[U-Boot] at91sam9g45ekes SDHC/MMC

Andy Fleming afleming at gmail.com
Fri Apr 23 23:58:26 CEST 2010


On Thu, Apr 22, 2010 at 7:51 PM, Rob Emanuele <rob at 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


More information about the U-Boot mailing list