Suppose we have:
cpu_dai channels_min = 1 channels_max = 1
codec_dai channels_min = 2 channels_max = 2
This is a mismatch that should not happen, however according to the current code, the result of runtime->hw will be:
channels_min = 2 channels_max = 1
We better spot it early. This patch checks this mismatch.
Signed-off-by: Lu Guanqun guanqun.lu@intel.com --- sound/soc/soc-core.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 0cf6997..88bb206 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -640,7 +640,8 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) codec_dai->name, cpu_dai->name); goto config_err; } - if (!runtime->hw.channels_min || !runtime->hw.channels_max) { + if (!runtime->hw.channels_min || !runtime->hw.channels_max || + runtime->hw.channels_min > runtime->hw.channels_max) { printk(KERN_ERR "asoc: %s <-> %s No matching channels\n", codec_dai->name, cpu_dai->name); goto config_err;