浏览代码

ASoC: Allow PCMs to restrict the supported formats

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>
Lars-Peter Clausen 11 年之前
父节点
当前提交
16d7ea9167
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      sound/soc/soc-pcm.c

+ 4 - 1
sound/soc/soc-pcm.c

@@ -158,7 +158,10 @@ static void soc_pcm_init_runtime_hw(struct snd_pcm_hardware *hw,
 		cpu_stream->channels_min);
 		cpu_stream->channels_min);
 	hw->channels_max = min(codec_stream->channels_max,
 	hw->channels_max = min(codec_stream->channels_max,
 		cpu_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;
 	hw->rates = codec_stream->rates & cpu_stream->rates;
 	if (codec_stream->rates
 	if (codec_stream->rates
 		& (SNDRV_PCM_RATE_KNOT | SNDRV_PCM_RATE_CONTINUOUS))
 		& (SNDRV_PCM_RATE_KNOT | SNDRV_PCM_RATE_CONTINUOUS))