ASoC: omap-pcm: Select sDMA synchronization based on packet_size
[firefly-linux-kernel-4.4.55.git] / sound / soc / omap / omap-pcm.c
index 5a649da9122a3e798713999a766885f0f732a5cd..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;
@@ -441,3 +446,4 @@ module_platform_driver(omap_pcm_driver);
 MODULE_AUTHOR("Jarkko Nikula <jarkko.nikula@bitmer.com>");
 MODULE_DESCRIPTION("OMAP PCM DMA module");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:omap-pcm-audio");