rendered paste bodydiff -urN linux-2.6.27-clean/sound/soc/s3c24xx/s3c24xx-pcm.c linux-2.6.27/sound/soc/s3c24xx/s3c24xx-pcm.c--- linux-2.6.27-clean/sound/soc/s3c24xx/s3c24xx-pcm.c 2008-11-05 08:27:23.000000000 -0600+++ linux-2.6.27/sound/soc/s3c24xx/s3c24xx-pcm.c 2008-11-05 08:43:27.000000000 -0600@@ -78,7 +78,7 @@ * 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 +86,7 @@ DBG("Entered %s\n", __func__); - while (prtd->dma_loaded < prtd->dma_limit) {+ while (prtd->dma_loaded < (dma_max ? dma_max : prtd->dma_limit)) { unsigned long len = prtd->dma_period; DBG("dma_loaded: %d\n", prtd->dma_loaded);@@ -132,7 +132,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 +249,7 @@ prtd->dma_pos = prtd->dma_start; /* enqueue dma buffers */- s3c24xx_pcm_enqueue(substream);+ s3c24xx_pcm_enqueue(substream,1); return ret; }