diff --git a/tools/topology/topology2/avs-tplg/CMakeLists.txt b/tools/topology/topology2/avs-tplg/CMakeLists.txt index 7a6d4843240a..45ba5df47e19 100644 --- a/tools/topology/topology2/avs-tplg/CMakeLists.txt +++ b/tools/topology/topology2/avs-tplg/CMakeLists.txt @@ -3,30 +3,31 @@ # Array of "input-file-name;output-file-name;comma separated pre-processor variables" set(TPLGS # CAVS HDMI only topology with passthrough pipelines -"sof-hda-generic\;sof-hda-generic-idisp\;USE_CHAIN_DMA=true" +"sof-hda-generic\;sof-hda-generic-idisp\;USE_CHAIN_DMA=true,DEEPBUFFER_FW_DMA_MS=100" # CAVS HDA topology with mixer-based pipelines for HDA and passthrough pipelines for HDMI -"sof-hda-generic\;sof-hda-generic\;HDA_CONFIG=mix,USE_CHAIN_DMA=true" +"sof-hda-generic\;sof-hda-generic\;HDA_CONFIG=mix,USE_CHAIN_DMA=true,DEEPBUFFER_FW_DMA_MS=100" # If the alsatplg plugins for NHLT are not available, the NHLT blobs will not be added to the # topologies below. "sof-hda-generic\;sof-hda-generic-2ch\;\ -HDA_CONFIG=mix,NUM_DMICS=2,PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic-2ch.bin,USE_CHAIN_DMA=true" +HDA_CONFIG=mix,NUM_DMICS=2,PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic-2ch.bin,USE_CHAIN_DMA=true,\ +DEEPBUFFER_FW_DMA_MS=100" "sof-hda-generic\;sof-hda-generic-4ch\;\ HDA_CONFIG=mix,NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,\ -PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic-4ch.bin,USE_CHAIN_DMA=true" +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic-4ch.bin,USE_CHAIN_DMA=true,DEEPBUFFER_FW_DMA_MS=100" # CAVS SDW topology with passthrough pipelines -"cavs-sdw\;cavs-sdw" +"cavs-sdw\;cavs-sdw\;DEEPBUFFER_FW_DMA_MS=100" # CAVS SDW with SRC gain and mixer support "cavs-sdw-src-gain-mixin\;cavs-sdw-src-gain-mixin" # SDW + HDMI topology with passthrough pipelines -"cavs-sdw\;cavs-sdw-hdmi\;NUM_HDMIS=4" +"cavs-sdw\;cavs-sdw-hdmi\;NUM_HDMIS=4,DEEPBUFFER_FW_DMA_MS=100" # CAVS SSP topology for TGL "cavs-nocodec\;sof-tgl-nocodec\;NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,\ -PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-tgl-nocodec.bin" +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-tgl-nocodec.bin,DEEPBUFFER_FW_DMA_MS=100" "cavs-nocodec\;sof-adl-nocodec\;NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,\ -PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-adl-nocodec.bin" +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-adl-nocodec.bin,DEEPBUFFER_FW_DMA_MS=100" ) add_custom_target(topology2_cavs) diff --git a/tools/topology/topology2/cavs-mixin-mixout-hda.conf b/tools/topology/topology2/cavs-mixin-mixout-hda.conf index c7f13fac6572..d459481d2b52 100644 --- a/tools/topology/topology2/cavs-mixin-mixout-hda.conf +++ b/tools/topology/topology2/cavs-mixin-mixout-hda.conf @@ -1,7 +1,17 @@ Define { - ANALOG_PLAYBACK_PCM 'Analog Playback' - ANALOG_CAPTURE_PCM 'Analog Capture' - HDA_ANALOG_DAI_NAME 'Analog Playback and Capture' + ANALOG_PLAYBACK_PCM 'Analog Playback' + ANALOG_CAPTURE_PCM 'Analog Capture' + HDA_ANALOG_DAI_NAME 'Analog Playback and Capture' + DEEP_BUFFER_PIPELINE_ID 15 + DEEP_BUFFER_PCM_ID 31 + DEEP_BUFFER_PIPELINE_SRC 'mixin.15.1' + DEEP_BUFFER_PIPELINE_SINK 'mixout.2.1' + DEEP_BUFFER_PCM_NAME 'Deepbuffer HDA Analog' +} + +# include deep buffer config if buffer size is in 1 - 1000 ms. +IncludeByKey.DEEPBUFFER_FW_DMA_MS{ + "[1-1000]" "platform/intel/deep-buffer.conf" } Object.Dai { @@ -43,20 +53,6 @@ Object.Pipeline { } } - deepbuffer-playback.0 { - index 5 - - Object.Widget.copier.1 { - stream_name 'Analog Deepbuffer Playback' - } - - Object.Widget.gain.1 { - Object.Control.mixer.1 { - name '5 3nd Playback Volume' - } - } - } - passthrough-capture.1 { index 3 Object.Widget.copier.1 { @@ -99,18 +95,6 @@ Object.PCM { } direction duplex } - - pcm.1 { - id 1 - name 'DeepBuffer' - Object.Base.fe_dai.'DeepBuffer' {} - Object.PCM.pcm_caps.playback { - name 'Analog Deepbuffer Playback' - formats 'S32_LE,S24_LE,S16_LE' - } - direction playback - } - } # top-level pipeline connections @@ -127,8 +111,4 @@ Object.Base { source 'copier.HDA.4.1' sink 'copier.host.3.1' } - route.4 { - source 'mixin.5.1' - sink 'mixout.2.1' - } } diff --git a/tools/topology/topology2/cavs-nocodec.conf b/tools/topology/topology2/cavs-nocodec.conf index ffb57374419c..57e9b7731bb5 100644 --- a/tools/topology/topology2/cavs-nocodec.conf +++ b/tools/topology/topology2/cavs-nocodec.conf @@ -16,6 +16,7 @@ + @@ -45,6 +46,11 @@ Define { DMIC0_PCM_CAPS 'Passthrough Capture 13' DMIC0_PIPELINE_STREAM_NAME 'copier.DMIC.14.1' PLATFORM "none" + DEEP_BUFFER_PIPELINE_ID 15 + DEEP_BUFFER_PCM_ID 31 + DEEP_BUFFER_PIPELINE_SRC 'mixin.15.1' + DEEP_BUFFER_PIPELINE_SINK 'mixout.2.1' + DEEP_BUFFER_PCM_NAME 'Deepbuffer Port0' } # override defaults with platform-specific config @@ -57,6 +63,11 @@ IncludeByKey.NUM_DMICS { "[1-4]" "platform/intel/dmic-generic.conf" } +# include deep buffer config if buffer size is in 1 - 1000 ms. +IncludeByKey.DEEPBUFFER_FW_DMA_MS{ + "[1-1000]" "platform/intel/deep-buffer.conf" +} + # # List of all DAIs # diff --git a/tools/topology/topology2/cavs-sdw.conf b/tools/topology/topology2/cavs-sdw.conf index a264e3a12f68..d08aa79e4bb3 100644 --- a/tools/topology/topology2/cavs-sdw.conf +++ b/tools/topology/topology2/cavs-sdw.conf @@ -50,6 +50,11 @@ Define { DMIC0_PCM_CAPS 'Passthrough Capture 13' DMIC0_PIPELINE_STREAM_NAME 'copier.DMIC.14.1' USE_CHAIN_DMA "false" + DEEP_BUFFER_PIPELINE_ID 15 + DEEP_BUFFER_PCM_ID 31 + DEEP_BUFFER_PIPELINE_SRC 'mixin.15.1' + DEEP_BUFFER_PIPELINE_SINK 'mixout.2.1' + DEEP_BUFFER_PCM_NAME 'Deepbuffer Jack Out' } # include DMIC config if needed. @@ -66,6 +71,11 @@ IncludeByKey.NUM_HDMIS { "[3-4]" "platform/intel/hdmi-generic.conf" } +# include deep buffer config if buffer size is in 1 - 1000 ms. +IncludeByKey.DEEPBUFFER_FW_DMA_MS{ + "[1-1000]" "platform/intel/deep-buffer.conf" +} + # # List of all DAIs # @@ -134,20 +144,6 @@ Object.Pipeline { } } - deepbuffer-playback."5" { - index 5 - - Object.Widget.copier.1 { - stream_name 'Deepbuffer Playback' - } - - Object.Widget.gain.1 { - Object.Control.mixer.1 { - name '5 2nd Playback Volume' - } - } - } - passthrough-capture."4" { index 4 Object.Widget.pipeline.1.stream_name "copier.ALH.3.1" @@ -199,16 +195,6 @@ Object.PCM { formats 'S16_LE,S32_LE' } } - pcm."2" { - name 'DeepBuffer' - id 2 - Object.Base.fe_dai.'DeepBuffer' {} - Object.PCM.pcm_caps.playback { - name 'Deepbuffer Playback' - formats 'S32_LE,S24_LE,S16_LE' - } - direction playback - } } Object.Base { @@ -226,9 +212,4 @@ Object.Base { source "mixin.1.1" sink "mixout.2.1" } - - route.3 { - source 'mixin.5.1' - sink 'mixout.2.1' - } } diff --git a/tools/topology/topology2/platform/intel/deep-buffer.conf b/tools/topology/topology2/platform/intel/deep-buffer.conf new file mode 100644 index 000000000000..b7527579cfa3 --- /dev/null +++ b/tools/topology/topology2/platform/intel/deep-buffer.conf @@ -0,0 +1,39 @@ + + Object.Pipeline { + deepbuffer-playback."1" { + index $DEEP_BUFFER_PIPELINE_ID + + Object.Widget.copier.1 { + stream_name $DEEP_BUFFER_PCM_NAME + } + + Object.Widget.gain.1 { + Object.Control.mixer.1 { + name 'Deepbuffer Volume' + } + } + } + } + + Object.PCM { + pcm.$DEEP_BUFFER_PCM_ID { + name $DEEP_BUFFER_PCM_NAME + id $DEEP_BUFFER_PCM_ID + direction playback + playback_compatible_d0i3 true + + Object.Base.fe_dai.'DeepBuffer' {} + + Object.PCM.pcm_caps.playback { + name $DEEP_BUFFER_PCM_NAME + formats 'S16_LE,S24_LE,S32_LE' + } + } + } + + Object.Base { + route."1000" { + source $DEEP_BUFFER_PIPELINE_SRC + sink $DEEP_BUFFER_PIPELINE_SINK + } + } diff --git a/tools/topology/topology2/sof-ace-tplg/CMakeLists.txt b/tools/topology/topology2/sof-ace-tplg/CMakeLists.txt index b0e7453a778e..f1efa27d01b1 100644 --- a/tools/topology/topology2/sof-ace-tplg/CMakeLists.txt +++ b/tools/topology/topology2/sof-ace-tplg/CMakeLists.txt @@ -3,15 +3,17 @@ # Array of "input-file-name;output-file-name;comma separated pre-processor variables" set(TPLGS # HDMI only topology with passthrough pipelines -"sof-hda-generic\;sof-hda-generic-idisp\;USE_CHAIN_DMA=true" +"sof-hda-generic\;sof-hda-generic-idisp\;USE_CHAIN_DMA=true,DEEPBUFFER_FW_DMA_MS=100" # HDA topology with mixer-based pipelines for HDA and passthrough pipelines for HDMI -"sof-hda-generic\;sof-hda-generic\;HDA_CONFIG=mix,USE_CHAIN_DMA=true" +"sof-hda-generic\;sof-hda-generic\;HDA_CONFIG=mix,USE_CHAIN_DMA=true,DEEPBUFFER_FW_DMA_MS=100" # If the alsatplg plugins for NHLT are not available, the NHLT blobs will not be added to the # topologies below. "sof-hda-generic\;sof-hda-generic-4ch\;PLATFORM=mtl,\ -HDA_CONFIG=mix,NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic-4ch.bin" +HDA_CONFIG=mix,NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,PREPROCESS_PLUGINS=nhlt,\ +NHLT_BIN=nhlt-sof-hda-generic-4ch.bin,DEEPBUFFER_FW_DMA_MS=100" "sof-hda-generic\;sof-hda-generic-2ch\;PLATFORM=mtl,\ -HDA_CONFIG=mix,NUM_DMICS=2,PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic-2ch.bin" +HDA_CONFIG=mix,NUM_DMICS=2,PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic-2ch.bin,\ +DEEPBUFFER_FW_DMA_MS=100" # SDW topology with passthrough pipelines "cavs-sdw\;mtl-sdw" @@ -21,11 +23,11 @@ HDA_CONFIG=mix,NUM_DMICS=2,PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic # SDW + DMIC topology with passthrough pipelines "cavs-sdw\;sof-mtl-rt711-4ch\;NUM_DMICS=4,DMIC0_ID=2,DMIC1_ID=3,\ -PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-mtl-rt711-4ch.bin" +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-mtl-rt711-4ch.bin,DEEPBUFFER_FW_DMA_MS=100" # SSP topology for MTL "cavs-nocodec\;sof-mtl-nocodec\;PLATFORM=mtl,NUM_DMICS=2,\ -PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-mtl-nocodec.bin" +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-mtl-nocodec.bin,DEEPBUFFER_FW_DMA_MS=100" "cavs-rt5682\;sof-mtl-max98357a-rt5682\;PLATFORM=mtl,NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,NUM_HDMIS=4,\ PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-mtl-max98357a-rt5682.bin"