Subject: DMA from memory to local bus

Hi all,
I'm currently developing a driver and want to make use of the DMA
offload engine. Data has to be transferred from memory to a device on
the local bus and vice versa.
At a first look, the function dma_async_memcpy_buf_to_buf() seemed to be
suitable, but it does not translate addresses correctly. Both addresses
are treated as if they were in memory.
In my configuration, the buffer is located in memory, but the device's
I/O space is mapped into vmalloc space via ioremap(). How can I access
the I/O space corectly from the DMA controller?

Thanks for your help
Thomas


2008-11-29 03:25:06

by Robert Hancock

[permalink] [raw]
Subject: Re: DMA from memory to local bus

Hommel, Thomas (GE EntSol, Intelligent Platforms) wrote:
> Hi all,
> I'm currently developing a driver and want to make use of the DMA
> offload engine. Data has to be transferred from memory to a device on
> the local bus and vice versa.
> At a first look, the function dma_async_memcpy_buf_to_buf() seemed to be
> suitable, but it does not translate addresses correctly. Both addresses
> are treated as if they were in memory.

That would be the normal use of these things, I believe.. normally when
copying to/from a device the device does it itself with bus master DMA.

> In my configuration, the buffer is located in memory, but the device's
> I/O space is mapped into vmalloc space via ioremap(). How can I access
> the I/O space corectly from the DMA controller?
>
> Thanks for your help
> Thomas