Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e2e27c7 authored by Richard Zhao's avatar Richard Zhao Committed by Vinod Koul
Browse files

dma: imx-sdma: buf_tail should be initialize in prepare function



This fix audio underrun issue. When SNDRV_PCM_TRIGGER_STOP
and SNDRV_PCM_TRIGGER_START, it calls prepare again. buf_tail
should be reset to zero.
So move buf_tail initialization into prepare function.

Signed-off-by: default avatarRichard Zhao <richard.zhao@freescale.com>
Acked-by: default avatarShawn Guo <shawn.guo@linaro.org>
Signed-off-by: default avatarVinod Koul <vinod.koul@linux.intel.com>
parent 30c1dc0f
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -815,8 +815,6 @@ static int sdma_request_channel(struct sdma_channel *sdmac)

	init_completion(&sdmac->done);

	sdmac->buf_tail = 0;

	return 0;
out:

@@ -927,6 +925,8 @@ static struct dma_async_tx_descriptor *sdma_prep_slave_sg(

	sdmac->flags = 0;

	sdmac->buf_tail = 0;

	dev_dbg(sdma->dev, "setting up %d entries for channel %d.\n",
			sg_len, channel);

@@ -1027,6 +1027,8 @@ static struct dma_async_tx_descriptor *sdma_prep_dma_cyclic(

	sdmac->status = DMA_IN_PROGRESS;

	sdmac->buf_tail = 0;

	sdmac->flags |= IMX_DMA_SG_LOOP;
	sdmac->direction = direction;
	ret = sdma_load_context(sdmac);