On Tuesday 07 December 2010 00:34:47 ext Olaya, Margarita wrote:
From: Hari Nagalla hnagalla@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.
I have not seen this happening on OMAP2/3, or at least I'm not aware of it. Is this problem OMAP4 only? Do you know if this happens on playback, capture or in both direction? Is it worth to do this workaround only on OMAP4?
Signed-off-by: Hari Nagalla hnagalla@ti.com Signed-off-by: Margarita Olaya Cabrera magi.olaya@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))
break; default: ret = -EINVAL;omap_stop_dma(prtd->dma_ch);