[alsa-devel] [PATCH 2/2] ASoC: omap: Stop DMA re enabling in self linkage mode

Olaya, Margarita magi.olaya at ti.com
Mon Dec 6 23:34:47 CET 2010


From: Hari Nagalla <hnagalla at ti.com>

While using self linking, there is a chance that the DMA
has re-enabled the channel just after disabling it.

This patch stops the OMAP4 DMA re-enabling after stoping the
DMA channel.

Signed-off-by: Hari Nagalla <hnagalla at ti.com>
Signed-off-by: Margarita Olaya Cabrera <magi.olaya at ti.com>
---
 sound/soc/omap/omap-pcm.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c
index 6a21447..afe91ad 100644
--- a/sound/soc/omap/omap-pcm.c
+++ b/sound/soc/omap/omap-pcm.c
@@ -234,6 +234,13 @@ static int omap_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
 	case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
 		prtd->period_index = -1;
 		omap_stop_dma(prtd->dma_ch);
+		/*
+		 * Since we are using self linking, there is a
+		 * chance that the DMA as re-enabled the channel
+		 * just after disabling it.
+		 */
+		while (omap_get_dma_active_status(prtd->dma_ch))
+			omap_stop_dma(prtd->dma_ch);
 		break;
 	default:
 		ret = -EINVAL;
-- 
1.7.0.4


More information about the Alsa-devel mailing list