From b552524c7d5ce2f1d9beb2cc8ee570b76287aa43 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Mon, 4 Apr 2022 17:02:29 -0500 Subject: [PATCH 1/9] topology1: move sof-hda-generic-kwd to development We don't support this topology in production and it's not clear if it's even maintained, move to development. Signed-off-by: Pierre-Louis Bossart --- tools/topology/topology1/CMakeLists.txt | 6 ++++-- tools/topology/topology1/development/CMakeLists.txt | 3 +++ .../topology1/{ => development}/sof-hda-generic-kwd.m4 | 0 3 files changed, 7 insertions(+), 2 deletions(-) rename tools/topology/topology1/{ => development}/sof-hda-generic-kwd.m4 (100%) diff --git a/tools/topology/topology1/CMakeLists.txt b/tools/topology/topology1/CMakeLists.txt index 7507465740ea..f0162c1dcb8a 100644 --- a/tools/topology/topology1/CMakeLists.txt +++ b/tools/topology/topology1/CMakeLists.txt @@ -20,13 +20,15 @@ set(TPLGS "sof-cht-nocodec\;sof-cht-nocodec\;-DPLATFORM=cht-nocodec\;-DSSP_NUM=2" "sof-cht-nocodec\;sof-byt-nocodec\;-DPLATFORM=byt-nocodec\;-DSSP_NUM=2" "sof-bdw-nocodec\;sof-bdw-nocodec" + + ## HDaudio codec topologies "sof-hda-generic\;sof-hda-generic\;-DCHANNELS=0\;-DHSPROC=volume\;-DDYNAMIC=1" "sof-hda-generic\;sof-hda-generic-1ch\;-DCHANNELS=2\;-DHSPROC=volume\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DDYNAMIC=1" "sof-hda-generic\;sof-hda-generic-2ch\;-DCHANNELS=2\;-DHSPROC=volume\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DDYNAMIC=1" "sof-hda-generic\;sof-hda-generic-3ch\;-DCHANNELS=4\;-DHSPROC=volume\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DDYNAMIC=1" "sof-hda-generic\;sof-hda-generic-4ch\;-DCHANNELS=4\;-DHSPROC=volume\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DDYNAMIC=1" - "sof-hda-generic-kwd\;sof-hda-generic-2ch-kwd\;-DCHANNELS=2\;-DDYNAMIC=1" - "sof-hda-generic-kwd\;sof-hda-generic-4ch-kwd\;-DCHANNELS=4\;-DDYNAMIC=1" + ## end HDaudio codec topologies + "sof-hda-generic-idisp\;sof-hda-generic-idisp\;-DCHANNELS=0\;-DDYNAMIC=1" "sof-hda-generic-idisp\;sof-hda-generic-idisp-2ch\;-DCHANNELS=2\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DDYNAMIC=1" "sof-hda-generic-idisp\;sof-hda-generic-idisp-4ch\;-DCHANNELS=4\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DDYNAMIC=1" diff --git a/tools/topology/topology1/development/CMakeLists.txt b/tools/topology/topology1/development/CMakeLists.txt index d7f39d5a4e6a..ff69173d732c 100644 --- a/tools/topology/topology1/development/CMakeLists.txt +++ b/tools/topology/topology1/development/CMakeLists.txt @@ -31,6 +31,9 @@ set(TPLGS "sof-imx8mp-compr-mp3-wm8960\;sof-imx8mp-compr-mp3-wm8960" "sof-apl-nocodec-demux-eq-4ch4ch\;sof-apl-nocodec-demux-eq-4ch4ch" "sof-apl-nocodec-demux-eq-2ch4ch\;sof-apl-nocodec-demux-eq-2ch4ch" + + "sof-hda-generic-kwd\;sof-hda-generic-2ch-kwd\;-DCHANNELS=2\;-DDYNAMIC=1" + "sof-hda-generic-kwd\;sof-hda-generic-4ch-kwd\;-DCHANNELS=4\;-DDYNAMIC=1" ) diff --git a/tools/topology/topology1/sof-hda-generic-kwd.m4 b/tools/topology/topology1/development/sof-hda-generic-kwd.m4 similarity index 100% rename from tools/topology/topology1/sof-hda-generic-kwd.m4 rename to tools/topology/topology1/development/sof-hda-generic-kwd.m4 From 32265d032c36a16658d2d445f9441a2fdd3e2ef5 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Fri, 10 Sep 2021 19:13:42 -0500 Subject: [PATCH 2/9] topology1: sof-hda-generic: add deep-buffer pipeline for analog playback Use SoundWire convention with deep-buffer using device 31. Signed-off-by: Pierre-Louis Bossart --- tools/topology/topology1/sof-hda-generic.m4 | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/topology/topology1/sof-hda-generic.m4 b/tools/topology/topology1/sof-hda-generic.m4 index 9e04d3c4a470..89325aca86f2 100644 --- a/tools/topology/topology1/sof-hda-generic.m4 +++ b/tools/topology/topology1/sof-hda-generic.m4 @@ -104,6 +104,16 @@ PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, SCHEDULE_TIME_DOMAIN_TIMER, PIPELINE_PLAYBACK_SCHED_COMP_1) +# Deep buffer playback pipeline 31 on PCM 31 using max 2 channels of s32le +# Set 1000us deadline on core 0 with priority 0. +# TODO: Modify pipeline deadline to account for deep buffering +PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, + 31, 31, 2, s32le, + 1000, 0, 0, + 48000, 48000, 48000, + SCHEDULE_TIME_DOMAIN_TIMER, + PIPELINE_PLAYBACK_SCHED_COMP_1) + # Undefine PIPELINE_FILTERx to avoid to propagate elsewhere, other endpoints # with filters blobs will need similar handling as HSPROC_FILTERx. undefine(`PIPELINE_FILTER1') @@ -143,10 +153,12 @@ SectionGraph."mixer-host" { lines [ # connect mixer dai pipelines to PCM pipelines dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_30) + dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_31) ] } PCM_DUPLEX_ADD(HDA Analog, 0, PIPELINE_PCM_30, PIPELINE_PCM_2) +PCM_PLAYBACK_ADD(HDA Analog Deep Buffer, 31, PIPELINE_PCM_31) PCM_PLAYBACK_ADD(HDMI1, 3, PIPELINE_PCM_7) PCM_PLAYBACK_ADD(HDMI2, 4, PIPELINE_PCM_8) PCM_PLAYBACK_ADD(HDMI3, 5, PIPELINE_PCM_9) From bcc70d008df664e03d9da53e45c707e301723f19 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Mon, 4 Apr 2022 17:44:44 -0500 Subject: [PATCH 3/9] topology1: sof-hda-generic: make deep-buffer optional We don't want to release these topologies to world+dog due to dependencies on kernel version, so let's make the deep-buffer optional. The next patch will enable these topologies in the development/ directory. Signed-off-by: Pierre-Louis Bossart --- tools/topology/topology1/sof-hda-generic.m4 | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/topology/topology1/sof-hda-generic.m4 b/tools/topology/topology1/sof-hda-generic.m4 index 89325aca86f2..485ef520c496 100644 --- a/tools/topology/topology1/sof-hda-generic.m4 +++ b/tools/topology/topology1/sof-hda-generic.m4 @@ -107,12 +107,16 @@ PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, # Deep buffer playback pipeline 31 on PCM 31 using max 2 channels of s32le # Set 1000us deadline on core 0 with priority 0. # TODO: Modify pipeline deadline to account for deep buffering +ifdef(`DEEP_BUFFER', +` PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, 31, 31, 2, s32le, 1000, 0, 0, 48000, 48000, 48000, SCHEDULE_TIME_DOMAIN_TIMER, PIPELINE_PLAYBACK_SCHED_COMP_1) +' +) # Undefine PIPELINE_FILTERx to avoid to propagate elsewhere, other endpoints # with filters blobs will need similar handling as HSPROC_FILTERx. @@ -153,12 +157,20 @@ SectionGraph."mixer-host" { lines [ # connect mixer dai pipelines to PCM pipelines dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_30) +ifdef(`DEEP_BUFFER', +` dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_31) +' +) ] } PCM_DUPLEX_ADD(HDA Analog, 0, PIPELINE_PCM_30, PIPELINE_PCM_2) +ifdef(`DEEP_BUFFER', +` PCM_PLAYBACK_ADD(HDA Analog Deep Buffer, 31, PIPELINE_PCM_31) +' +) PCM_PLAYBACK_ADD(HDMI1, 3, PIPELINE_PCM_7) PCM_PLAYBACK_ADD(HDMI2, 4, PIPELINE_PCM_8) PCM_PLAYBACK_ADD(HDMI3, 5, PIPELINE_PCM_9) From bb5c6a844a5418de38266e3b3a40d7fe4acbb5bb Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Mon, 4 Apr 2022 17:47:46 -0500 Subject: [PATCH 4/9] topology1/kernel_dependent/v5.19: enable HDaudio codec deep-buffer topologies This patch duplicates the configuration at the higher level and adds the "DEEP_BUFFER" definition. The topologies are generated in the kernel_dependent/v5.19 directory and shall only be used by distro/users when their kernel is based on 5.19-rc1 or later. If these topologies are used with an older kernel, the ASoC DPCM state machine issues will result in broken audio. We have no ability to detect a dependency on kernel to load a topology. This is not very elegant and will require changes in two places, but I don't see a better solution with M4. Signed-off-by: Pierre-Louis Bossart --- tools/topology/topology1/CMakeLists.txt | 1 + .../topology1/kernel_dependent/CMakeLists.txt | 3 ++ .../kernel_dependent/v5.19/CMakeLists.txt | 50 +++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 tools/topology/topology1/kernel_dependent/CMakeLists.txt create mode 100644 tools/topology/topology1/kernel_dependent/v5.19/CMakeLists.txt diff --git a/tools/topology/topology1/CMakeLists.txt b/tools/topology/topology1/CMakeLists.txt index f0162c1dcb8a..a0e857968566 100644 --- a/tools/topology/topology1/CMakeLists.txt +++ b/tools/topology/topology1/CMakeLists.txt @@ -287,3 +287,4 @@ endforeach() add_subdirectory(development) add_subdirectory(dsp_enhancement) +add_subdirectory(kernel_dependent) diff --git a/tools/topology/topology1/kernel_dependent/CMakeLists.txt b/tools/topology/topology1/kernel_dependent/CMakeLists.txt new file mode 100644 index 000000000000..5b81d374b6a7 --- /dev/null +++ b/tools/topology/topology1/kernel_dependent/CMakeLists.txt @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: BSD-3-Clause + +add_subdirectory(v5.19) diff --git a/tools/topology/topology1/kernel_dependent/v5.19/CMakeLists.txt b/tools/topology/topology1/kernel_dependent/v5.19/CMakeLists.txt new file mode 100644 index 000000000000..eda588baea17 --- /dev/null +++ b/tools/topology/topology1/kernel_dependent/v5.19/CMakeLists.txt @@ -0,0 +1,50 @@ +# SPDX-License-Identifier: BSD-3-Clause + +# Those topologies are built from topology in the parent directory +set(TPLGS_UP + ## HDaudio codec topologies + "sof-hda-generic\;sof-hda-generic\;-DDEEP_BUFFER\;-DCHANNELS=0\;-DHSPROC=volume\;-DDYNAMIC=1" + "sof-hda-generic\;sof-hda-generic-1ch\;-DDEEP_BUFFER\;-DCHANNELS=2\;-DHSPROC=volume\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DDYNAMIC=1" + "sof-hda-generic\;sof-hda-generic-2ch\;-DDEEP_BUFFER\;-DCHANNELS=2\;-DHSPROC=volume\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DDYNAMIC=1" + "sof-hda-generic\;sof-hda-generic-3ch\;-DDEEP_BUFFER\;-DCHANNELS=4\;-DHSPROC=volume\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DDYNAMIC=1" + "sof-hda-generic\;sof-hda-generic-4ch\;-DDEEP_BUFFER\;-DCHANNELS=4\;-DHSPROC=volume\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DDYNAMIC=1" + ## end HDaudio codec topologies +) + +add_custom_target(kernel_dependent_v5_19_topologies1) +add_dependencies(topologies1 kernel_dependent_v5_19_topologies1) + +# handle topologies in parent directory +foreach(tplg ${TPLGS_UP}) + list(GET tplg 0 input) + list(GET tplg 1 output) + list(LENGTH tplg tplg_len) + math(EXPR num_args "${tplg_len} - 1") + set(DEFINES "") + if (${num_args} GREATER 1) + foreach(index RANGE 2 ${num_args}) + list(GET tplg ${index} custom_define) + list(APPEND DEFINES ${custom_define}) + endforeach() + endif() + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${output}.conf + COMMAND m4 --fatal-warnings + ${DEFINES} + -I ${CMAKE_CURRENT_SOURCE_DIR}/../../m4 + -I ${CMAKE_CURRENT_SOURCE_DIR}/../../common + -I ${CMAKE_CURRENT_SOURCE_DIR}/../../platform/common + -I ${CMAKE_CURRENT_SOURCE_DIR}/../../ + -I ${CMAKE_CURRENT_BINARY_DIR}/../../ + ${CMAKE_CURRENT_SOURCE_DIR}/../../common/abi.m4 + ${CMAKE_CURRENT_SOURCE_DIR}/../../${input}.m4 + > ${output}.conf + DEPENDS abi_v1 + VERBATIM + USES_TERMINAL + ) + add_alsatplg_command(${output}.conf ${output}.tplg) + + add_custom_target(topology_${output} DEPENDS ${output}.tplg) + add_dependencies(kernel_dependent_v5_19_topologies1 topology_${output}) +endforeach() From cb3edd6bd2292e42fa3930eb2a70423c37a23e73 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Mon, 4 Apr 2022 16:58:43 -0500 Subject: [PATCH 5/9] topology1: CMakeLists: regroup SoundWire topologies For some reason the topologies are in separate blocks, regroup them. No functionality change. Signed-off-by: Pierre-Louis Bossart --- tools/topology/topology1/CMakeLists.txt | 26 +++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/tools/topology/topology1/CMakeLists.txt b/tools/topology/topology1/CMakeLists.txt index a0e857968566..0e7bd79aadc5 100644 --- a/tools/topology/topology1/CMakeLists.txt +++ b/tools/topology/topology1/CMakeLists.txt @@ -90,6 +90,19 @@ set(TPLGS "sof-cavs-nocodec\;sof-ehl-nocodec\;-DPLATFORM=ehl\;-DDYNAMIC=1" "sof-cavs-nocodec\;sof-adl-nocodec\;-DPLATFORM=adl\;-DDMIC_48k_CORE_ID=1\;-DSSP0_CORE_ID=2\;-DSSP1_CORE_ID=3\;-DDYNAMIC=1" "sof-icl-dmic-4ch\;sof-icl-dmic-4ch" + "sof-cml-rt5682\;sof-cml-rt5682\;-DPLATFORM=cml\;-DDMICPROC=eq-iir-volume\;-DDMIC16KPROC=eq-iir-volume" + "sof-cml-rt5682\;sof-whl-rt5682\;-DPLATFORM=whl\;-DDMICPROC=eq-iir-volume\;-DDMIC16KPROC=eq-iir-volume" + "sof-cml-rt5682\;sof-icl-rt5682\;-DPLATFORM=icl\;-DDMICPROC=eq-iir-volume\;-DDMIC16KPROC=eq-iir-volume" + "sof-cml-rt5682-kwd\;sof-cml-rt5682-kwd\;-DPLATFORM=cml" + "sof-cml-rt5682-kwd\;sof-whl-rt5682-kwd\;-DPLATFORM=whl" + "sof-cml-rt5682-kwd\;sof-icl-rt5682-kwd\;-DPLATFORM=icl" + "sof-cml-demux-rt5682\;sof-cml-demux-rt5682\;-DPLATFORM=cml" + "sof-cml-demux-rt5682\;sof-whl-demux-rt5682\;-DPLATFORM=whl" + "sof-cml-rt5682-max98357a\;sof-cml-rt5682-max98357a\;-DPLATFORM=cml" + "sof-cml-demux-rt5682-max98357a\;sof-cml-demux-rt5682-max98357a\;-DPLATFORM=cml" + "sof-cml-rt1011-rt5682\;sof-cml-rt1011-rt5682\;-DPLATFORM=cml\;-DPPROC=volume" + + ## SoundWire topologies # sof-icl-r700 is kept for compatibility with CI and previous versions of the kernel. "sof-icl-rt700\;sof-icl-rt700\;-DCHANNELS=4\;-DPLATFORM=icl\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4" "sof-icl-rt700\;sof-icl-rt700-4ch\;-DCHANNELS=4\;-DPLATFORM=icl\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4" @@ -114,23 +127,12 @@ set(TPLGS "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt1316-l2-mono-rt714-l3\;-DPLATFORM=adl\;-DMONO\;-DNOJACK\;-DAMP_1_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=3" "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l2-rt1316-l01-rt714-l3\;-DPLATFORM=adl\;-DUAJ_LINK=2\;-DAMP_1_LINK=0\;-DAMP_2_LINK=1\;-DEXT_AMP_REF\;-DMIC_LINK=3" "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l2-rt1316-l01\;-DPLATFORM=adl\;-DUAJ_LINK=2\;-DAMP_1_LINK=0\;-DAMP_2_LINK=1\;-DEXT_AMP_REF\;-DNO_LOCAL_MIC" - "sof-cml-rt5682\;sof-cml-rt5682\;-DPLATFORM=cml\;-DDMICPROC=eq-iir-volume\;-DDMIC16KPROC=eq-iir-volume" - "sof-cml-rt5682\;sof-whl-rt5682\;-DPLATFORM=whl\;-DDMICPROC=eq-iir-volume\;-DDMIC16KPROC=eq-iir-volume" - "sof-cml-rt5682\;sof-icl-rt5682\;-DPLATFORM=icl\;-DDMICPROC=eq-iir-volume\;-DDMIC16KPROC=eq-iir-volume" - "sof-cml-rt5682-kwd\;sof-cml-rt5682-kwd\;-DPLATFORM=cml" - "sof-cml-rt5682-kwd\;sof-whl-rt5682-kwd\;-DPLATFORM=whl" - "sof-cml-rt5682-kwd\;sof-icl-rt5682-kwd\;-DPLATFORM=icl" - "sof-cml-demux-rt5682\;sof-cml-demux-rt5682\;-DPLATFORM=cml" - "sof-cml-demux-rt5682\;sof-whl-demux-rt5682\;-DPLATFORM=whl" - "sof-cml-rt5682-max98357a\;sof-cml-rt5682-max98357a\;-DPLATFORM=cml" - "sof-cml-demux-rt5682-max98357a\;sof-cml-demux-rt5682-max98357a\;-DPLATFORM=cml" - "sof-cml-rt1011-rt5682\;sof-cml-rt1011-rt5682\;-DPLATFORM=cml\;-DPPROC=volume" - "sof-tgl-rt711-rt1308\;sof-tgl-rt711-rt1308-2ch\;-DCHANNELS=2\;-DEXT_AMP\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DPLATFORM=tgl" "sof-tgl-rt711-rt1308\;sof-tgl-rt711-rt1308-4ch\;-DCHANNELS=4\;-DEXT_AMP\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DPLATFORM=tgl" "sof-tgl-rt711-rt1308\;sof-tgl-rt711-4ch\;-DCHANNELS=4\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DPLATFORM=tgl" "sof-tgl-rt711-rt1308\;sof-adl-rt711-4ch\;-DCHANNELS=4\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DPLATFORM=adl" "sof-tgl-rt711-rt1308\;sof-adl-rt711\;-DCHANNELS=0\;-DPLATFORM=adl" + ## end SoundWire topologies "sof-ehl-rt5660\;sof-ehl-rt5660\;-DHDMI=1" "sof-ehl-rt5660\;sof-ehl-rt5660-nohdmi" From 8cb2d8e910ecbd252ee2df9f0aa078a95f4c5751 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Mon, 4 Apr 2022 17:31:09 -0500 Subject: [PATCH 6/9] topology1: CMakeLists: split SoundWire NOJACK topologies Before we enable the headset deep-buffer solution, we want to extract the NOJACK topologies where the headset deep-buffer would be an oxymoron. Signed-off-by: Pierre-Louis Bossart --- tools/topology/topology1/CMakeLists.txt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/topology/topology1/CMakeLists.txt b/tools/topology/topology1/CMakeLists.txt index 0e7bd79aadc5..8b6ad40c7916 100644 --- a/tools/topology/topology1/CMakeLists.txt +++ b/tools/topology/topology1/CMakeLists.txt @@ -122,9 +122,6 @@ set(TPLGS "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l0-rt1308-l12-rt715-l3\;-DPLATFORM=adl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DMIC_LINK=3" "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l0-rt1316-l12-rt714-l3\;-DPLATFORM=adl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=3" "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l0-rt1316-l13-rt714-l2\;-DPLATFORM=adl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=3\;-DEXT_AMP_REF\;-DMIC_LINK=2" - "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt1316-l2-mono-rt714-l0\;-DPLATFORM=adl\;-DMONO\;-DNOJACK\;-DAMP_1_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=0" - "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt1316-l12-rt714-l0\;-DPLATFORM=adl\;-DNOJACK\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=0" - "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt1316-l2-mono-rt714-l3\;-DPLATFORM=adl\;-DMONO\;-DNOJACK\;-DAMP_1_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=3" "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l2-rt1316-l01-rt714-l3\;-DPLATFORM=adl\;-DUAJ_LINK=2\;-DAMP_1_LINK=0\;-DAMP_2_LINK=1\;-DEXT_AMP_REF\;-DMIC_LINK=3" "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l2-rt1316-l01\;-DPLATFORM=adl\;-DUAJ_LINK=2\;-DAMP_1_LINK=0\;-DAMP_2_LINK=1\;-DEXT_AMP_REF\;-DNO_LOCAL_MIC" "sof-tgl-rt711-rt1308\;sof-tgl-rt711-rt1308-2ch\;-DCHANNELS=2\;-DEXT_AMP\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DPLATFORM=tgl" @@ -134,6 +131,12 @@ set(TPLGS "sof-tgl-rt711-rt1308\;sof-adl-rt711\;-DCHANNELS=0\;-DPLATFORM=adl" ## end SoundWire topologies + ## SoundWire NOJACK topologies + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt1316-l2-mono-rt714-l0\;-DPLATFORM=adl\;-DMONO\;-DNOJACK\;-DAMP_1_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=0" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt1316-l12-rt714-l0\;-DPLATFORM=adl\;-DNOJACK\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=0" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt1316-l2-mono-rt714-l3\;-DPLATFORM=adl\;-DMONO\;-DNOJACK\;-DAMP_1_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=3" + ## end SoundWire NOJACK topologies + "sof-ehl-rt5660\;sof-ehl-rt5660\;-DHDMI=1" "sof-ehl-rt5660\;sof-ehl-rt5660-nohdmi" "sof-tgl-max98357a-rt5682\;sof-tgl-max98357a-rt5682\;-DCODEC=MAX98357A\;-DFMT=s16le\;-DPLATFORM=tgl\;-DAMP_SSP=1" From b3a11758eedc2f2ab5bc7af8102b462dd71d23f7 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Fri, 6 Aug 2021 16:12:10 -0500 Subject: [PATCH 7/9] topology1: SoundWire: add deep buffer support for headphone Deep buffer is device 31 by convention Signed-off-by: Pierre-Louis Bossart --- tools/topology/topology1/sof-cml-rt700.m4 | 13 +++++++++++++ tools/topology/topology1/sof-icl-rt700.m4 | 13 +++++++++++++ .../topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4 | 13 +++++++++++++ tools/topology/topology1/sof-tgl-rt711-rt1308.m4 | 13 +++++++++++++ 4 files changed, 52 insertions(+) diff --git a/tools/topology/topology1/sof-cml-rt700.m4 b/tools/topology/topology1/sof-cml-rt700.m4 index a6306b206ab1..0787dc98d558 100644 --- a/tools/topology/topology1/sof-cml-rt700.m4 +++ b/tools/topology/topology1/sof-cml-rt700.m4 @@ -46,6 +46,7 @@ DEBUG_START # Define the pipelines # # PCM0 ---> volume ----> mixer --->ALH 2 BE dailink 0 +# PCM31 ---> volume ------^ # PCM1 <--- volume <---- ALH 3 BE dailink 1 # PCM10 <---------------- DMIC01 (dmic0 capture, BE dailink 2) # PCM11 <---------------- DMIC16k (dmic16k, BE dailink 3) @@ -120,12 +121,23 @@ PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, SCHEDULE_TIME_DOMAIN_TIMER, PIPELINE_PLAYBACK_SCHED_COMP_1) +# Deep buffer playback pipeline 31 on PCM 31 using max 2 channels of s32le +# Set 1000us deadline on core 0 with priority 0. +# TODO: Modify pipeline deadline to account for deep buffering +PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, + 31, 31, 2, s32le, + 1000, 0, 0, + 48000, 48000, 48000, + SCHEDULE_TIME_DOMAIN_TIMER, + PIPELINE_PLAYBACK_SCHED_COMP_1) + SectionGraph."mixer-host" { index "0" lines [ # connect mixer dai pipelines to PCM pipelines dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_30) + dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_31) ] } @@ -153,6 +165,7 @@ DAI_ADD(sof/pipe-dai-playback.m4, # PCM Low Latency, id 0 dnl PCM_PLAYBACK_ADD(name, pcm_id, playback) PCM_PLAYBACK_ADD(Jack Out, 0, PIPELINE_PCM_30) +PCM_PLAYBACK_ADD(Jack Out DeepBuffer, 31, PIPELINE_PCM_31) PCM_CAPTURE_ADD(Jack In, 1, PIPELINE_PCM_2) PCM_PLAYBACK_ADD(HDMI 1, 5, PIPELINE_PCM_6) PCM_PLAYBACK_ADD(HDMI 2, 6, PIPELINE_PCM_7) diff --git a/tools/topology/topology1/sof-icl-rt700.m4 b/tools/topology/topology1/sof-icl-rt700.m4 index dabff79dbd91..571a9f062e88 100644 --- a/tools/topology/topology1/sof-icl-rt700.m4 +++ b/tools/topology/topology1/sof-icl-rt700.m4 @@ -46,6 +46,7 @@ DEBUG_START # Define the pipelines # # PCM0 ---> volume ----> mixer --->ALH 2 BE dailink 0 +# PCM31 ---> volume ------^ # PCM1 <--- volume <---- ALH 3 BE dailink 1 # PCM10 <---------------- DMIC01 (dmic0 capture, BE dailink 2) # PCM11 <---------------- DMIC16k (dmic16k, BE dailink 3) @@ -120,12 +121,23 @@ PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, SCHEDULE_TIME_DOMAIN_TIMER, PIPELINE_PLAYBACK_SCHED_COMP_1) +# Deep buffer playback pipeline 31 on PCM 31 using max 2 channels of s32le +# Set 1000us deadline on core 0 with priority 0. +# TODO: Modify pipeline deadline to account for deep buffering +PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, + 31, 31, 2, s32le, + 1000, 0, 0, + 48000, 48000, 48000, + SCHEDULE_TIME_DOMAIN_TIMER, + PIPELINE_PLAYBACK_SCHED_COMP_1) + SectionGraph."mixer-host" { index "0" lines [ # connect mixer dai pipelines to PCM pipelines dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_30) + dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_31) ] } @@ -153,6 +165,7 @@ DAI_ADD(sof/pipe-dai-playback.m4, # PCM Low Latency, id 0 dnl PCM_PLAYBACK_ADD(name, pcm_id, playback) PCM_PLAYBACK_ADD(Jack Out, 0, PIPELINE_PCM_30) +PCM_PLAYBACK_ADD(Jack Out DeepBuffer, 31, PIPELINE_PCM_31) PCM_CAPTURE_ADD(Jack In, 1, PIPELINE_PCM_2) PCM_PLAYBACK_ADD(HDMI 1, 5, PIPELINE_PCM_6) PCM_PLAYBACK_ADD(HDMI 2, 6, PIPELINE_PCM_7) diff --git a/tools/topology/topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4 b/tools/topology/topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4 index 98339341430a..1b1e121be9d2 100644 --- a/tools/topology/topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4 +++ b/tools/topology/topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4 @@ -102,6 +102,7 @@ MUXDEMUX_CONFIG(demux_priv_3, 2, LIST_NONEWLINE(`', `matrix1,', `matrix2')) ifdef(`NOJACK', `', ` # PCM0 ---> volume ----> mixer --->ALH 2 BE UAJ_LINK +# PCM31 ---> volume ------^ # PCM1 <--- volume <---- ALH 3 BE UAJ_LINK ') ifdef(`NOAMP', `', @@ -227,12 +228,23 @@ PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, SCHEDULE_TIME_DOMAIN_TIMER, PIPELINE_PLAYBACK_SCHED_COMP_1) +# Deep buffer playback pipeline 31 on PCM 31 using max 2 channels of s32le +# Set 1000us deadline on core 0 with priority 0. +# TODO: Modify pipeline deadline to account for deep buffering +PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, + 31, 31, 2, s32le, + 1000, 0, 0, + 48000, 48000, 48000, + SCHEDULE_TIME_DOMAIN_TIMER, + PIPELINE_PLAYBACK_SCHED_COMP_1) + SectionGraph."mixer-host" { index "0" lines [ # connect mixer dai pipelines to PCM pipelines dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_30) + dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_31) ] } @@ -304,6 +316,7 @@ dnl PCM_PLAYBACK_ADD(name, pcm_id, playback) ifdef(`NOJACK', `', ` PCM_PLAYBACK_ADD(Jack Out, 0, PIPELINE_PCM_30) +PCM_PLAYBACK_ADD(Jack Out DeepBuffer, 31, PIPELINE_PCM_31) PCM_CAPTURE_ADD(Jack In, 1, PIPELINE_PCM_2) ') ifdef(`NOAMP', `', diff --git a/tools/topology/topology1/sof-tgl-rt711-rt1308.m4 b/tools/topology/topology1/sof-tgl-rt711-rt1308.m4 index b6be8109c0af..1d9ba307fa99 100644 --- a/tools/topology/topology1/sof-tgl-rt711-rt1308.m4 +++ b/tools/topology/topology1/sof-tgl-rt711-rt1308.m4 @@ -97,6 +97,7 @@ DEBUG_START # Define the pipelines # # PCM0 ---> volume ----> mixer --->ALH 2 BE dailink 0 +# PCM31 ---> volume ------^ # PCM1 <--- volume <---- ALH 3 BE dailink 1 ifdef(`EXT_AMP', ` # PCM2 ---> volume ----> ALH 2 BE dailink 2 @@ -187,12 +188,23 @@ PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, SCHEDULE_TIME_DOMAIN_TIMER, PIPELINE_PLAYBACK_SCHED_COMP_1) +# Deep buffer playback pipeline 31 on PCM 31 using max 2 channels of s32le +# Set 1000us deadline on core 0 with priority 0. +# TODO: Modify pipeline deadline to account for deep buffering +PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, + 31, 31, 2, s32le, + 1000, 0, 0, + 48000, 48000, 48000, + SCHEDULE_TIME_DOMAIN_TIMER, + PIPELINE_PLAYBACK_SCHED_COMP_1) + SectionGraph."mixer-host" { index "0" lines [ # connect mixer dai pipelines to PCM pipelines dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_30) + dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_31) ] } @@ -237,6 +249,7 @@ DAI_ADD(sof/pipe-dai-playback.m4, # PCM Low Latency, id 0 dnl PCM_PLAYBACK_ADD(name, pcm_id, playback) PCM_PLAYBACK_ADD(Jack Out, 0, PIPELINE_PCM_30) +PCM_PLAYBACK_ADD(Jack Out DeepBuffer, 31, PIPELINE_PCM_31) PCM_CAPTURE_ADD(Jack In, 1, PIPELINE_PCM_2) ifdef(`EXT_AMP', ` From 19b01ad0debad937d868e399022c6aebebf9a07a Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Mon, 4 Apr 2022 17:22:55 -0500 Subject: [PATCH 8/9] topology1: SoundWire: make deep-buffer optional We don't want to release these topologies to world+dog due to dependencies on kernel version, so let's make the deep-buffer optional. The next patch will enable these topologies in the development/ directory. Signed-off-by: Pierre-Louis Bossart --- tools/topology/topology1/sof-cml-rt700.m4 | 12 ++++++++++++ tools/topology/topology1/sof-icl-rt700.m4 | 12 ++++++++++++ .../topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4 | 12 ++++++++++++ tools/topology/topology1/sof-tgl-rt711-rt1308.m4 | 13 +++++++++++++ 4 files changed, 49 insertions(+) diff --git a/tools/topology/topology1/sof-cml-rt700.m4 b/tools/topology/topology1/sof-cml-rt700.m4 index 0787dc98d558..f114648c4362 100644 --- a/tools/topology/topology1/sof-cml-rt700.m4 +++ b/tools/topology/topology1/sof-cml-rt700.m4 @@ -124,12 +124,16 @@ PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, # Deep buffer playback pipeline 31 on PCM 31 using max 2 channels of s32le # Set 1000us deadline on core 0 with priority 0. # TODO: Modify pipeline deadline to account for deep buffering +ifdef(`HEADSET_DEEP_BUFFER', +` PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, 31, 31, 2, s32le, 1000, 0, 0, 48000, 48000, 48000, SCHEDULE_TIME_DOMAIN_TIMER, PIPELINE_PLAYBACK_SCHED_COMP_1) +' +) SectionGraph."mixer-host" { index "0" @@ -137,7 +141,11 @@ SectionGraph."mixer-host" { lines [ # connect mixer dai pipelines to PCM pipelines dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_30) +ifdef(`HEADSET_DEEP_BUFFER', +` dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_31) +' +) ] } @@ -165,7 +173,11 @@ DAI_ADD(sof/pipe-dai-playback.m4, # PCM Low Latency, id 0 dnl PCM_PLAYBACK_ADD(name, pcm_id, playback) PCM_PLAYBACK_ADD(Jack Out, 0, PIPELINE_PCM_30) +ifdef(`HEADSET_DEEP_BUFFER', +` PCM_PLAYBACK_ADD(Jack Out DeepBuffer, 31, PIPELINE_PCM_31) +' +) PCM_CAPTURE_ADD(Jack In, 1, PIPELINE_PCM_2) PCM_PLAYBACK_ADD(HDMI 1, 5, PIPELINE_PCM_6) PCM_PLAYBACK_ADD(HDMI 2, 6, PIPELINE_PCM_7) diff --git a/tools/topology/topology1/sof-icl-rt700.m4 b/tools/topology/topology1/sof-icl-rt700.m4 index 571a9f062e88..bce8e9bee623 100644 --- a/tools/topology/topology1/sof-icl-rt700.m4 +++ b/tools/topology/topology1/sof-icl-rt700.m4 @@ -124,12 +124,16 @@ PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, # Deep buffer playback pipeline 31 on PCM 31 using max 2 channels of s32le # Set 1000us deadline on core 0 with priority 0. # TODO: Modify pipeline deadline to account for deep buffering +ifdef(`HEADSET_DEEP_BUFFER', +` PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, 31, 31, 2, s32le, 1000, 0, 0, 48000, 48000, 48000, SCHEDULE_TIME_DOMAIN_TIMER, PIPELINE_PLAYBACK_SCHED_COMP_1) +' +) SectionGraph."mixer-host" { index "0" @@ -137,7 +141,11 @@ SectionGraph."mixer-host" { lines [ # connect mixer dai pipelines to PCM pipelines dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_30) +ifdef(`HEADSET_DEEP_BUFFER', +` dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_31) +' +) ] } @@ -165,7 +173,11 @@ DAI_ADD(sof/pipe-dai-playback.m4, # PCM Low Latency, id 0 dnl PCM_PLAYBACK_ADD(name, pcm_id, playback) PCM_PLAYBACK_ADD(Jack Out, 0, PIPELINE_PCM_30) +ifdef(`HEADSET_DEEP_BUFFER', +` PCM_PLAYBACK_ADD(Jack Out DeepBuffer, 31, PIPELINE_PCM_31) +' +) PCM_CAPTURE_ADD(Jack In, 1, PIPELINE_PCM_2) PCM_PLAYBACK_ADD(HDMI 1, 5, PIPELINE_PCM_6) PCM_PLAYBACK_ADD(HDMI 2, 6, PIPELINE_PCM_7) diff --git a/tools/topology/topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4 b/tools/topology/topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4 index 1b1e121be9d2..10460f6788c4 100644 --- a/tools/topology/topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4 +++ b/tools/topology/topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4 @@ -231,12 +231,16 @@ PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, # Deep buffer playback pipeline 31 on PCM 31 using max 2 channels of s32le # Set 1000us deadline on core 0 with priority 0. # TODO: Modify pipeline deadline to account for deep buffering +ifdef(`HEADSET_DEEP_BUFFER', +` PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, 31, 31, 2, s32le, 1000, 0, 0, 48000, 48000, 48000, SCHEDULE_TIME_DOMAIN_TIMER, PIPELINE_PLAYBACK_SCHED_COMP_1) +' +) SectionGraph."mixer-host" { index "0" @@ -244,7 +248,11 @@ SectionGraph."mixer-host" { lines [ # connect mixer dai pipelines to PCM pipelines dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_30) +ifdef(`HEADSET_DEEP_BUFFER', +` dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_31) +' +) ] } @@ -316,7 +324,11 @@ dnl PCM_PLAYBACK_ADD(name, pcm_id, playback) ifdef(`NOJACK', `', ` PCM_PLAYBACK_ADD(Jack Out, 0, PIPELINE_PCM_30) +ifdef(`HEADSET_DEEP_BUFFER', +` PCM_PLAYBACK_ADD(Jack Out DeepBuffer, 31, PIPELINE_PCM_31) +' +) PCM_CAPTURE_ADD(Jack In, 1, PIPELINE_PCM_2) ') ifdef(`NOAMP', `', diff --git a/tools/topology/topology1/sof-tgl-rt711-rt1308.m4 b/tools/topology/topology1/sof-tgl-rt711-rt1308.m4 index 1d9ba307fa99..702b171e3307 100644 --- a/tools/topology/topology1/sof-tgl-rt711-rt1308.m4 +++ b/tools/topology/topology1/sof-tgl-rt711-rt1308.m4 @@ -191,12 +191,16 @@ PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, # Deep buffer playback pipeline 31 on PCM 31 using max 2 channels of s32le # Set 1000us deadline on core 0 with priority 0. # TODO: Modify pipeline deadline to account for deep buffering +ifdef(`HEADSET_DEEP_BUFFER', +` PIPELINE_PCM_ADD(sof/pipe-host-volume-playback.m4, 31, 31, 2, s32le, 1000, 0, 0, 48000, 48000, 48000, SCHEDULE_TIME_DOMAIN_TIMER, PIPELINE_PLAYBACK_SCHED_COMP_1) +' +) SectionGraph."mixer-host" { index "0" @@ -204,7 +208,12 @@ SectionGraph."mixer-host" { lines [ # connect mixer dai pipelines to PCM pipelines dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_30) +ifdef(`HEADSET_DEEP_BUFFER', +` + dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_31) +' +) ] } @@ -249,7 +258,11 @@ DAI_ADD(sof/pipe-dai-playback.m4, # PCM Low Latency, id 0 dnl PCM_PLAYBACK_ADD(name, pcm_id, playback) PCM_PLAYBACK_ADD(Jack Out, 0, PIPELINE_PCM_30) +ifdef(`HEADSET_DEEP_BUFFER', +` PCM_PLAYBACK_ADD(Jack Out DeepBuffer, 31, PIPELINE_PCM_31) +' +) PCM_CAPTURE_ADD(Jack In, 1, PIPELINE_PCM_2) ifdef(`EXT_AMP', ` From 05109c76dd225290642f71283184e8ffac1c3ef9 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Mon, 4 Apr 2022 17:37:03 -0500 Subject: [PATCH 9/9] topology1/kernel_dependent/v5.19: enable SoundWire deep-buffer headset topologies This patch duplicates the configuration at the higher level and adds the "HEADSET_DEEP_BUFFER" definition. This is not very elegant and will require changes in two places, but I don't see a better solution with M4. Signed-off-by: Pierre-Louis Bossart --- .../kernel_dependent/v5.19/CMakeLists.txt | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tools/topology/topology1/kernel_dependent/v5.19/CMakeLists.txt b/tools/topology/topology1/kernel_dependent/v5.19/CMakeLists.txt index eda588baea17..d8311691c3c4 100644 --- a/tools/topology/topology1/kernel_dependent/v5.19/CMakeLists.txt +++ b/tools/topology/topology1/kernel_dependent/v5.19/CMakeLists.txt @@ -9,6 +9,35 @@ set(TPLGS_UP "sof-hda-generic\;sof-hda-generic-3ch\;-DDEEP_BUFFER\;-DCHANNELS=4\;-DHSPROC=volume\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DDYNAMIC=1" "sof-hda-generic\;sof-hda-generic-4ch\;-DDEEP_BUFFER\;-DCHANNELS=4\;-DHSPROC=volume\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DDYNAMIC=1" ## end HDaudio codec topologies + + ## SoundWire topologies + # sof-icl-r700 is kept for compatibility with CI and previous versions of the kernel. + "sof-icl-rt700\;sof-icl-rt700\;-DHEADSET_DEEP_BUFFER\;-DCHANNELS=4\;-DPLATFORM=icl\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4" + "sof-icl-rt700\;sof-icl-rt700-4ch\;-DHEADSET_DEEP_BUFFER\;-DCHANNELS=4\;-DPLATFORM=icl\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4" + "sof-icl-rt700\;sof-icl-rt700-2ch\;-DHEADSET_DEEP_BUFFER\;-DCHANNELS=2\;-DPLATFORM=icl\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4" + # sof-cml-r700 is kept for compatibility with CI and previous versions of the kernel. + "sof-cml-rt700\;sof-cml-rt700\;-DHEADSET_DEEP_BUFFER\;-DCHANNELS=4\;-DPLATFORM=cml\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4" + "sof-cml-rt700\;sof-cml-rt700-4ch\;-DHEADSET_DEEP_BUFFER\;-DCHANNELS=4\;-DPLATFORM=cml\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4" + "sof-cml-rt700\;sof-cml-rt700-2ch\;-DHEADSET_DEEP_BUFFER\;-DCHANNELS=2\;-DPLATFORM=cml\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-cml-rt711-rt1308-mono-rt715\;-DHEADSET_DEEP_BUFFER\;-DPLATFORM=cml\;-DMONO" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-cml-rt711-rt1308-rt715\;-DHEADSET_DEEP_BUFFER\;-DPLATFORM=cml" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-icl-rt711-rt1308-rt715\;-DHEADSET_DEEP_BUFFER\;-DPLATFORM=icl" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-tgl-rt711-rt1308-mono-rt715\;-DHEADSET_DEEP_BUFFER\;-DPLATFORM=tgl\;-DMONO\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DMIC_LINK=3" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-tgl-rt711-l0-rt1316-l1-mono-rt714-l3\;-DHEADSET_DEEP_BUFFER\;-DPLATFORM=tgl\;-DMONO\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DEXT_AMP_REF\;-DMIC_LINK=3" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-tgl-rt715-rt711-rt1308-mono\;-DHEADSET_DEEP_BUFFER\;-DPLATFORM=tgl\;-DMONO\;-DUAJ_LINK=1\;-DAMP_1_LINK=2\;-DMIC_LINK=0" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-tgl-rt711-rt1308-rt715\;-DHEADSET_DEEP_BUFFER\;-DPLATFORM=tgl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DMIC_LINK=3" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-tgl-rt711-rt1316-rt714\;-DHEADSET_DEEP_BUFFER\;-DPLATFORM=tgl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=3" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l0-rt1308-l12-rt715-l3\;-DHEADSET_DEEP_BUFFER\;-DPLATFORM=adl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DMIC_LINK=3" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l0-rt1316-l12-rt714-l3\;-DHEADSET_DEEP_BUFFER\;-DPLATFORM=adl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=3" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l0-rt1316-l13-rt714-l2\;-DHEADSET_DEEP_BUFFER\;-DPLATFORM=adl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=3\;-DEXT_AMP_REF\;-DMIC_LINK=2" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l2-rt1316-l01-rt714-l3\;-DHEADSET_DEEP_BUFFER\;-DPLATFORM=adl\;-DUAJ_LINK=2\;-DAMP_1_LINK=0\;-DAMP_2_LINK=1\;-DEXT_AMP_REF\;-DMIC_LINK=3" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l2-rt1316-l01\;-DHEADSET_DEEP_BUFFER\;-DPLATFORM=adl\;-DUAJ_LINK=2\;-DAMP_1_LINK=0\;-DAMP_2_LINK=1\;-DEXT_AMP_REF\;-DNO_LOCAL_MIC" + "sof-tgl-rt711-rt1308\;sof-tgl-rt711-rt1308-2ch\;-DHEADSET_DEEP_BUFFER\;-DCHANNELS=2\;-DEXT_AMP\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DPLATFORM=tgl" + "sof-tgl-rt711-rt1308\;sof-tgl-rt711-rt1308-4ch\;-DHEADSET_DEEP_BUFFER\;-DCHANNELS=4\;-DEXT_AMP\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DPLATFORM=tgl" + "sof-tgl-rt711-rt1308\;sof-tgl-rt711-4ch\;-DHEADSET_DEEP_BUFFER\;-DCHANNELS=4\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DPLATFORM=tgl" + "sof-tgl-rt711-rt1308\;sof-adl-rt711-4ch\;-DHEADSET_DEEP_BUFFER\;-DCHANNELS=4\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DPLATFORM=adl" + "sof-tgl-rt711-rt1308\;sof-adl-rt711\;-DHEADSET_DEEP_BUFFER\;-DCHANNELS=0\;-DPLATFORM=adl" + ## end SoundWire topologies ) add_custom_target(kernel_dependent_v5_19_topologies1)