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

Commit 10ab3bfd authored by Ben Gardiner's avatar Ben Gardiner Committed by Mark Brown
Browse files

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: default avatarBen Gardiner <bengardiner@nanometrics.ca>
Reviewed-by: default avatarSteven Faludi <stevenfaludi@nanometrics.ca>
Acked-by: default avatarLiam Girdwood <lrg@ti.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent ef39eb6f
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -155,6 +155,22 @@ struct davinci_runtime_data {
	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
 */
@@ -216,9 +232,7 @@ static void davinci_pcm_enqueue_dma(struct snd_pcm_substream *substream)
		edma_set_transfer_params(link, acnt, fifo_level, count,
							fifo_level, ABSYNC);

	prtd->period++;
	if (unlikely(prtd->period >= runtime->periods))
		prtd->period = 0;
	davinci_pcm_period_elapsed(substream);
}

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;
	}
	prtd->period = 0;
	davinci_pcm_period_reset(substream);
	davinci_pcm_enqueue_dma(substream);

	/* Copy self-linked parameter RAM entry into master channel */