diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2023-05-30 00:49:43 +0000 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2023-05-31 12:25:02 +0100 |
commit | 092830cf550667d5fa6286605167d232f2c1f61e (patch) | |
tree | 84b28e118e912e129f6ad25413c96402f1a4c563 /sound/soc/soc-pcm.c | |
parent | b48aa6a3577cccd13ea21392540f6cde437dd04d (diff) |
ASoC: soc-pcm.c: indicate error if stream has no playback no capture
soc_get_playback_capture() (A) returns number of substreams for
playback/capture (B).
ASoC will probe the Sound Card and mapps CPU<->Codec pair.
(A) static int soc_get_playback_capture(...,
(B) int *playback, int *capture)
{
...
if (rtd->dai_link->playback_only) {
*playback = 1;
*capture = 0;
}
if (rtd->dai_link->capture_only) {
*playback = 0;
*capture = 1;
}
(C)
return 0;
}
But it might be no playback no capture if it returns playback=0, capture=0.
It is very difficult to notice about it. This patch indicates error at (C)
then.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/87y1l6zlqx.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/soc-pcm.c')
-rw-r--r-- | sound/soc/soc-pcm.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index 6365ad8ca7ef..f3ce825c0b20 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c @@ -2814,6 +2814,13 @@ static int soc_get_playback_capture(struct snd_soc_pcm_runtime *rtd, *capture = 1; } + if (!*playback && !*capture) { + dev_err(rtd->dev, "substream %s has no playback, no capture\n", + rtd->dai_link->stream_name); + + return -EINVAL; + } + return 0; } |