On 03/09/2012 01:19 AM, Grazvydas Ignotas wrote:
We are setting SNDRV_PCM_HW_PARAM_BUFFER_SIZE based on SNDRV_PCM_HW_PARAM_CHANNELS, not vice versa.
The intention is to set the buffer size based on the channels here. This is needed because of the McBSP internal FIFO operation. It is word based. As example on McBSP2 has 1280 word FIFO. In mono stream it is 1280 sample long. In stereo it is 640 (stereo) sample long. In four channel mode it is 320 (4 channel) sample long.
This bug didn't have much impact because the rules are evaluated multiple times by the core, and intended value got set eventually.
Signed-off-by: Grazvydas Ignotas notasas@gmail.com
sound/soc/omap/omap-mcbsp.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c index 10eb645..207365c 100644 --- a/sound/soc/omap/omap-mcbsp.c +++ b/sound/soc/omap/omap-mcbsp.c @@ -142,10 +142,10 @@ static int omap_mcbsp_dai_startup(struct snd_pcm_substream *substream, * smaller buffer than the FIFO size to avoid underruns */ snd_pcm_hw_rule_add(substream->runtime, 0,
SNDRV_PCM_HW_PARAM_CHANNELS,
SNDRV_PCM_HW_PARAM_BUFFER_SIZE, omap_mcbsp_hwrule_min_buffersize, mcbsp,
SNDRV_PCM_HW_PARAM_BUFFER_SIZE, -1);
SNDRV_PCM_HW_PARAM_CHANNELS, -1);
/* Make sure, that the period size is always even */ snd_pcm_hw_constraint_step(substream->runtime, 0,