ASoC: soc-pcm: fix regression in soc_new_pcm()
[platform/kernel/linux-starfive.git] / sound / soc / soc-pcm.c
index 6630fad..65a3856 100644 (file)
@@ -2858,22 +2858,19 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
                capture = rtd->dai_link->dpcm_capture;
        } else {
                /* Adapt stream for codec2codec links */
-               struct snd_soc_pcm_stream *cpu_capture = rtd->dai_link->params ?
-                       &cpu_dai->driver->playback : &cpu_dai->driver->capture;
-               struct snd_soc_pcm_stream *cpu_playback = rtd->dai_link->params ?
-                       &cpu_dai->driver->capture : &cpu_dai->driver->playback;
+               int cpu_capture = rtd->dai_link->params ?
+                       SNDRV_PCM_STREAM_PLAYBACK : SNDRV_PCM_STREAM_CAPTURE;
+               int cpu_playback = rtd->dai_link->params ?
+                       SNDRV_PCM_STREAM_CAPTURE : SNDRV_PCM_STREAM_PLAYBACK;
 
                for_each_rtd_codec_dai(rtd, i, codec_dai) {
                        if (snd_soc_dai_stream_valid(codec_dai, SNDRV_PCM_STREAM_PLAYBACK) &&
-                           snd_soc_dai_stream_valid(cpu_dai,   SNDRV_PCM_STREAM_CAPTURE))
+                           snd_soc_dai_stream_valid(cpu_dai,   cpu_playback))
                                playback = 1;
                        if (snd_soc_dai_stream_valid(codec_dai, SNDRV_PCM_STREAM_CAPTURE) &&
-                           snd_soc_dai_stream_valid(cpu_dai,   SNDRV_PCM_STREAM_PLAYBACK))
+                           snd_soc_dai_stream_valid(cpu_dai,   cpu_capture))
                                capture = 1;
                }
-
-               capture = capture && cpu_capture->channels_min;
-               playback = playback && cpu_playback->channels_min;
        }
 
        if (rtd->dai_link->playback_only) {