linux/arch/avr32
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
..
boards atmel-mci: Platform code for supporting multiple mmc slots 2008-10-05 20:39:21 +02:00
boot avr32: add .gitignore files 2008-09-19 18:21:29 +02:00
configs avr32: Update defconfigs 2008-08-08 12:44:41 +02:00
include/asm atmel-mci: support multiple mmc slots 2008-10-05 20:39:21 +02:00
kernel avr32: nmi_enter() without nmi_exit() 2008-09-19 20:08:08 +02:00
lib avr32: add generic_find_next_le_bit bit function 2008-09-19 18:21:30 +02:00
mach-at32ap atmel-mci: Platform code for supporting multiple mmc slots 2008-10-05 20:39:21 +02:00
mm avr32: use generic show_mem() 2008-07-26 12:00:10 -07:00
oprofile avr32: Delete mostly unused header asm/intc.h 2008-04-19 20:40:07 -04:00
Kconfig gpiolib: allow user-selection 2008-07-25 10:53:30 -07:00
Kconfig.debug [AVR32] Include instrumentation menu 2008-01-25 08:31:40 +01:00
Makefile avr32: Remove include/asm-avr32/arch-at32ap 2008-08-08 12:31:55 +02:00