Thread (17 messages) 17 messages, 7 authors, 2011-05-12
STALE5554d

[PATCH] mmci: sync DATAEND irq with dma transfer done

From: Linus Walleij <hidden>
Date: 2011-04-19 12:00:17

On Tue, Apr 19, 2011 at 11:20 AM, Russell King - ARM Linux
[off-list ref] wrote:
On Tue, Apr 19, 2011 at 11:02:34AM +0200, Linus Walleij wrote:
quoted
From: Ulf Hansson <redacted>

The end of a dma job must be synced with a DATAEND irq. This will
prevent the mmci driver from ending the mmc request before the
dma driver is completely done. By using DMA_PREP_INTERRUPT we
register a callback function which will is called when from the
dma driver when the dma transfer is completed.
Why is what we currently do not sufficient?
On a high-speeded ux500 the DATAEND IRQ will assert before the
DMA data is actually finished, thus if we start hammering in the next
request we break an ongoing transfer. :-(
This will break the detection of dead DMA controllers like on the ARM
reference platforms, as I've said before.
Yeah ... I'm trying to think of something clever, can we put a
bool sync_dma_job in the vendor data and only activate this
for ux500 and U300 ST variants where we know DMA always
works then?

The only thing I worry about is if the plain vanilla PL180 would
exhibit the same behaviour when used with high-speed DMA, then
we're effectively deactivating a bugfix for it.

Linus
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help