Hi Mark
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.
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@renesas.com Link: https://lore.kernel.org/r/ab3f0c0a-62fd-a468-b3cf-0e4b59bac6ae@linux.intel.c...
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 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(-)