ASoC: omap-pcm: Select sDMA synchronization based on packet_size
[firefly-linux-kernel-4.4.55.git] / sound / soc / omap / omap-pcm.c
index f0feb06615f8ea355711239b4ffbd74516221a3e..02eeb2e7cedade0f699345e69dd996f2d320e453 100644 (file)
@@ -165,7 +165,12 @@ static int omap_pcm_prepare(struct snd_pcm_substream *substream)
        memset(&dma_params, 0, sizeof(dma_params));
        dma_params.data_type                    = dma_data->data_type;
        dma_params.trigger                      = dma_data->dma_req;
-       dma_params.sync_mode                    = dma_data->sync_mode;
+
+       if (dma_data->packet_size)
+               dma_params.sync_mode = OMAP_DMA_SYNC_PACKET;
+       else
+               dma_params.sync_mode = OMAP_DMA_SYNC_ELEMENT;
+
        if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
                dma_params.src_amode            = OMAP_DMA_AMODE_POST_INC;
                dma_params.dst_amode            = OMAP_DMA_AMODE_CONSTANT;