[alsa-devel] [PATCHv4 20/20] ASoC: OMAP: Use DMA operating mode of McBSP
Tony Lindgren
tony at atomide.com
Mon Aug 17 16:02:02 CEST 2009
* Eduardo Valentin <eduardo.valentin at nokia.com> [090817 15:06]:
> From: Eduardo Valentin <eduardo.valentin at nokia.com>
And this one too.
> Signed-off-by: Eduardo Valentin <eduardo.valentin at nokia.com>
> ---
> sound/soc/omap/omap-mcbsp.c | 18 +++++++++++++++---
> 1 files changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
> index 2aec7a6..60c360b 100644
> --- a/sound/soc/omap/omap-mcbsp.c
> +++ b/sound/soc/omap/omap-mcbsp.c
> @@ -144,7 +144,14 @@ static void omap_mcbsp_set_threshold(struct snd_pcm_substream *substream)
> struct snd_soc_pcm_runtime *rtd = substream->private_data;
> struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
> struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
> - int samples = snd_pcm_lib_period_bytes(substream) >> 1;
> + int dma_op_mode = omap_mcbsp_get_dma_op_mode(mcbsp_data->bus_id);
> + int samples;
> +
> + /* TODO: Currently, MODE_ELEMENT == MODE_FRAME */
> + if (dma_op_mode == MCBSP_DMA_MODE_THRESHOLD)
> + samples = snd_pcm_lib_period_bytes(substream) >> 1;
> + else
> + samples = 1;
>
> /* Configure McBSP internal buffer usage */
> if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
> @@ -166,6 +173,7 @@ static int omap_mcbsp_dai_startup(struct snd_pcm_substream *substream,
> err = omap_mcbsp_request(bus_id);
>
> if (cpu_is_omap343x()) {
> + int dma_op_mode = omap_mcbsp_get_dma_op_mode(bus_id);
> int max_period;
>
> /*
> @@ -187,7 +195,8 @@ static int omap_mcbsp_dai_startup(struct snd_pcm_substream *substream,
> max_period++;
> max_period <<= 1;
>
> - snd_pcm_hw_constraint_minmax(substream->runtime,
> + if (dma_op_mode == MCBSP_DMA_MODE_THRESHOLD)
> + snd_pcm_hw_constraint_minmax(substream->runtime,
> SNDRV_PCM_HW_PARAM_PERIOD_BYTES,
> 32, max_period);
> }
> @@ -268,7 +277,10 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
> port = omap34xx_mcbsp_port[bus_id][substream->stream];
> omap_mcbsp_dai_dma_params[id][substream->stream].set_threshold =
> omap_mcbsp_set_threshold;
> - sync_mode = OMAP_DMA_SYNC_FRAME;
> + /* TODO: Currently, MODE_ELEMENT == MODE_FRAME */
> + if (omap_mcbsp_get_dma_op_mode(bus_id) ==
> + MCBSP_DMA_MODE_THRESHOLD)
> + sync_mode = OMAP_DMA_SYNC_FRAME;
> } else {
> return -ENODEV;
> }
> --
> 1.6.2.GIT
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe alsa-devel" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
More information about the Alsa-devel
mailing list