ASoC: Add new parameter to s3c24xx_pcm_enqueue
PATCH 1/1 ASoC: Add new parameter to s3c24xx_pcm_enqueue
The S3C24xx dma does not allow more than one buffer to be enqueue prior to the dma transfers starting. This patch adds an additional parameter to s3c24xx_pcm_enqueue() to allow for passing an initial dma maximum load value.
Signed-off-by David Anders <danders at amltd.com>
sound/soc/s3c24xx/s3c24xx-pcm.c +8 -4
@@ -78,7 +78,8 @@* place a dma buffer onto the queue for the dma system * to handle. */ -static void s3c24xx_pcm_enqueue (struct snd_pcm_substream *substream) +static void s3c24xx_pcm_enqueue (struct snd_pcm_substream *substream, +int dma_max) {struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;dma_addr_t pos = prtd->dma_pos;
@@ -86,7 +87,10 @@DBG ("Entered %s\n" , __func__); -while (prtd->dma_loaded < prtd->dma_limit) { +if (!dma_max) + dma_max = prtd->dma_limit; + +while (prtd->dma_loaded < dma_max) {unsigned long len = prtd->dma_period;DBG ("dma_loaded: %d\n" , prtd->dma_loaded);
@@ -132,7 +136,7 @@spin_lock (&prtd->lock);if (prtd->state &ST_RUNNING ) { prtd->dma_loaded--; -s3c24xx_pcm_enqueue (substream); +s3c24xx_pcm_enqueue (substream,0 ); }spin_unlock (&prtd->lock);
@@ -249,7 +253,7 @@ prtd->dma_pos = prtd->dma_start;/* enqueue dma buffers */ -s3c24xx_pcm_enqueue (substream); +s3c24xx_pcm_enqueue (substream,1 );return ret; }
Quoted 6 lines · David Anders
The S3C24xx dma does not allow more than one buffer to be enqueue prior to the dma transfers starting. This patch adds an additional parameter to
s3c24xx_pcm_enqueue()to allow for passing an initial dma maximum load value.Signed-off-by David Anders <danders at amltd.com>
Acked-by Mark Brown <[email protected]>
Takashi, I'll push this later on today along with a few other things that queued up.