summaryrefslogtreecommitdiffstats
path: root/arch/avr32/mach-at32ap/at32ap700x.c
diff options
context:
space:
mode:
authorHaavard Skinnemoen <haavard.skinnemoen@atmel.com>2008-09-17 20:53:55 +0200
committerHaavard Skinnemoen <haavard.skinnemoen@atmel.com>2008-10-05 20:39:21 +0200
commit965ebf33ea5afb6386f5b57cc71e6572253746b3 (patch)
treea4ee6bdce1a3a9c133c36a5463d12baa089591d9 /arch/avr32/mach-at32ap/at32ap700x.c
parent6b918657b7431e4c5c953b8222ae2f4fc1b2576a (diff)
downloadop-kernel-dev-965ebf33ea5afb6386f5b57cc71e6572253746b3.zip
op-kernel-dev-965ebf33ea5afb6386f5b57cc71e6572253746b3.tar.gz
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>
Diffstat (limited to 'arch/avr32/mach-at32ap/at32ap700x.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud