linux-stable-rt/arch/avr32/include/asm
Haavard Skinnemoen 965ebf33ea atmel-mci: support multiple mmc slots
The Atmel MCI controller can drive multiple cards through separate sets
of pins, but only one at a time. This patch adds support for
multiplexing access to the controller so that multiple card slots can be
used as if they were hooked up to separate mmc controllers.

The atmel-mci driver registers each slot as a separate mmc_host. Both
access the same common controller state, but they also have some state
on their own for card detection/write protect handling, and separate
shadows of the MR and SDCR registers.

When one of the slots receives a request from the mmc core, the common
controller state is checked. If it's idle, the request is submitted
immediately. If not, the request is added to a queue. When a request is
done, the queue is checked and if there is a queued request, it is
submitted before the completion callback is called.

This patch also includes a few cleanups and fixes, including a locking
overhaul. I had to change the locking extensively in any case, so I
might as well try to get it right. The driver no longer takes any
irq-safe locks, which may or may not improve the overall system
performance.

This patch also adds a bit of documentation of the internal data
structures.

Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
2008-10-05 20:39:21 +02:00
..
mach
Kbuild
a.out.h
addrspace.h
asm.h
atmel-mci.h atmel-mci: support multiple mmc slots 2008-10-05 20:39:21 +02:00
atomic.h
auxvec.h
bitops.h
bug.h
bugs.h
byteorder.h
cache.h
cachectl.h
cacheflush.h
checksum.h
cputime.h
current.h
delay.h
device.h
div64.h
dma-mapping.h
dma.h
elf.h
emergency-restart.h
errno.h
fb.h
fcntl.h
futex.h
gpio.h
hardirq.h
hw_irq.h
io.h
ioctl.h
ioctls.h
ipcbuf.h
irq.h
irq_regs.h
irqflags.h
kdebug.h
kmap_types.h
kprobes.h
linkage.h
local.h
mman.h
mmu.h
mmu_context.h
module.h
msgbuf.h
mutex.h
numnodes.h
ocd.h
page.h
param.h
pci.h
percpu.h
pgalloc.h
pgtable-2level.h
pgtable.h
poll.h
posix_types.h
processor.h
ptrace.h
resource.h
scatterlist.h
sections.h
sembuf.h
serial.h
setup.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
socket.h
sockios.h
stat.h
statfs.h
string.h
sysreg.h
system.h
termbits.h
termios.h
thread_info.h
timex.h
tlb.h
tlbflush.h
topology.h
traps.h
types.h
uaccess.h
ucontext.h
unaligned.h
unistd.h
user.h
xor.h