summaryrefslogtreecommitdiffstats
path: root/drivers/mmc/host/mxcmmc.c
diff options
context:
space:
mode:
authorAdrian Hunter2010-05-26 23:42:06 +0200
committerLinus Torvalds2010-05-27 18:12:40 +0200
commitb417577d3b9bbb06a4ddc9aa955af9bd503f7242 (patch)
tree32ff825e6d4ee925eff02932b2954a449b060e56 /drivers/mmc/host/mxcmmc.c
parentsdhci: enable multiblock transfers in sdhci-s3c (diff)
downloadkernel-qcow2-linux-b417577d3b9bbb06a4ddc9aa955af9bd503f7242.tar.gz
kernel-qcow2-linux-b417577d3b9bbb06a4ddc9aa955af9bd503f7242.tar.xz
kernel-qcow2-linux-b417577d3b9bbb06a4ddc9aa955af9bd503f7242.zip
omap_hsmmc: improve interrupt synchronisation
The following changes were needed: - do not use in_interrupt() because it will not work with threaded interrupts In addition, the following improvements were made: - ensure DMA is unmapped only after the final DMA interrupt - ensure a request is completed only after the final DMA interrupt - disable controller interrupts when a request is not in progress - remove the spin-lock protecting the start of a new request from an unexpected interrupt because the locking was complicated and a 'req_in_progress' flag suffices (since the spin-lock only defers the unexpected interrupts anyway) - instead use the spin-lock to protect the MMC interrupt handler from the DMA interrupt handler - remove the semaphore preventing DMA from being started while the previous DMA is still in progress - the other changes make that impossible, so it is now a BUG_ON condition - ensure the controller interrupt status is clear before exiting the interrrupt handler In general, these changes make the code safer but do not fix any specific bugs so backporting is not necessary. Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com> Tested-by: Venkatraman S <svenkatr@ti.com> Acked-by: Madhusudhan Chikkature <madhu.cr@ti.com> Acked-by: Tony Lindgren <tony@atomide.com> Cc: <linux-mmc@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/mmc/host/mxcmmc.c')
0 files changed, 0 insertions, 0 deletions