[alsa-devel] [PATCH] ASoC: Flush Samsung DMA on free
Ever since it was written the Samsung DMA driver has had a TODO in the hw_free() function wondering if we need to flush the DMA buffers. Up until now the answer has been no but with the recent improvements Boojin has done to the DMA infrastructure for the Samsung port the answer has changed to yes for at least S3C6410 systems.
If we don't then when we next prepare() the channel the API will get confused trying to run callbacks on the transfers hanging around from the previous time the stream was open and oops.
Signed-off-by: Mark Brown broonie@opensource.wolfsonmicro.com ---
Kukjin, this should probably get added to your branch assuming it's OK for other CPUs.
sound/soc/samsung/dma.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/sound/soc/samsung/dma.c b/sound/soc/samsung/dma.c index 851346f..2d622b6 100644 --- a/sound/soc/samsung/dma.c +++ b/sound/soc/samsung/dma.c @@ -198,10 +198,10 @@ static int dma_hw_free(struct snd_pcm_substream *substream)
pr_debug("Entered %s\n", __func__);
- /* TODO - do we need to ensure DMA flushed */ snd_pcm_set_runtime_buffer(substream, NULL);
if (prtd->params) { + prtd->params->ops->flush(prtd->params->ch); prtd->params->ops->release(prtd->params->ch, prtd->params->client); prtd->params = NULL;
Mark Brown wrote:
Ever since it was written the Samsung DMA driver has had a TODO in the hw_free() function wondering if we need to flush the DMA buffers. Up until now the answer has been no but with the recent improvements Boojin has done to the DMA infrastructure for the Samsung port the answer has changed to yes for at least S3C6410 systems.
If we don't then when we next prepare() the channel the API will get confused trying to run callbacks on the transfers hanging around from the previous time the stream was open and oops.
Signed-off-by: Mark Brown broonie@opensource.wolfsonmicro.com
Kukjin, this should probably get added to your branch assuming it's OK for other CPUs.
Looks ok to me, applied. Thanks.
Best regards, Kgene. -- Kukjin Kim kgene.kim@samsung.com, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
sound/soc/samsung/dma.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/sound/soc/samsung/dma.c b/sound/soc/samsung/dma.c index 851346f..2d622b6 100644 --- a/sound/soc/samsung/dma.c +++ b/sound/soc/samsung/dma.c @@ -198,10 +198,10 @@ static int dma_hw_free(struct snd_pcm_substream *substream)
pr_debug("Entered %s\n", __func__);
/* TODO - do we need to ensure DMA flushed */ snd_pcm_set_runtime_buffer(substream, NULL);
if (prtd->params) {
prtd->params->ops->release(prtd->params->ch, prtd->params->client); prtd->params = NULL;prtd->params->ops->flush(prtd->params->ch);
-- 1.7.6.3
participants (2)
-
Kukjin Kim
-
Mark Brown