mirror of
https://github.com/genesi/linux-legacy.git
synced 2026-02-04 07:15:01 +00:00
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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user