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>
This commit is contained in:
Lionel Xu
2010-05-18 15:31:20 +08:00
committed by Matt Sealey
parent 6a487d0bde
commit 2df29e84b6
3 changed files with 5 additions and 1 deletions

View File

@@ -159,7 +159,7 @@ void mxs_dma_disable(int channel)
pchan->flags &= ~MXS_DMA_FLAGS_BUSY;
pchan->active_num = 0;
pchan->pending_num = 0;
list_splice(&pchan->active, &pchan->done);
list_splice_init(&pchan->active, &pchan->done);
spin_unlock_irqrestore(&pchan->lock, flags);
mutex_unlock(&mxs_dma_mutex);
}

View File

@@ -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,

View File

@@ -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)