diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 394fb3b..fb3a401 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -2140,6 +2140,11 @@ static int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num) if (codec_dai->driver->capture.channels_min) capture = 1; + if (playback + capture == 0) { + pr_err("asoc: no playback or capture streams available\n"); + return -EINVAL; + } + dev_dbg(rtd->card->dev, "registered pcm #%d %s\n",num,new_name); ret = snd_pcm_new(rtd->card->snd_card, new_name, num, playback, capture, &pcm);