From c74ac5a1492a3ee469a41cfe56cb1b76adfaa175 Mon Sep 17 00:00:00 2001 From: Eddy Hsu Date: Mon, 13 Apr 2026 01:26:12 +0000 Subject: [PATCH] Audio: add CTC to PTL rt5682 path. Include CTC component in PTL with rt5682. Introduce `USE_CTC_SPK` in `cavs-mixin-mixout-ctc-ssp.conf` and `cavs-mixin-mixout-dax-ssp.conf` to conditionally include CTC component in the pipeline. Signed-off-by: Eddy Hsu --- .../topology2/cavs-mixin-mixout-ctc-ssp.conf | 160 ++++++--- .../topology2/cavs-mixin-mixout-dax-ssp.conf | 322 ++++++++++++------ .../topology2/cavs-mixin-mixout-ssp.conf | 12 + tools/topology/topology2/cavs-rt5682.conf | 12 +- ...xout-gain-dax-ctc-dai-copier-playback.conf | 74 ++++ .../production/tplg-targets-ace3.cmake | 11 + 6 files changed, 428 insertions(+), 163 deletions(-) create mode 100644 tools/topology/topology2/include/pipelines/cavs/mixout-gain-dax-ctc-dai-copier-playback.conf diff --git a/tools/topology/topology2/cavs-mixin-mixout-ctc-ssp.conf b/tools/topology/topology2/cavs-mixin-mixout-ctc-ssp.conf index ff8f27102d74..92abc38cf662 100644 --- a/tools/topology/topology2/cavs-mixin-mixout-ctc-ssp.conf +++ b/tools/topology/topology2/cavs-mixin-mixout-ctc-ssp.conf @@ -6,9 +6,12 @@ # # The gain before mixin is for the different routes(e.g., deepbuffer, headset). -# Pipeline ID:1 PCM ID: 0 +Define { + USE_CTC_SPK "false" +} + +# playback pipelines Object.Pipeline { - # playback pipelines host-copier-gain-mixin-playback [ { index $HEADSET_HOST_PIPELINE_ID @@ -38,69 +41,124 @@ Object.Pipeline { } ] - mixout-gain-ctc-dai-copier-playback [ + mixout-gain-dai-copier-playback [ { - index $HEADSET_DAI_PIPELINE_ID + index $HEADSET_DAI_PIPELINE_ID + + Object.Widget.dai-copier.1 { + dai_index $HEADSET_SSP_DAI_INDEX + dai_type "SSP" + copier_type "SSP" + stream_name "$HEADSET_CODEC_NAME" + node_type $I2S_LINK_OUTPUT_CLASS + } + + Object.Widget.gain.1 { + Object.Control.mixer.1 { + name 'Post Mixer $HEADSET_PCM_NAME Playback Volume' + } + } + } + ] - Object.Widget.dai-copier.1 { - dai_index $HEADSET_SSP_DAI_INDEX - dai_type "SSP" - copier_type "SSP" - stream_name "$HEADSET_CODEC_NAME" - node_type $I2S_LINK_OUTPUT_CLASS - } + IncludeByKey.USE_CTC_SPK { + "true" { + mixout-gain-ctc-dai-copier-playback [ + { + index $SPEAKER_DAI_PIPELINE_ID + stream_name "$SPEAKER_CODEC_NAME" - Object.Widget.gain.1 { - Object.Control.mixer.1 { - name 'Post Mixer $HEADSET_PCM_NAME Playback Volume' - } - } - } - { - index $SPEAKER_DAI_PIPELINE_ID + Object.Widget.dai-copier.1 { + dai_index $SPEAKER_SSP_DAI_INDEX + dai_type "SSP" + copier_type "SSP" + stream_name "$SPEAKER_CODEC_NAME" + node_type $I2S_LINK_OUTPUT_CLASS + } + Object.Widget.gain.1 { + Object.Control.mixer.1 { + name 'Post Mixer $SPEAKER_PCM_NAME Playback Volume' + } + } + Object.Widget.ctc.1 { + Object.Control { + mixer."1" { + name 'CTC Switch' + } + bytes."1" { + name 'CTC.0' + max 4160 + } + } + } + } + ] + } + "false" { + mixout-gain-dai-copier-playback [ + { + index $SPEAKER_DAI_PIPELINE_ID - Object.Widget.dai-copier.1 { - dai_index $SPEAKER_SSP_DAI_INDEX - dai_type "SSP" - copier_type "SSP" - stream_name "$SPEAKER_CODEC_NAME" - node_type $I2S_LINK_OUTPUT_CLASS - } - Object.Widget.gain.1 { - Object.Control.mixer.1 { - name 'Post Mixer $SPEAKER_PCM_NAME Playback Volume' - } - } - Object.Widget.ctc.1 { - Object.Control { - mixer."1" { - name 'CTC Switch' + Object.Widget.dai-copier.1 { + dai_index $SPEAKER_SSP_DAI_INDEX + dai_type "SSP" + copier_type "SSP" + stream_name "$SPEAKER_CODEC_NAME" + node_type $I2S_LINK_OUTPUT_CLASS } - bytes."1" { - name 'CTC.0' - max 4160 + Object.Widget.gain.1 { + Object.Control.mixer.1 { + name 'Post Mixer $SPEAKER_PCM_NAME Playback Volume' + } } } - } - } - ] + ] + } + } } Object.Base.route [ { - source "gain.$HEADSET_DAI_PIPELINE_ID.1" - sink "dai-copier.SSP.$HEADSET_CODEC_NAME.playback" - } - { + source "dai-copier.SSP.$HEADSET_CODEC_NAME.capture" + sink "host-copier.$HEADSET_PCM_ID.capture" + } + { + source "host-copier.$HEADSET_PCM_ID.playback" + sink "gain.1.1" + } + { source "mixin.$HEADSET_HOST_PIPELINE_ID.1" sink "mixout.$HEADSET_DAI_PIPELINE_ID.1" - } + } + { + source "gain.$HEADSET_DAI_PIPELINE_ID.1" + sink "dai-copier.SSP.$HEADSET_CODEC_NAME.playback" + } { - source "ctc.$SPEAKER_DAI_PIPELINE_ID.1" - sink "dai-copier.SSP.$SPEAKER_CODEC_NAME.playback" + source "host-copier.$SPEAKER_PCM_ID.playback" + sink "gain.3.1" } { - source "mixin.$SPEAKER_HOST_PIPELINE_ID.1" - sink "mixout.$SPEAKER_DAI_PIPELINE_ID.1" - } + source "mixin.$SPEAKER_HOST_PIPELINE_ID.1" + sink "mixout.$SPEAKER_DAI_PIPELINE_ID.1" + } ] + +IncludeByKey.USE_CTC_SPK { + "true" { + Object.Base.route [ + { + source "ctc.$SPEAKER_DAI_PIPELINE_ID.1" + sink "dai-copier.SSP.$SPEAKER_CODEC_NAME.playback" + } + ] + } + "false" { + Object.Base.route [ + { + source "gain.$SPEAKER_DAI_PIPELINE_ID.1" + sink "dai-copier.SSP.$SPEAKER_CODEC_NAME.playback" + } + ] + } +} diff --git a/tools/topology/topology2/cavs-mixin-mixout-dax-ssp.conf b/tools/topology/topology2/cavs-mixin-mixout-dax-ssp.conf index a60d227aebc9..fb4246209070 100644 --- a/tools/topology/topology2/cavs-mixin-mixout-dax-ssp.conf +++ b/tools/topology/topology2/cavs-mixin-mixout-dax-ssp.conf @@ -1,16 +1,18 @@ # # Pipeline definitions # -# PCM0 ---> gain ----> Mixin ----> Mixout ----> gain ----> DAX ----> SSP0 -# PCM1 ---> gain ----> Mixin ----> Mixout ----> gain ----> DAX ----> SSP1 +# PCM0 ---> gain ----> Mixin ----> Mixout ----> gain ----> DAX ----> CTC ----> SSP0 +# PCM1 ---> gain ----> Mixin ----> Mixout ----> gain ----> DAX ----> CTC ----> SSP1 # # The gain before mixin is for the different routes(e.g., deepbuffer, headset). Define { DOLBY_DAX_CORE_ID 0 SSP_HEADSET_DAX "false" + USE_CTC_SPK "false" } + # Pipeline ID:1 PCM ID: 0 Object.Pipeline { # playback pipelines @@ -52,6 +54,7 @@ Object.Pipeline { mixout-gain-dax-dai-copier-playback [ { index $HEADSET_DAI_PIPELINE_ID + stream_name "$HEADSET_CODEC_NAME" Object.Widget.dai-copier.1 { dai_index $HEADSET_SSP_DAI_INDEX @@ -59,24 +62,25 @@ Object.Pipeline { copier_type "SSP" stream_name "$HEADSET_CODEC_NAME" node_type $I2S_LINK_OUTPUT_CLASS + IncludeByKey.SSP_HS_FMT_24 { - "true" { - Object.Base.output_audio_format [ - { - out_bit_depth 32 - out_valid_bit_depth 24 - out_sample_type $SAMPLE_TYPE_LSB_INTEGER - out_fmt_cfg "$[($out_channels | ($out_valid_bit_depth * 256))]" - } - ] + "true" { + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 24 + out_sample_type $SAMPLE_TYPE_LSB_INTEGER + out_fmt_cfg "$[($out_channels | ($out_valid_bit_depth * 256))]" + } + ] } - "false" { - Object.Base.output_audio_format [ - { - out_bit_depth 32 - out_valid_bit_depth 32 - } - ] + "false" { + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] } } } @@ -128,24 +132,25 @@ Object.Pipeline { copier_type "SSP" stream_name "$HEADSET_CODEC_NAME" node_type $I2S_LINK_OUTPUT_CLASS + IncludeByKey.SSP_HS_FMT_24 { - "true" { - Object.Base.output_audio_format [ - { - out_bit_depth 32 - out_valid_bit_depth 24 - out_sample_type $SAMPLE_TYPE_LSB_INTEGER - out_fmt_cfg "$[($out_channels | ($out_valid_bit_depth * 256))]" - } - ] + "true" { + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 24 + out_sample_type $SAMPLE_TYPE_LSB_INTEGER + out_fmt_cfg "$[($out_channels | ($out_valid_bit_depth * 256))]" + } + ] } - "false" { - Object.Base.output_audio_format [ - { - out_bit_depth 32 - out_valid_bit_depth 32 - } - ] + "false" { + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] } } } @@ -160,80 +165,185 @@ Object.Pipeline { } } - mixout-gain-dax-dai-copier-playback [ - { - index $SPEAKER_DAI_PIPELINE_ID - core_id $SPEAKER_PCM_CORE_ID + IncludeByKey.USE_CTC_SPK { + "true" { + mixout-gain-dax-ctc-dai-copier-playback [ + { + index $SPEAKER_DAI_PIPELINE_ID + core_id $SPEAKER_PCM_CORE_ID + stream_name "$SPEAKER_CODEC_NAME" - Object.Widget.dai-copier.1 { - dai_index $SPEAKER_SSP_DAI_INDEX - dai_type "SSP" - copier_type "SSP" - stream_name "$SPEAKER_CODEC_NAME" - node_type $I2S_LINK_OUTPUT_CLASS - IncludeByKey.SSP_SPK_FMT_24 { - "true" { - Object.Base.output_audio_format [ - { - out_bit_depth 32 - out_valid_bit_depth 24 - out_sample_type $SAMPLE_TYPE_LSB_INTEGER - out_fmt_cfg "$[($out_channels | ($out_valid_bit_depth * 256))]" + Object.Widget.dai-copier.1 { + dai_index $SPEAKER_SSP_DAI_INDEX + dai_type "SSP" + copier_type "SSP" + stream_name "$SPEAKER_CODEC_NAME" + node_type $I2S_LINK_OUTPUT_CLASS + + IncludeByKey.SSP_SPK_FMT_24 { + "true" { + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 24 + out_sample_type $SAMPLE_TYPE_LSB_INTEGER + out_fmt_cfg "$[($out_channels | ($out_valid_bit_depth * 256))]" + } + ] + } + "false" { + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] + } } - ] } - "false" { - Object.Base.output_audio_format [ - { - out_bit_depth 32 - out_valid_bit_depth 32 + + Object.Widget.gain.1 { + Object.Control.mixer.1 { + name 'Post Mixer $SPEAKER_PCM_NAME Playback Volume' } - ] } - } - } - - Object.Widget.gain.1 { - Object.Control.mixer.1 { - name 'Post Mixer $SPEAKER_PCM_NAME Playback Volume' - } - } - Object.Widget.dolby-dax.1 { - core_id $DOLBY_DAX_CORE_ID - Object.Control { - mixer."1" { - name 'DAX Speaker Switch' - } - mixer."2" { - name 'DAX Speaker Switch CP' + Object.Widget.dolby-dax.1 { + core_id $DOLBY_DAX_CORE_ID + Object.Control { + mixer."1" { + name 'DAX Speaker Switch' + } + mixer."2" { + name 'DAX Speaker Switch CP' + } + mixer."3" { + name 'DAX Speaker Switch CTC' + } + mixer."4" { + name 'DAX Speaker Volume' + } + enum."1" { + name 'DAX Speaker Profile' + } + enum."2" { + name 'DAX Speaker Device' + } + bytes."1" { + name 'DAX Speaker Tuning' + max 8192 + } + } } - mixer."3" { - name 'DAX Speaker Switch CTC' + + Object.Widget.pipeline.1 { + core $SPEAKER_PCM_CORE_ID } - mixer."4" { - name 'DAX Speaker Volume' + } + ] + } + "false" { + mixout-gain-dax-dai-copier-playback [ + { + index $SPEAKER_DAI_PIPELINE_ID + core_id $SPEAKER_PCM_CORE_ID + stream_name "$SPEAKER_CODEC_NAME" + + Object.Widget.dai-copier.1 { + dai_index $SPEAKER_SSP_DAI_INDEX + dai_type "SSP" + copier_type "SSP" + stream_name "$SPEAKER_CODEC_NAME" + node_type $I2S_LINK_OUTPUT_CLASS + + IncludeByKey.SSP_SPK_FMT_24 { + "true" { + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 24 + out_sample_type $SAMPLE_TYPE_LSB_INTEGER + out_fmt_cfg "$[($out_channels | ($out_valid_bit_depth * 256))]" + } + ] + } + "false" { + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] + } + } } - enum."1" { - name 'DAX Speaker Profile' + + Object.Widget.gain.1 { + Object.Control.mixer.1 { + name 'Post Mixer $SPEAKER_PCM_NAME Playback Volume' + } } - enum."2" { - name 'DAX Speaker Device' + + Object.Widget.dolby-dax.1 { + core_id $DOLBY_DAX_CORE_ID + Object.Control { + mixer."1" { + name 'DAX Speaker Switch' + } + mixer."2" { + name 'DAX Speaker Switch CP' + } + mixer."3" { + name 'DAX Speaker Switch CTC' + } + mixer."4" { + name 'DAX Speaker Volume' + } + enum."1" { + name 'DAX Speaker Profile' + } + enum."2" { + name 'DAX Speaker Device' + } + bytes."1" { + name 'DAX Speaker Tuning' + max 8192 + } + } } - bytes."1" { - name 'DAX Speaker Tuning' - max 8192 + + Object.Widget.pipeline.1 { + core $SPEAKER_PCM_CORE_ID } } - } - - Object.Widget.pipeline.1 { - core $SPEAKER_PCM_CORE_ID - } + ] } - ] + } } +Object.Base.route [ + { + source "dai-copier.SSP.$HEADSET_CODEC_NAME.capture" + sink "host-copier.$HEADSET_PCM_ID.capture" + } + { + source "host-copier.$HEADSET_PCM_ID.playback" + sink "gain.1.1" + } + { + source "mixin.$HEADSET_HOST_PIPELINE_ID.1" + sink "mixout.$HEADSET_DAI_PIPELINE_ID.1" + } + { + source "host-copier.$SPEAKER_PCM_ID.playback" + sink "gain.3.1" + } + { + source "mixin.$SPEAKER_HOST_PIPELINE_ID.1" + sink "mixout.$SPEAKER_DAI_PIPELINE_ID.1" + } +] + IncludeByKey.SSP_HEADSET_DAX { "true" { Object.Base.route [ @@ -253,17 +363,21 @@ IncludeByKey.SSP_HEADSET_DAX { } } -Object.Base.route [ - { - source "mixin.$HEADSET_HOST_PIPELINE_ID.1" - sink "mixout.$HEADSET_DAI_PIPELINE_ID.1" - } - { - source "dolby-dax.$SPEAKER_DAI_PIPELINE_ID.1" - sink "dai-copier.SSP.$SPEAKER_CODEC_NAME.playback" +IncludeByKey.USE_CTC_SPK { + "true" { + Object.Base.route [ + { + source "ctc.$SPEAKER_DAI_PIPELINE_ID.1" + sink "dai-copier.SSP.$SPEAKER_CODEC_NAME.playback" + } + ] } - { - source "mixin.$SPEAKER_HOST_PIPELINE_ID.1" - sink "mixout.$SPEAKER_DAI_PIPELINE_ID.1" + "false" { + Object.Base.route [ + { + source "dolby-dax.$SPEAKER_DAI_PIPELINE_ID.1" + sink "dai-copier.SSP.$SPEAKER_CODEC_NAME.playback" + } + ] } -] +} diff --git a/tools/topology/topology2/cavs-mixin-mixout-ssp.conf b/tools/topology/topology2/cavs-mixin-mixout-ssp.conf index 50564ab3b291..969b44b98bda 100644 --- a/tools/topology/topology2/cavs-mixin-mixout-ssp.conf +++ b/tools/topology/topology2/cavs-mixin-mixout-ssp.conf @@ -125,6 +125,14 @@ Object.Pipeline { } Object.Base.route [ + { + source "dai-copier.SSP.$HEADSET_CODEC_NAME.capture" + sink "host-copier.$HEADSET_PCM_ID.capture" + } + { + source "host-copier.$HEADSET_PCM_ID.playback" + sink "gain.1.1" + } { source "gain.$HEADSET_DAI_PIPELINE_ID.1" sink "dai-copier.SSP.$HEADSET_CODEC_NAME.playback" @@ -133,6 +141,10 @@ Object.Base.route [ source "mixin.$HEADSET_HOST_PIPELINE_ID.1" sink "mixout.$HEADSET_DAI_PIPELINE_ID.1" } + { + source "host-copier.$SPEAKER_PCM_ID.playback" + sink "gain.3.1" + } { source "gain.$SPEAKER_DAI_PIPELINE_ID.1" sink "dai-copier.SSP.$SPEAKER_CODEC_NAME.playback" diff --git a/tools/topology/topology2/cavs-rt5682.conf b/tools/topology/topology2/cavs-rt5682.conf index 172df51b2e72..34c8d6cd83b8 100644 --- a/tools/topology/topology2/cavs-rt5682.conf +++ b/tools/topology/topology2/cavs-rt5682.conf @@ -21,6 +21,7 @@ + @@ -123,6 +124,9 @@ Define { DMIC_PIPELINE_PRIORITY 1 ECHO_REF_PIPELINE_PRIORITY 0 PLAYBACK_PIPELINE_SRC "volume" + USE_CTC_SPK "false" + DOLBY_DAX_CORE_ID 0 + SSP_HEADSET_DAX "false" SSP_SPK_FMT_24 false SSP_HS_FMT_24 false } @@ -342,12 +346,4 @@ Object.Base.route [ source "dai-copier.SSP.$HEADSET_CODEC_NAME.capture" sink "host-copier.$HEADSET_PCM_ID.capture" } - { - source "host-copier.$HEADSET_PCM_ID.playback" - sink "gain.1.1" - } - { - source "host-copier.$SPEAKER_PCM_ID.playback" - sink "gain.3.1" - } ] diff --git a/tools/topology/topology2/include/pipelines/cavs/mixout-gain-dax-ctc-dai-copier-playback.conf b/tools/topology/topology2/include/pipelines/cavs/mixout-gain-dax-ctc-dai-copier-playback.conf new file mode 100644 index 000000000000..2353aa7af719 --- /dev/null +++ b/tools/topology/topology2/include/pipelines/cavs/mixout-gain-dax-ctc-dai-copier-playback.conf @@ -0,0 +1,74 @@ +# +# BE playback pipeline: mixout-gain-dax-ctc-dai-copier-playback. +# + + + + + +Class.Pipeline."mixout-gain-dax-ctc-dai-copier-playback" { + SubTreeCopy.baseclass { + # this class extends the mixout-gain-dai-copier-playback class definition + source "Class.Pipeline.mixout-gain-dai-copier-playback" + + tree { + Object.Widget { + dolby-dax."1" { + num_input_audio_formats 1 + num_output_audio_formats 1 + Object.Base.input_audio_format [ + { + in_rate 48000 + in_bit_depth 32 + in_valid_bit_depth 32 + ibs "$[(256 * ($[($in_bit_depth / 8)])) * ($in_channels)]" + } + ] + Object.Base.output_audio_format [ + { + out_rate 48000 + out_bit_depth 32 + out_valid_bit_depth 32 + obs "$[(256 * ($[($out_bit_depth / 8)])) * ($out_channels)]" + } + ] + } + + ctc."1" { + num_input_audio_formats 1 + num_output_audio_formats 1 + + Object.Base.input_audio_format [ + { + in_rate 48000 + in_bit_depth 32 + in_valid_bit_depth 32 + ibs "$[(256 * ($[($in_bit_depth / 8)])) * ($in_channels)]" + } + ] + Object.Base.output_audio_format [ + { + out_rate 48000 + out_bit_depth 32 + out_valid_bit_depth 32 + obs "$[(256 * ($[($out_bit_depth / 8)])) * ($out_channels)]" + } + ] + } + } + + Object.Base { + ! route [ + { + source gain.$index.1 + sink dolby-dax.$index.1 + } + { + source dolby-dax.$index.1 + sink ctc.$index.1 + } + ] + } + } + } +} diff --git a/tools/topology/topology2/production/tplg-targets-ace3.cmake b/tools/topology/topology2/production/tplg-targets-ace3.cmake index 60c34191d86d..261efa0c3105 100644 --- a/tools/topology/topology2/production/tplg-targets-ace3.cmake +++ b/tools/topology/topology2/production/tplg-targets-ace3.cmake @@ -188,11 +188,22 @@ HDMI_IN_1_ID=0,HDMI_IN_2_ID=1" NHLT_BIN=nhlt-sof-ptl-tas2563-rt5682.bin,SPK_ID=6,DEEPBUFFER_FW_DMA_MS=10,INCLUDE_ECHO_REF=true,\ BT_NAME=SSP2-BT,BT_ID=7,BT_PCM_NAME=Bluetooth,DEEP_BUF_SPK=true" +"cavs-rt5682\;sof-ptl-tas2563-rt5682-ctc\;PLATFORM=ptl,NUM_DMICS=2,DMIC0_PCM_ID=99,PREPROCESS_PLUGINS=nhlt,\ +NHLT_BIN=nhlt-sof-ptl-tas2563-rt5682-ctc.bin,SPK_ID=6,DEEPBUFFER_FW_DMA_MS=10,INCLUDE_ECHO_REF=true,\ +BT_NAME=SSP2-BT,BT_ID=7,BT_PCM_NAME=Bluetooth,DEEP_BUF_SPK=true,PLAYBACK_PIPELINE_SRC=ctc,USE_CTC_SPK=true,\ +HEADSET_CODEC=true,HEADSET_CODEC_NAME=SSP0-Codec" + "cavs-rt5682\;sof-ptl-tas2563-rt5682-dax\;PLATFORM=ptl,NUM_DMICS=2,DMIC0_PCM_ID=99,\ PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-ptl-tas2563-rt5682-dax.bin,SPK_ID=6,DEEPBUFFER_FW_DMA_MS=10,\ INCLUDE_ECHO_REF=true,BT_NAME=SSP2-BT,BT_ID=7,BT_PCM_NAME=Bluetooth,DEEP_BUF_SPK=true,\ PLAYBACK_PIPELINE_SRC=dax,DOLBY_DAX_CORE_ID=0" +"cavs-rt5682\;sof-ptl-tas2563-rt5682-dax-ctc\;PLATFORM=ptl,NUM_DMICS=2,DMIC0_PCM_ID=99,\ +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-ptl-tas2563-rt5682-dax-ctc.bin,SPK_ID=6,DEEPBUFFER_FW_DMA_MS=10,\ +INCLUDE_ECHO_REF=true,BT_NAME=SSP2-BT,BT_ID=7,BT_PCM_NAME=Bluetooth,DEEP_BUF_SPK=true,\ +PLAYBACK_PIPELINE_SRC=dax,DOLBY_DAX_CORE_ID=0,USE_CTC_SPK=true,HEADSET_CODEC=true,HEADSET_CODEC_NAME=SSP0-Codec" + + # Split topologies "cavs-sdw\;sof-ptl-dmic-2ch-id2\;PLATFORM=ptl,SDW_JACK=false,NUM_HDMIS=0,NUM_DMICS=2,\ PDM1_MIC_A_ENABLE=0,PDM1_MIC_B_ENABLE=0,DMIC0_ID=2,DMIC1_ID=3,PREPROCESS_PLUGINS=nhlt,\