Messages in this thread | | | Date | Tue, 18 Sep 2012 14:20:53 +0200 | Subject | Re: [PATCH] dmaengine: add dmanegine slave map api's | From | Linus Walleij <> |
| |
On Tue, Sep 18, 2012 at 5:18 AM, Vinod Koul <vinod.koul@linux.intel.com> wrote: > On Mon, 2012-09-17 at 22:57 +0100, Russell King - ARM Linux wrote: >> >> Except that we expose one 'channel' per mux setting, so as far as DMA >> engine goes, the mux number _is_ the channel number - which is the same >> approach taken by the PL08x and sa11x0 DMA engine drivers. It is the >> only sane approach to dealing with N hardware channels vs >>N clients. > Sure that makes things easy in dmaengine code. > > So we allocate channel number given by slave id (if set) or first free > channel. This would also mean people need to update their drivers to use > virtual channel which indeed is a good idea :)
Yeah, then just to complicate the world the DMA40 has "logical channels", which is basically hardware-virtual channels multiplexed over physical channels (so the hardware does some round-robin and queueing).
So we're actually a bit like: clients = logical HW channels > physical channels ...
And since using logical channels has a performance impact we have hacks in place to lock down a physical channel for a certain client like MMC.
But we're probably the odd exception here so nevermind. One day we may test to rip out the logical channel handling and use Russell's virtual channel lib to run the show as an experiment.
Yours, Linus Walleij
| |