Haavard Skinnemoen
7d2be0749a
atmel-mci: Driver for Atmel on-chip MMC controllers
...
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=682
Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2008-07-15 14:14:49 +02:00
..
arch-at32ap
atmel-mci: Driver for Atmel on-chip MMC controllers
2008-07-15 14:14:49 +02:00
mach
[PATCH] atmel_serial: Rename at91_register_uart_fns
2006-10-04 10:25:05 -07:00
a.out.h
aout: move STACK_TOP[_MAX] to asm/processor.h
2008-02-08 09:22:29 -08:00
addrspace.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
asm.h
avr32: Use constants from sysreg.h in asm.h
2008-04-19 20:40:07 -04:00
atmel-mci.h
atmel-mci: Driver for Atmel on-chip MMC controllers
2008-07-15 14:14:49 +02:00
atomic.h
[AVR32] Fix atomic_add_unless() and atomic_sub_unless()
2007-07-18 20:47:04 +02:00
auxvec.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
bitops.h
forbid asm/bitops.h direct inclusion
2007-10-19 11:53:41 -07:00
bug.h
Fix WARN_ON() on bitfield ops for all other archs
2007-08-01 20:45:38 -07:00
bugs.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
byteorder.h
avr32: Work around byteswap bug in gcc < 4.2
2008-03-10 13:32:33 +01:00
cache.h
[AVR32] Define ARCH_KMALLOC_MINALIGN to L1_CACHE_BYTES
2007-06-14 18:30:50 +02:00
cachectl.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
cacheflush.h
[AVR32] Fix copy_to_user_page() breakage
2007-12-07 14:54:47 +01:00
checksum.h
Remove a couple final references to obsolete verify_area().
2007-02-09 15:01:56 +01:00
cputime.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
current.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
delay.h
Fix __const_udelay declaration and definition mismatches
2008-02-06 10:41:06 -08:00
device.h
Driver core: add dev_archdata to struct device
2006-12-01 14:52:01 -08:00
div64.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
dma-mapping.h
AVR32: Fix sg_page breakage
2007-10-24 10:16:02 +02:00
dma.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
elf.h
Cleanup asm/{elf,page,user}.h: #ifdef __KERNEL__ is no longer needed
2008-02-07 08:42:30 -08:00
emergency-restart.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
errno.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
fb.h
fbdev: detect primary display device
2007-07-17 10:23:11 -07:00
fcntl.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
futex.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
gpio.h
[AVR32] GPIO API implementation
2007-02-09 15:01:58 +01:00
hardirq.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
hw_irq.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
io.h
Remove dma_cache_(wback|inv|wback_inv) functions
2007-10-17 08:42:57 -07:00
ioctl.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
ioctls.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
ipcbuf.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
irq.h
avr32: Delete mostly unused header asm/intc.h
2008-04-19 20:40:07 -04:00
irq_regs.h
[PATCH] IRQ: Fix AVR32 breakage
2006-10-11 11:14:14 -07:00
irqflags.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
Kbuild
[AVR32] Fix typo in include/asm-avr32/Kbuild
2007-03-07 10:50:27 +01:00
kdebug.h
[AVR32] NMI debugging
2008-01-25 08:31:43 +01:00
kmap_types.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
kprobes.h
kprobes: support kretprobe blacklist
2007-10-16 09:43:10 -07:00
kvm.h
kvm: provide kvm.h for all architecture: fixes headers_install
2008-04-02 15:28:18 -07:00
linkage.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
local.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
mman.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
mmu.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
mmu_context.h
avr32: Kill unneeded #include <asm/pgalloc.h> from asm/mmu_context.h
2008-06-27 17:48:05 +02:00
module.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
msgbuf.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
mutex.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
namei.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
numnodes.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
ocd.h
[AVR32] Enable debugging only when needed
2008-01-25 08:31:39 +01:00
page.h
avr32: cleanup - use _AC macro to define PAGE_SIZE
2008-04-19 20:40:06 -04:00
param.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
pci.h
avr32: Provide PCI DMA mapping API
2008-06-27 15:07:01 +02:00
percpu.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
pgalloc.h
avr32: Use a quicklist for PTE allocation as well
2008-07-02 11:01:29 +02:00
pgtable-2level.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
pgtable.h
avr32: Store virtual addresses in the PGD
2008-07-02 11:01:28 +02:00
poll.h
Consolidate asm/poll.h
2007-05-11 08:29:34 -07:00
posix_types.h
asm-*/posix_types.h: scrub __GLIBC__
2008-02-08 09:22:34 -08:00
processor.h
aout: move STACK_TOP[_MAX] to asm/processor.h
2008-02-08 09:22:29 -08:00
ptrace.h
[AVR32] Enable debugging only when needed
2008-01-25 08:31:39 +01:00
resource.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
scatterlist.h
Add CONFIG_DEBUG_SG sg validation
2007-10-22 21:20:03 +02:00
sections.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
semaphore.h
Generic semaphore implementation
2008-04-17 10:42:34 -04:00
sembuf.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
serial.h
avr32: add include/asm-avr32/serial.h
2008-04-19 20:40:10 -04:00
setup.h
Fix name of Russell King in various comments
2008-07-10 18:04:43 -07:00
shmbuf.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
shmparam.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
sigcontext.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
siginfo.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
signal.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
socket.h
[NET]: Introducing socket mark socket option.
2008-01-31 19:27:19 -08:00
sockios.h
[NET]: Introduce SIOCGSTAMPNS ioctl to get timestamps with nanosec resolution
2007-04-25 22:24:04 -07:00
stat.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
statfs.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
string.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
sysreg.h
[AVR32] Implement irqflags trace and lockdep support
2007-12-07 14:52:37 +01:00
system.h
Add cmpxchg_local to avr32
2008-02-07 08:42:31 -08:00
termbits.h
lots-of-architectures: enable arbitary speed tty support
2007-07-10 17:51:13 -07:00
termios.h
[PATCH] consolidate line discipline number definitions
2007-02-11 10:51:26 -08:00
thread_info.h
avr32: Power Management support ("standby" and "mem" modes)
2008-07-02 11:05:01 +02:00
timex.h
read_current_timer() cleanups
2008-02-06 10:41:02 -08:00
tlb.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
tlbflush.h
avr32: Clean up and optimize the TLB operations
2008-07-02 11:01:28 +02:00
topology.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
traps.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
types.h
avr32: types: use <asm-generic/int-*.h> for the avr32 architecture
2008-05-02 16:18:20 -07:00
uaccess.h
[AVR32] Fix compile error with gcc 4.1
2007-04-27 14:21:47 +02:00
ucontext.h
[PATCH] avr32 architecture
2006-09-26 08:48:54 -07:00
unaligned.h
kernel: Move arches to use common unaligned access
2008-04-29 08:06:27 -07:00
unistd.h
Fix timerfd breakage on avr32
2008-02-05 14:37:15 -08:00
user.h
Sanitize the type of struct user.u_ar0
2008-02-07 08:42:30 -08:00
xor.h
add include/asm-avr32/xor.h
2008-04-19 20:40:09 -04:00