2010/5/2 Russell King - ARM Linux <linux@arm.linux.org.uk>:
OK now I get it.. the point of crux is that you need the drivers to be
coded to switch seamlessly back to interrupt mode and retry with
DMA on next transaction nevertheless if possible.
That is definately possible with the current API, so it's nothing blocking
the stuff pending in Dan's tree.
However when it comes to the PL011/PL180 drivers you got me there,
it surely does assume you either have the channel and can use it
or else there is some permanent error on it.
I'll twist these patches around a bit, it shouldn't be too hard to come up
with some convincing code.
Yep, that's where it kicks in. (What's the name of this DMA controller
BTW? Is that PL080?)
(I read it as MMCI is bidirectional also on the Versatile, as it is
on the U300.)
However: this way of using the DMA dynamically instead of statically
leads to the situation where a UART or two MMCs are using up the
DMA channels and AACI cannot use it, and need to fall back to
interrupts. Since the Audio traffic is likely to be more important, this
is perhaps not so optimal, so a static assignment of DMA channels
may be desired after all in a practical scenario.
But I'll surely make a try to make all DMA allocation from the
PrimeCells dynamic!
Yours,
Linus Walleij
--