linux/arch
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
..
alpha [PATCH] fix osf_getdirents() 2008-08-25 01:18:06 -04:00
arm Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb 2008-09-29 08:30:11 -07:00
avr32 atmel-mci: support multiple mmc slots 2008-10-05 20:39:21 +02:00
blackfin Blackfin arch: Fix PM building on BF52x: No ROTWE on BF52x, add USBWE 2008-08-28 17:32:01 +08:00
cris removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
frv FRV: Wire up new system calls 2008-08-01 13:03:49 -07:00
h8300 [h8300] move include/asm-h8300 to arch/h8300/include/asm 2008-08-13 14:26:32 -07:00
ia64 [IA64] Put the space for cpu0 per-cpu area into .data section 2008-09-29 16:39:19 -07:00
m32r m32r/kernel/: cleanups 2008-09-27 18:27:21 +09:00
m68k m68k: Update defconfigs for 2.6.27-rc6 2008-09-10 14:15:29 -07:00
m68knommu m68k{,nommu}: Wire up new system calls 2008-08-11 10:37:34 -07:00
mips [MIPS] SMTC: Fix SMTC dyntick support. 2008-10-03 17:58:58 +01:00
mn10300 MN10300: Fix IRQ handling 2008-10-01 09:40:43 -07:00
parisc lib: Correct printk %pF to work on all architectures 2008-09-09 11:51:15 -07:00
powerpc powerpc: Fix boot hang regression on MPC8544DS 2008-10-02 00:58:49 -05:00
s390 [S390] nohz: Fix __udelay. 2008-10-03 21:55:54 +02:00
sh sh64: resume_kernel fix for kernel oops built with CONFIG_BKL_PREEMPT=y. 2008-09-05 14:51:28 +09:00
sparc sparc: Fix user_regset 'n' field values. 2008-09-12 15:55:44 -07:00
sparc64 sparc64: Fix missing devices due to PCI bridge test in of_create_pci_dev(). 2008-09-22 15:51:54 -07:00
um uml: fix tty-related build error 2008-07-30 09:41:45 -07:00
x86 x86 setup: correct segfault in generation of 32-bit reloc kernel 2008-10-03 13:42:04 -07:00
xtensa remove unneeded #include <linux/ide.h>'s 2008-08-05 18:17:00 +02:00
.gitignore
Kconfig tracehook: CONFIG_HAVE_ARCH_TRACEHOOK 2008-07-26 12:00:09 -07:00