[U-Boot] at91sam9g45ekes SDHC/MMC

Henry Súcart henry.sucart at gmail.com
Mon May 3 16:45:46 CEST 2010


The patch works. Thanks Rob!

This is what I did, in case somebody else is looking for this:

Apply the patch. Add all the other stuff mentioned in the patch link.

Add the #define CONFIG_CMD_MMC 1 and #define CONFIG_CMD_FAT 1 to your board
config file (in my case at91sam9mg45ek.h). I only needed to read from a FAT
partition, so I only enabled that command.

Add an mmc_hw_init() function to the board specific file. In my case the
function is called at91sam9m10g45ekes_mmc_hw_init().

static void at91sam9m10g45ekes_mmc_hw_init(void)
{
       at91_set_A_periph(AT91_PIN_PA0, 0); /* CLK */
       at91_set_A_periph(AT91_PIN_PA1, 1); /* CDA */
       at91_set_A_periph(AT91_PIN_PA2, 1); /* D0 */
       at91_set_A_periph(AT91_PIN_PA3, 1); /* D1 */
       at91_set_A_periph(AT91_PIN_PA4, 1); /* D2 */
       at91_set_A_periph(AT91_PIN_PA5, 1); /* D3 */

       at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_MCI0);
}

(Thanks again Rob).

Before using the fat commands run "mmc rescan 0" (just one time) or the fat
command will hang.



On Wed, Apr 28, 2010 at 4:17 PM, Robert Emanuele <rob at emanuele.us> wrote:

> Andy, Henry, Ulf, and the rest,
>
> I've posted the patch that I'm using for my SD/MMC support.  It is a
> new driver based on some of the code from the original Atmel driver
> that uses the MMC framework.  I've tested it on a at91sam9g45 (ES and
> production chips) and on an ek board and our own board.
>
> I hope this can help you guys out and I hope this can get mainlined
> for others to enjoy.
>
> If the patch is not in your email, here is a link to it in the archives:
> http://lists.denx.de/pipermail/u-boot/2010-April/070816.html
>
> --Rob
>
> On Fri, Apr 23, 2010 at 6:18 PM, Andy Fleming <afleming at gmail.com> wrote:
> > On Fri, Apr 23, 2010 at 6:21 PM, Albin Tonnerre
> > <albin.tonnerre at free-electrons.com> wrote:
> >> On Fri, 23 Apr 2010 16:58 -0500, Andy Fleming wrote :
> >>> 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.  :)
> >>
> >> I did port the atmel_mci driver to the MMC framework and posted the
> results on
> >> this mailing list a few months back. However, some people apparently
> experienced
> >> issues I have never been able to reproduce, and got few review.
> >> I recently adapted the AT91 SD/MMC support patch and the atmel_mci port
> to use
> >> the new C structures access, I'll repost it in a couple days in case
> anyone's
> >> interested.
> >>
> >
> >
> > Yeah, I see that now.  I'm catching up from being in various other
> > project quagmires.  Sadly,
> > I can't apply your patch if people are running into problems with it,
> > but I'd far prefer it.
> >
> > I also don't have such a board, though.  If someone could apply
> > Albin's patches, and try to identify why it's not working, I'd be very
> > appreciative.  :)
> >
> > Andy
> >
>


More information about the U-Boot mailing list