Looking at the code in dai.c, we have:
-> dai_start() 
-> dma_start() 
-> pipeline_schedule_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?