[xburst] sound jz4740_pcm: Don't request dma channel mor then once.
authorLars-Peter Clausen <lars@metafoo.de>
Mon, 22 Mar 2010 15:22:26 +0000 (15:22 +0000)
committerLars-Peter Clausen <lars@metafoo.de>
Mon, 22 Mar 2010 15:22:26 +0000 (15:22 +0000)
It is possible that the hw_params callback is called multiple times when using
the oss emulation layer. Thus we need to check whether the dma channel has
already been requested otherwise we'll end up with all dma channels being
requested by sound driver.

SVN-Revision: 20369

target/linux/xburst/files-2.6.32/sound/soc/jz4740/jz4740-pcm.c

index c71c5b48b555e42fe531a4c5bf8e3c5fc5542398..4a4de195a879e7bb3d592ea8066a074b530ca60e 100644 (file)
@@ -105,10 +105,11 @@ static int jz4740_pcm_hw_params(struct snd_pcm_substream *substream,
        struct jz4740_pcm_config *config;
 
        config = rtd->dai->cpu_dai->dma_data;
-       if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-               prtd->dma = jz4740_dma_request(substream, "PCM Playback");
-       } else {
-               prtd->dma = jz4740_dma_request(substream, "PCM Capture");
+       if (!prtd->dma) {
+               if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
+                       prtd->dma = jz4740_dma_request(substream, "PCM Playback");
+               else
+                       prtd->dma = jz4740_dma_request(substream, "PCM Capture");
        }
 
        if (!prtd->dma)