ASoC: omap-pcm: Select sDMA synchronization based on packet_size
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Fri, 14 Sep 2012 12:05:50 +0000 (15:05 +0300)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Sat, 22 Sep 2012 15:12:57 +0000 (11:12 -0400)
Since we only have element or packet synchronization we can use the
dma_data->packet_size to select the desired mode:
if packet_size is 0 we use ELEMENT mode
if packet_size is not 0 we use PACKET mode for sDMA synchronization.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Tested-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/omap/omap-pcm.c

index f0feb06..02eeb2e 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;