On Tue 18 Feb 2020 at 11:38, Stephan Gerhold stephan@gerhold.net 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@nvidia.com Cc: Jerome Brunet jbrunet@baylibre.com Fixes: af4bac11531f ("ASoC: soc-pcm: crash in snd_soc_dapm_new_dai") Signed-off-by: Stephan Gerhold stephan@gerhold.net
Looks good and works with the codec-to-codec links on Amlogic aiu. Thx !
Reviewed-by: Jerome Brunet jbrunet@baylibre.com Tested-by: Jerome Brunet jbrunet@baylibre.com