aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/s3c24xx/s3c24xx-pcm.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/s3c24xx/s3c24xx-pcm.c')
-rw-r--r--sound/soc/s3c24xx/s3c24xx-pcm.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/sound/soc/s3c24xx/s3c24xx-pcm.c b/sound/soc/s3c24xx/s3c24xx-pcm.c
index bfbdc3cbd43b..4107a87d4de3 100644
--- a/sound/soc/s3c24xx/s3c24xx-pcm.c
+++ b/sound/soc/s3c24xx/s3c24xx-pcm.c
@@ -158,18 +158,22 @@ static int s3c24xx_pcm_hw_params(struct snd_pcm_substream *substream,
158 if (!dma) 158 if (!dma)
159 return 0; 159 return 0;
160 160
161 /* prepare DMA */ 161 /* this may get called several times by oss emulation
162 prtd->params = dma; 162 * with different params -HW */
163 if (prtd->params == NULL) {
164 /* prepare DMA */
165 prtd->params = dma;
163 166
164 DBG("params %p, client %p, channel %d\n", prtd->params, 167 DBG("params %p, client %p, channel %d\n", prtd->params,
165 prtd->params->client, prtd->params->channel); 168 prtd->params->client, prtd->params->channel);
166 169
167 ret = s3c2410_dma_request(prtd->params->channel, 170 ret = s3c2410_dma_request(prtd->params->channel,
168 prtd->params->client, NULL); 171 prtd->params->client, NULL);
169 172
170 if (ret) { 173 if (ret) {
171 DBG(KERN_ERR "failed to get dma channel\n"); 174 DBG(KERN_ERR "failed to get dma channel\n");
172 return ret; 175 return ret;
176 }
173 } 177 }
174 178
175 /* channel needs configuring for mem=>device, increment memory addr, 179 /* channel needs configuring for mem=>device, increment memory addr,