Tegra2: mmc: Support DMA restarts at buffer boundaries
authorAnton staaf <robotboy@chromium.org>
Thu, 10 Nov 2011 11:56:50 +0000 (11:56 +0000)
committerAndy Fleming <afleming@freescale.com>
Sat, 12 Nov 2011 21:39:29 +0000 (15:39 -0600)
commit5a762e2509a2d4b2e86168a2ffbc425087ecd75c
treeab7b84c2789f53550d7051c654f961513d67256b
parent8e42f0d62b9ee5ff5d3b2ddda16d98d5c792719c
Tegra2: mmc: Support DMA restarts at buffer boundaries

Currently if a DMA buffer straddles a buffer alignment boundary
(512KiB) then the DMA engine will pause and generate a DMA
interrupt.  Since the DMA interrupt is not enabled it will hang
the MMC driver.

This patch adds support for restarting the DMA transfer.  The
SYSTEM_ADDRESS register contains the next address that would have
been read/written when a boundary is hit.  So we can read that
and write it back.  The write triggers the resumption of the
transfer.

Signed-off-by: Anton Staaf <robotboy@chromium.org>
Cc: Andy Fleming <afleming@gmail.com>
Cc: Tom Warren <twarren@nvidia.com>
Cc: Stephen Warren <swarren@nvidia.com>
Cc: Albert Aribaud <albert.u.boot@aribaud.net>
drivers/mmc/tegra2_mmc.c