• Haavard Skinnemoen's avatar
    atmel-mci: Driver for Atmel on-chip MMC controllers · 7d2be074
    Haavard Skinnemoen authored
    This is a driver for the MMC controller on the AP7000 chips from
    Atmel. It should in theory work on AT91 systems too with some
    tweaking, but since the DMA interface is quite different, it's not
    entirely clear if it's worth merging this with the at91_mci driver.
    This driver has been around for a while in BSPs and kernel sources
    provided by Atmel, but this particular version uses the generic DMA
    Engine framework (with the slave extensions) instead of an
    avr32-only DMA controller framework.
    This driver can also use PIO transfers when no DMA channels are
    available, and for transfers where using DMA may be difficult or
    impractical for some reason (e.g. the DMA setup overhead is usually
    not worth it for very short transfers, and badly aligned buffers or
    lengths are difficult to handle.)
    Currently, the driver only support PIO transfers. DMA support has been
    split out to a separate patch to hopefully make it easier to review.
    The driver has been tested using mmc-block and ext3fs on several SD,
    SDHC and MMC+ cards. Reads and writes work fine, with read transfer
    rates up to 3.5 MiB/s on fast cards with debugging disabled.
    The driver has also been tested using the mmc_test module on the same
    cards. All tests except 7, 9, 15 and 17 succeed. The first two are
    unsupported by all the cards I have, so I don't know if the driver
    handles this correctly. The last two fail because the hardware flags a
    Data CRC Error instead of a Data Timeout error. I'm not sure how to deal
    with that.
    Documentation for this controller can be found in many data sheets from
    Atmel, including the AT32AP7000 data sheet which can be found here:
    http://www.atmel.com/dyn/products/datasheets.asp?family_id=682Signed-off-by: default avatarHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
    Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
at32ap700x.c 51.8 KB