[PATCH 6/9] crypto: ux500/cryp - Set DMA configuration though dma_slave_config()
Linus Walleij
linus.walleij at linaro.org
Fri Apr 26 04:28:39 EDT 2013
On Thu, Apr 25, 2013 at 4:11 PM, Arnd Bergmann <arnd at arndb.de> wrote:
> The dma engine driver must know the address in its dma space, while the
> slave driver has it available in physical space. These two are often the
> same, but there is no generic way to convert between the two, especially
> if the dma engine resides behind an IOMMU.
>
> The best assumption we can make is that the dma engine driver knows
> how to convert between the two. Interestingly the documentation for
> dma_slave_config talks about "physical address", while the structure
> itself uses a dma_addr_t. Linus Walleij introduced the structure in
> c156d0a5b0 "DMAENGINE: generic slave channel control v3", so I assume
> he can shed some light on what he was thinking. I assume the documentation
> is right but the structure is not and should be converted to use
> phys_add_t or resource_size_t.
OK I could cook a patch for that, but I think I need some input from
Vinod and/or Russell on this.
It does make sense to me that if anything knows how to map a physical
address into the DMA address space it'll be the DMA engine.
However this rings a bell that there may be a possible relation to
DMA-API, since that API syncs memory buffers to the DMA
address space if there is some MMU inbetween the DMA and the
(ordinary, non-device) memory.
So if we think one step ahead, assuming the DMAC is actually behind
an MMU making it see the device in some other address than the
physical (bus) space, where would the address be resolved?
Yours,
Linus Walleij
More information about the linux-arm-kernel
mailing list