From 124c6d16d7692446d6ff6bbae6f10f32eafcc66e Mon Sep 17 00:00:00 2001 From: lars Date: Mon, 22 Mar 2010 15:22:26 +0000 Subject: [xburst] sound jz4740_pcm: Don't request dma channel mor then once. 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. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@20369 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/xburst/files-2.6.32/sound/soc/jz4740/jz4740-pcm.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'target/linux/xburst') diff --git a/target/linux/xburst/files-2.6.32/sound/soc/jz4740/jz4740-pcm.c b/target/linux/xburst/files-2.6.32/sound/soc/jz4740/jz4740-pcm.c index c71c5b48b..4a4de195a 100644 --- a/target/linux/xburst/files-2.6.32/sound/soc/jz4740/jz4740-pcm.c +++ b/target/linux/xburst/files-2.6.32/sound/soc/jz4740/jz4740-pcm.c @@ -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) -- cgit v1.2.3