Re: [PATCH 06/13] DMAENGINE: driver for the ARM PL080/PL081 PrimeCells

From: David Woodhouse
Date: Mon Mar 10 2014 - 10:53:14 EST


On Mon, 2014-03-10 at 14:32 +0000, Russell King - ARM Linux wrote:
> Okay, so how do you get the DMA address which is to be programmed into
> the DMA controller - bearing in mind that different devices in the
> system may have different bus:physical offsets?

There's no answer to that in the general case. The question of how you
program it into the DMA controller, and where you *get* the information
from, is very board-specific. As is the question of whether it's even
*possible* for the DMA controller to "fake" the source of its
transactions. It works for PCIe in certain cases (especially in SoCs)
but certainly doesn't work everywhere.

But that's OK, because in the general case we'd just do the sensible
thing and the DMA would appear to come from the DMA controller itself.
We're only talking about adding the *possibility* for doing otherwise,
not making it mandatory.

> ACPI may allow you to work this out for each slave device, but now
> try thinking about this same problem without ACPI.

Actually, if it's really true that the *kernel* is supposed to tell the
DMA controller which source-id to use for a given channel, instead of it
being programmed in advance by the BIOS, then ACPI doesn't solve that
for us in this case either. The whole thing seems to be designed such
that the DMA just *does* appear to come from the slave, not the DMA
controller. And we haven't yet worked out how we're supposed to make
that happen. If indeed we *are* supposed to :)

--
dwmw2

Attachment: smime.p7s
Description: S/MIME cryptographic signature