ASoC: Allow PCMs to restrict the supported formats
authorLars-Peter Clausen <lars@metafoo.de>
Mon, 6 Jan 2014 13:19:16 +0000 (14:19 +0100)
committerMark Brown <broonie@linaro.org>
Thu, 9 Jan 2014 14:31:59 +0000 (14:31 +0000)
Some DMA cores might add additional restrictions on which in memory audio
formats can be supported by the compound sound card. If the PCM component
specifies a set of formats it supports (by setting the formats field to non 0)
take these into account when calculating the format set for the compound sound
card.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/soc-pcm.c

index 141a302e4e77a5b382ec589a690e625857037052..e7f16b54a97d4f8aafb1839097d6995be8b9f70b 100644 (file)
@@ -158,7 +158,10 @@ static void soc_pcm_init_runtime_hw(struct snd_pcm_hardware *hw,
                cpu_stream->channels_min);
        hw->channels_max = min(codec_stream->channels_max,
                cpu_stream->channels_max);
-       hw->formats = codec_stream->formats & cpu_stream->formats;
+       if (hw->formats)
+               hw->formats &= codec_stream->formats & cpu_stream->formats;
+       else
+               hw->formats = codec_stream->formats & cpu_stream->formats;
        hw->rates = codec_stream->rates & cpu_stream->rates;
        if (codec_stream->rates
                & (SNDRV_PCM_RATE_KNOT | SNDRV_PCM_RATE_CONTINUOUS))