[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