On Tue 18 Feb 2020 at 11:38, Stephan Gerhold <stephan@xxxxxxxxxxx> wrote: > Commit af4bac11531f ("ASoC: soc-pcm: crash in snd_soc_dapm_new_dai") > swapped the SNDRV_PCM_STREAM_* parameter in the > snd_soc_dai_stream_valid(cpu_dai, ...) checks. But that works only > for codec2codec links. For normal links it breaks registration of > playback/capture-only PCM devices. > > E.g. on qcom/apq8016_sbc there is usually one playback-only and one > capture-only PCM device, but they disappeared after the commit. > > The codec2codec case was added in commit a342031cdd08 > ("ASoC: create pcm for codec2codec links as well") as an extra check > (e.g. `playback = playback && cpu_playback->channels_min`). That particular check was there when I worked on that change but I seems I messed up when I rebased on Kuninori's work regarding snd_soc_dai_stream_valid() which happened more or less at the same time. > > We should be able to simplify the code by checking directly for > the correct stream type in the loop. > This also fixes the regression because we check for PLAYBACK for > both codec and cpu dai again when codec2codec is not used. > > Cc: Sameer Pujar <spujar@xxxxxxxxxx> > Cc: Jerome Brunet <jbrunet@xxxxxxxxxxxx> > Fixes: af4bac11531f ("ASoC: soc-pcm: crash in snd_soc_dapm_new_dai") > Signed-off-by: Stephan Gerhold <stephan@xxxxxxxxxxx> Looks good and works with the codec-to-codec links on Amlogic aiu. Thx ! Reviewed-by: Jerome Brunet <jbrunet@xxxxxxxxxxxx> Tested-by: Jerome Brunet <jbrunet@xxxxxxxxxxxx>