ASoC: davinci-pcm: extract period elapsed functions
Extract functions that modify the prtd->period member in preparation for conversion to BATCH mode playback. Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca> Reviewed-by: Steven Faludi <stevenfaludi@nanometrics.ca> Acked-by: Liam Girdwood <lrg@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
ef39eb6f21
commit
10ab3bfda4
|
@ -155,6 +155,22 @@ struct davinci_runtime_data {
|
||||||
struct edmacc_param ram_params;
|
struct edmacc_param ram_params;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void davinci_pcm_period_elapsed(struct snd_pcm_substream *substream)
|
||||||
|
{
|
||||||
|
struct davinci_runtime_data *prtd = substream->runtime->private_data;
|
||||||
|
struct snd_pcm_runtime *runtime = substream->runtime;
|
||||||
|
|
||||||
|
prtd->period++;
|
||||||
|
if (unlikely(prtd->period >= runtime->periods))
|
||||||
|
prtd->period = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void davinci_pcm_period_reset(struct snd_pcm_substream *substream)
|
||||||
|
{
|
||||||
|
struct davinci_runtime_data *prtd = substream->runtime->private_data;
|
||||||
|
|
||||||
|
prtd->period = 0;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* Not used with ping/pong
|
* Not used with ping/pong
|
||||||
*/
|
*/
|
||||||
|
@ -216,9 +232,7 @@ static void davinci_pcm_enqueue_dma(struct snd_pcm_substream *substream)
|
||||||
edma_set_transfer_params(link, acnt, fifo_level, count,
|
edma_set_transfer_params(link, acnt, fifo_level, count,
|
||||||
fifo_level, ABSYNC);
|
fifo_level, ABSYNC);
|
||||||
|
|
||||||
prtd->period++;
|
davinci_pcm_period_elapsed(substream);
|
||||||
if (unlikely(prtd->period >= runtime->periods))
|
|
||||||
prtd->period = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void davinci_pcm_dma_irq(unsigned link, u16 ch_status, void *data)
|
static void davinci_pcm_dma_irq(unsigned link, u16 ch_status, void *data)
|
||||||
|
@ -591,7 +605,7 @@ static int davinci_pcm_prepare(struct snd_pcm_substream *substream)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
prtd->period = 0;
|
davinci_pcm_period_reset(substream);
|
||||||
davinci_pcm_enqueue_dma(substream);
|
davinci_pcm_enqueue_dma(substream);
|
||||||
|
|
||||||
/* Copy self-linked parameter RAM entry into master channel */
|
/* Copy self-linked parameter RAM entry into master channel */
|
||||||
|
|
Loading…
Reference in a new issue