Thread (9 messages) flat view 9 messages, 3 authors, 2012-08-01

About dma_sync_single_for_{cpu,device}

From: clemens@ladisch.de (Clemens Ladisch)
Date: 2012-07-31 07:34:08
Also in: lkml

Karl Beldan wrote:
On 7/31/12, Clemens Ladisch [off-list ref] wrote:
quoted
Karl Beldan wrote:
quoted
To tx a chunk of data from the SoC => network device, we :
- prepare a buffer with a leading header embedding a pattern,
- trigger the xfer and wait for an irq
// The device updates the pattern and then triggers an irq
- upon irq we check the pattern for the xfer completion

I was expecting the following to work:
	addr = dma_map_single(dev, buffer, size, DMA_TO_DEVICE);
Of both the CPU and the device write to the buffer, you must use
DMA_BIDIRECTIONAL.
This does not work (tested) :  seems to me BIDIRECTIONAL would just
add invalidate, and invalidate before the ram has been updated, as
stated, does not work.
Please show the exact sequence of dma_* calls, and also show when and
how the CPU and the device access the buffer.


Regards,
Clemens
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help