> This is v2 patch-set of dpcm_playback/capture flag cleanup. > > Current ASoC DPCM need dpcm_playback/capture flags to use it. > But we are using playback/capture_only flag on Normal/Codec2Codec case. > I think these are duplicated, we can share same flags for all cases. > > On v1 patch-set, we noticed that some DPCM BE Codec valid check > breaks compatibility. > > static int soc_get_playback_capture(...) > { > ... > (A) if (dai_link->dynamic || dai_link->no_pcm) { > ... > if (dai_link->dpcm_playback) { > ... > (B) for_each_rtd_cpu_dais(rtd, i, cpu_dai) { > (C) if (snd_soc_dai_stream_valid(cpu_dai, stream)) { > has_playback = 1; > break; > } > } > ... > } > > (A) is for DPCM case, and "dai_link->no_pcm" means BE, > (B)/(C) means CPU validation check. > In many case, DPCM is like this. > > FE (dynamic) BE (no_pcm) > [CPU/dummy-Codec] - [dummy-CPU/Codec] > > DPCM FE (dynamic) Codec no check is no problem, because it is dummy DAI. > DPCM BE (no_pcm) Codec no check is not good, > but checking it might breaks compatibility, because some Codec doesn't have > necessary settings (= channels_min). Solving this issue seems not easy, > because it is using very complex setting timing. > > v2 ignores DPCM BE Codec check, same as before, but added comment for it. > I hope we can valid check for all cases in some day. Our CI tests show a rather large regression on a CometLake ChromeBook, see https://sof-ci.01.org/linuxpr/PR4379/build5131/devicetest/index.html?model=CML_HEL_RT5682&testcase=verify-kernel-boot-log [ 12.883662] kernel: SSP1-Codec: SSP1-Codec: 1 cpus to 4 codecs link is not supported yet [ 12.883674] kernel: cml_rt1011_rt5682 cml_rt1011_rt5682: ASoC: can't create pcm SSP1-Codec :-22 This is problematic, 1:4 connections have been handled for a very long time, this is basic TDM. git blame tells me this was added by " ASoC: soc-pcm.c: cleanup normal connection loop at soc_get_playback_capture() part1 " below... > > v1 -> v2 > - Add Reviewed-by > - Separate Intel patch > - tidyup playback/capture_only flags conversion > > Link: https://lore.kernel.org/r/87353uqjiu.wl-kuninori.morimoto.gx@xxxxxxxxxxx > Link: https://lore.kernel.org/r/ab3f0c0a-62fd-a468-b3cf-0e4b59bac6ae@xxxxxxxxxxxxxxx > > Kuninori Morimoto (21): > ASoC: soc-pcm.c: indicate error if stream has no playback no capture > ASoC: soc-pcm.c: use dai_link on soc_get_playback_capture() > ASoC: soc-pcm.c: cleanup soc_get_playback_capture() error > ASoC: soc-pcm.c: use temporary variable at soc_get_playback_capture() > ASoC: soc-pcm.c: tidyup playback/capture_only at soc_get_playback_capture() > ASoC: soc-pcm.c: cleanup normal connection loop at soc_get_playback_capture() part1 ...here... > ASoC: soc-pcm.c: cleanup normal connection loop at soc_get_playback_capture() part2 > ASoC: soc-pcm.c: cleanup soc_get_playback_capture() > ASoC: amd: replace dpcm_playback/capture to playback/capture_only > ASoC: fsl: replace dpcm_playback/capture to playback/capture_only > ASoC: sof: replace dpcm_playback/capture to playback/capture_only > ASoC: meson: replace dpcm_playback/capture to playback/capture_only > ASoC: Intel: replace dpcm_playback/capture to playback/capture_only > ASoC: samsung: replace dpcm_playback/capture to playback/capture_only > ASoC: mediatek: replace dpcm_playback/capture to playback/capture_only > ASoC: soc-dai.c: replace dpcm_playback/capture to playback/capture_only > ASoC: Intel/avs: replace dpcm_playback/capture to playback/capture_only > ASoC: soc-core.c: replace dpcm_playback/capture to playback/capture_only > ASoC: soc-topology.c: replace dpcm_playback/capture to playback/capture_only > ASoC: soc-compress.c: replace dpcm_playback/capture to playback/capture_only > ASoC: soc-pcm.c: remove dpcm_playback/capture > > include/sound/soc.h | 4 - > sound/soc/amd/acp-da7219-max98357a.c | 20 +-- > sound/soc/amd/acp-es8336.c | 2 - > sound/soc/amd/acp/acp-mach-common.c | 20 +-- > sound/soc/amd/acp3x-rt5682-max9836.c | 6 +- > sound/soc/amd/vangogh/acp5x-mach.c | 3 - > sound/soc/fsl/fsl-asoc-card.c | 16 +-- > sound/soc/fsl/imx-audmix.c | 6 +- > sound/soc/fsl/imx-card.c | 4 +- > sound/soc/intel/avs/boards/da7219.c | 2 - > sound/soc/intel/avs/boards/dmic.c | 4 +- > sound/soc/intel/avs/boards/hdaudio.c | 4 - > sound/soc/intel/avs/boards/i2s_test.c | 2 - > sound/soc/intel/avs/boards/max98357a.c | 2 +- > sound/soc/intel/avs/boards/max98373.c | 2 - > sound/soc/intel/avs/boards/max98927.c | 2 - > sound/soc/intel/avs/boards/nau8825.c | 2 - > sound/soc/intel/avs/boards/rt274.c | 2 - > sound/soc/intel/avs/boards/rt286.c | 2 - > sound/soc/intel/avs/boards/rt298.c | 2 - > sound/soc/intel/avs/boards/rt5682.c | 2 - > sound/soc/intel/avs/boards/ssm4567.c | 2 - > sound/soc/intel/boards/bdw-rt5650.c | 4 - > sound/soc/intel/boards/bdw-rt5677.c | 4 - > sound/soc/intel/boards/bdw_rt286.c | 10 +- > sound/soc/intel/boards/bxt_da7219_max98357a.c | 32 +++-- > sound/soc/intel/boards/bxt_rt298.c | 26 ++-- > sound/soc/intel/boards/bytcht_cx2072x.c | 6 +- > sound/soc/intel/boards/bytcht_da7213.c | 6 +- > sound/soc/intel/boards/bytcht_es8316.c | 6 +- > sound/soc/intel/boards/bytcht_nocodec.c | 6 +- > sound/soc/intel/boards/bytcr_rt5640.c | 6 +- > sound/soc/intel/boards/bytcr_rt5651.c | 6 +- > sound/soc/intel/boards/bytcr_wm5102.c | 6 +- > sound/soc/intel/boards/cht_bsw_max98090_ti.c | 6 +- > sound/soc/intel/boards/cht_bsw_nau8824.c | 6 +- > sound/soc/intel/boards/cht_bsw_rt5645.c | 6 +- > sound/soc/intel/boards/cht_bsw_rt5672.c | 6 +- > sound/soc/intel/boards/cml_rt1011_rt5682.c | 14 +-- > sound/soc/intel/boards/ehl_rt5660.c | 14 +-- > sound/soc/intel/boards/glk_rt5682_max98357a.c | 30 +++-- > sound/soc/intel/boards/hsw_rt5640.c | 10 +- > sound/soc/intel/boards/kbl_da7219_max98357a.c | 26 ++-- > sound/soc/intel/boards/kbl_da7219_max98927.c | 54 ++++----- > sound/soc/intel/boards/kbl_rt5660.c | 18 ++- > sound/soc/intel/boards/kbl_rt5663_max98927.c | 44 +++---- > .../intel/boards/kbl_rt5663_rt5514_max98927.c | 22 ++-- > sound/soc/intel/boards/skl_hda_dsp_common.c | 14 +-- > .../soc/intel/boards/skl_nau88l25_max98357a.c | 26 ++-- > sound/soc/intel/boards/skl_nau88l25_ssm4567.c | 26 ++-- > sound/soc/intel/boards/skl_rt286.c | 26 ++-- > sound/soc/intel/boards/sof_cs42l42.c | 12 +- > sound/soc/intel/boards/sof_da7219_max98373.c | 16 +-- > sound/soc/intel/boards/sof_es8336.c | 8 +- > sound/soc/intel/boards/sof_nau8825.c | 12 +- > sound/soc/intel/boards/sof_pcm512x.c | 8 +- > sound/soc/intel/boards/sof_rt5682.c | 12 +- > sound/soc/intel/boards/sof_sdw.c | 4 +- > sound/soc/intel/boards/sof_ssp_amp.c | 11 +- > sound/soc/intel/boards/sof_wm8804.c | 2 - > sound/soc/mediatek/mt2701/mt2701-cs42448.c | 20 +-- > sound/soc/mediatek/mt2701/mt2701-wm8960.c | 6 +- > sound/soc/mediatek/mt6797/mt6797-mt6351.c | 24 ++-- > sound/soc/mediatek/mt8173/mt8173-max98090.c | 6 +- > .../mediatek/mt8173/mt8173-rt5650-rt5514.c | 6 +- > .../mediatek/mt8173/mt8173-rt5650-rt5676.c | 10 +- > sound/soc/mediatek/mt8173/mt8173-rt5650.c | 10 +- > .../mediatek/mt8183/mt8183-da7219-max98357.c | 34 +++--- > .../mt8183/mt8183-mt6358-ts3a227-max98357.c | 34 +++--- > .../mt8186/mt8186-mt6366-da7219-max98357.c | 86 +++++-------- > .../mt8186/mt8186-mt6366-rt1019-rt5682s.c | 86 +++++-------- > sound/soc/mediatek/mt8188/mt8188-mt6359.c | 48 ++++---- > .../mt8192/mt8192-mt6359-rt1015-rt5682.c | 78 ++++++------ > sound/soc/mediatek/mt8195/mt8195-mt6359.c | 60 +++++---- > sound/soc/meson/axg-card.c | 8 +- > sound/soc/meson/meson-card-utils.c | 4 +- > sound/soc/samsung/odroid.c | 10 +- > sound/soc/soc-compress.c | 11 +- > sound/soc/soc-core.c | 20 +-- > sound/soc/soc-dai.c | 6 +- > sound/soc/soc-pcm.c | 114 +++++++----------- > sound/soc/soc-topology-test.c | 2 - > sound/soc/soc-topology.c | 4 +- > sound/soc/sof/nocodec.c | 4 - > 84 files changed, 511 insertions(+), 842 deletions(-) >