diff options
Diffstat (limited to 'sound/soc/soc-core.c')
-rw-r--r-- | sound/soc/soc-core.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index b76b74db0968..d8562ce4de7a 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c | |||
@@ -629,6 +629,7 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) | |||
629 | runtime->hw.rates |= codec_dai_drv->capture.rates; | 629 | runtime->hw.rates |= codec_dai_drv->capture.rates; |
630 | } | 630 | } |
631 | 631 | ||
632 | ret = -EINVAL; | ||
632 | snd_pcm_limit_hw_rates(runtime); | 633 | snd_pcm_limit_hw_rates(runtime); |
633 | if (!runtime->hw.rates) { | 634 | if (!runtime->hw.rates) { |
634 | printk(KERN_ERR "asoc: %s <-> %s No matching rates\n", | 635 | printk(KERN_ERR "asoc: %s <-> %s No matching rates\n", |
@@ -640,7 +641,8 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) | |||
640 | codec_dai->name, cpu_dai->name); | 641 | codec_dai->name, cpu_dai->name); |
641 | goto config_err; | 642 | goto config_err; |
642 | } | 643 | } |
643 | if (!runtime->hw.channels_min || !runtime->hw.channels_max) { | 644 | if (!runtime->hw.channels_min || !runtime->hw.channels_max || |
645 | runtime->hw.channels_min > runtime->hw.channels_max) { | ||
644 | printk(KERN_ERR "asoc: %s <-> %s No matching channels\n", | 646 | printk(KERN_ERR "asoc: %s <-> %s No matching channels\n", |
645 | codec_dai->name, cpu_dai->name); | 647 | codec_dai->name, cpu_dai->name); |
646 | goto config_err; | 648 | goto config_err; |
@@ -2060,6 +2062,7 @@ const struct dev_pm_ops snd_soc_pm_ops = { | |||
2060 | .resume = snd_soc_resume, | 2062 | .resume = snd_soc_resume, |
2061 | .poweroff = snd_soc_poweroff, | 2063 | .poweroff = snd_soc_poweroff, |
2062 | }; | 2064 | }; |
2065 | EXPORT_SYMBOL_GPL(snd_soc_pm_ops); | ||
2063 | 2066 | ||
2064 | /* ASoC platform driver */ | 2067 | /* ASoC platform driver */ |
2065 | static struct platform_driver soc_driver = { | 2068 | static struct platform_driver soc_driver = { |