summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorLionel Xu <Lionel.Xu@freescale.com>2010-05-18 15:31:20 +0800
committerLionel Xu <Lionel.Xu@freescale.com>2010-06-24 11:11:58 +0800
commita7163ded1ae272c24e275337a646b97f2da778d7 (patch)
tree36ab28a1cc7a453ac9942b66567ff9fdcd68898e /sound
parentb81f7d8c9afac0ab78742fc511bdcd5e4bf84710 (diff)
ENGR00122302 MX23 ALSA: Resolve the failure when pausing and resuming playback
To reslove the problem when resuming a playback from pausing Signed-off-by: Lionel Xu <r63889@freescale.com>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/mxs/mxs-adc.c1
-rw-r--r--sound/soc/mxs/mxs-pcm.c3
2 files changed, 4 insertions, 0 deletions
diff --git a/sound/soc/mxs/mxs-adc.c b/sound/soc/mxs/mxs-adc.c
index af2cbbdc0c58..44e04d64ff27 100644
--- a/sound/soc/mxs/mxs-adc.c
+++ b/sound/soc/mxs/mxs-adc.c
@@ -224,6 +224,7 @@ static int mxs_adc_trigger(struct snd_pcm_substream *substream,
/* disable the fifo error interrupt */
__raw_writel(BM_AUDIOOUT_CTRL_FIFO_ERROR_IRQ_EN,
REGS_AUDIOOUT_BASE + HW_AUDIOOUT_CTRL_CLR);
+ mdelay(50);
}
else
__raw_writel(BM_AUDIOIN_CTRL_RUN,
diff --git a/sound/soc/mxs/mxs-pcm.c b/sound/soc/mxs/mxs-pcm.c
index a9f0358687f4..f3cdcdbd2861 100644
--- a/sound/soc/mxs/mxs-pcm.c
+++ b/sound/soc/mxs/mxs-pcm.c
@@ -141,6 +141,7 @@ static int mxs_pcm_prepare(struct snd_pcm_substream *substream)
/* Link with previous command */
prtd->dma_desc_array[i]->cmd.cmd.bits.bytes = prtd->dma_period;
prtd->dma_desc_array[i]->cmd.cmd.bits.irq = 1;
+ prtd->dma_desc_array[i]->cmd.cmd.bits.dec_sem = 0;
prtd->dma_desc_array[i]->cmd.cmd.bits.chain = 1;
/* Set DMA direction */
if (playback)
@@ -194,6 +195,8 @@ static void mxs_pcm_stop(struct snd_pcm_substream *substream)
prtd->dma_desc_array[(desc + 1)%8]->cmd.cmd.bits.command = NO_DMA_XFER;
mxs_dma_unfreeze(prtd->dma_ch);
+
+ mxs_dma_disable(prtd->dma_ch);
}
static int mxs_pcm_trigger(struct snd_pcm_substream *substream, int cmd)