SNDRV_DMA_TYPE_DEV and SNDRV_DMA_TYPE_CONTINUOUS are two options for the
preallocation of the buffer.

The ALSA help and Docs are a little vague on this. Can I get a rephrase of
when to use one vs the other?

Here's my digging in the source code and a first pass guess.....

Looks like _CONTINUOUS simply grabs a page of continuous memory and passes
the page back to the user. This assumes no outside force is writing into
without the Cache Controller's knowledge.

_DEV is for an outside DMA which might be writing direct to DDR, which
won't update the dirty/invalid bits in the cachelines? It calls
dma_alloc_coherent, which can support both hardware and software coherency.
If the memory is marked as HW coherent, then no cache operations take
place, as the HW handles it, and if the memory isn't marked as coherent,
the CPU knows to always treat the buffer as non-cached (or maybe
dirty/invalid on all applicable cachelines)?

Can someone please shed some more light for me?

Thanks!
Rob
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Alsa-user mailing list
Alsa-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to