On Mon, Apr 13, 2020 at 2:16 PM Daniel Baluta daniel.baluta@gmail.com wrote:
Hi,
I want to understand how copying data works on a playback pipeline, specifically how the first bytes are copied.
It looks like SOF_SCHEDULE_LL_DMA scheduler takes care about scheduling pipeline_task.
In a simple pipeline with Host <-> (buf0) <-> Volume <->(buf1) DAI the data needs to be propagated from upstream up to DAI.
DMA is responsible to copy the data from buf1 to DAI. But at the time the DMA interrupt arrives the data are not yet propagated to buf1.
We would need a way to preload first bytes. But I couldn't find anywhere in the code where this happens.
More to add to this: So, basically in our design the DMA controller will send an interrupt after successfully copied data.
So, in order for this to work the first chunk needs to be preloaded into buf1. Any suggestion where to look into the code are welcomed!