Message ID | 1250509879-6703-21-git-send-email-eduardo.valentin@nokia.com (mailing list archive) |
---|---|
State | Awaiting Upstream, archived |
Headers | show |
* Eduardo Valentin <eduardo.valentin@nokia.com> [090817 15:06]: > From: Eduardo Valentin <eduardo.valentin@nokia.com> And this one too. > Signed-off-by: Eduardo Valentin <eduardo.valentin@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@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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; }