[Sound-open-firmware] DMA copy flow question

Daniel Baluta daniel.baluta at gmail.com
Sun Aug 30 21:35:27 CEST 2020


Hello,

Looking at the code in dai.c, we have:

pipeline_trigger() (COMP_TRIGGER_START)
     -> dai_start() [1]
     ->  dma_start() [2]
     ->  pipeline_schedule_copy() [3]
           -> pipeline_copy()

In our implementation, dai_start()
will generate a DMA request immediately
and dma_start() will generate a transfer immediately.

The biggest problem is that the IRQ handler for DMA
request is registered only at point (3) thus sometimes
first DMA interrupt is lost resulting in copy not being
started. (DMA IRQ is edge triggered).

Can one point how working with DMA should look like?


More information about the Sound-open-firmware mailing list