ASoC: omap-mcbsp: buffer size constraint only applies to playback stream
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Tue, 20 Mar 2012 09:47:36 +0000 (11:47 +0200)
committerLiam Girdwood <lrg@ti.com>
Tue, 22 May 2012 16:33:19 +0000 (17:33 +0100)
In capture stream the buffer size does not need to be constrained to be
bigger then the McBSP FIFO.
In capture the FIFO content is taken out in period length burst, this
enusres that the FIFO is not going to overflow.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
sound/soc/omap/omap-mcbsp.c

index 27144a67e5ec217540496739967763de4b1ee31b..1046083e90a079f594b99ef0f88b72bb7e8e5150 100644 (file)
@@ -138,13 +138,15 @@ static int omap_mcbsp_dai_startup(struct snd_pcm_substream *substream,
        if (mcbsp->pdata->buffer_size) {
                /*
                * Rule for the buffer size. We should not allow
-               * smaller buffer than the FIFO size to avoid underruns
+               * smaller buffer than the FIFO size to avoid underruns.
+               * This applies only for the playback stream.
                */
-               snd_pcm_hw_rule_add(substream->runtime, 0,
-                                   SNDRV_PCM_HW_PARAM_BUFFER_SIZE,
-                                   omap_mcbsp_hwrule_min_buffersize,
-                                   mcbsp,
-                                   SNDRV_PCM_HW_PARAM_CHANNELS, -1);
+               if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
+                       snd_pcm_hw_rule_add(substream->runtime, 0,
+                                           SNDRV_PCM_HW_PARAM_BUFFER_SIZE,
+                                           omap_mcbsp_hwrule_min_buffersize,
+                                           mcbsp,
+                                           SNDRV_PCM_HW_PARAM_CHANNELS, -1);
 
                /* Make sure, that the period size is always even */
                snd_pcm_hw_constraint_step(substream->runtime, 0,