From ee5fb3e6234539b0c8e6f7960fc937ebfb99de18 Mon Sep 17 00:00:00 2001 From: Rander Wang Date: Thu, 22 Sep 2022 09:45:59 +0800 Subject: [PATCH 1/4] topology2: add common deep buffer support It will be shared by I2S, HDA and SDW platforms Signed-off-by: Rander Wang --- .../topology2/platform/intel/deep-buffer.conf | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 tools/topology/topology2/platform/intel/deep-buffer.conf 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 + } + } From 9fa88b521f08668049af6ce8314e05a894bf8685 Mon Sep 17 00:00:00 2001 From: Rander Wang Date: Thu, 22 Sep 2022 09:45:59 +0800 Subject: [PATCH 2/4] topology2: nocodec: add deep buffer support Deep buffer is mixed with ssp0 stream. Signed-off-by: Rander Wang --- tools/topology/topology2/avs-tplg/CMakeLists.txt | 4 ++-- tools/topology/topology2/cavs-nocodec.conf | 11 +++++++++++ tools/topology/topology2/sof-ace-tplg/CMakeLists.txt | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/tools/topology/topology2/avs-tplg/CMakeLists.txt b/tools/topology/topology2/avs-tplg/CMakeLists.txt index 7a6d4843240a..5951dbfe2a19 100644 --- a/tools/topology/topology2/avs-tplg/CMakeLists.txt +++ b/tools/topology/topology2/avs-tplg/CMakeLists.txt @@ -24,9 +24,9 @@ PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic-4ch.bin,USE_CHAIN_DMA=true # 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-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/sof-ace-tplg/CMakeLists.txt b/tools/topology/topology2/sof-ace-tplg/CMakeLists.txt index b0e7453a778e..ee756656f468 100644 --- a/tools/topology/topology2/sof-ace-tplg/CMakeLists.txt +++ b/tools/topology/topology2/sof-ace-tplg/CMakeLists.txt @@ -25,7 +25,7 @@ PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-mtl-rt711-4ch.bin" # 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" From 6e10ea9f14d5610d10e6ee73f616d03b12c553be Mon Sep 17 00:00:00 2001 From: Rander Wang Date: Thu, 22 Sep 2022 11:13:53 +0800 Subject: [PATCH 3/4] topology2: sdw: share the deep buffer conf setting Deep buffer is mixed with Jack out. Signed-off-by: Rander Wang --- .../topology2/avs-tplg/CMakeLists.txt | 4 +- tools/topology/topology2/cavs-sdw.conf | 39 +++++-------------- .../topology2/sof-ace-tplg/CMakeLists.txt | 2 +- 3 files changed, 13 insertions(+), 32 deletions(-) diff --git a/tools/topology/topology2/avs-tplg/CMakeLists.txt b/tools/topology/topology2/avs-tplg/CMakeLists.txt index 5951dbfe2a19..00a216453855 100644 --- a/tools/topology/topology2/avs-tplg/CMakeLists.txt +++ b/tools/topology/topology2/avs-tplg/CMakeLists.txt @@ -14,13 +14,13 @@ HDA_CONFIG=mix,NUM_DMICS=2,PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-hda-generic 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" # 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,\ 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/sof-ace-tplg/CMakeLists.txt b/tools/topology/topology2/sof-ace-tplg/CMakeLists.txt index ee756656f468..4588dac58d01 100644 --- a/tools/topology/topology2/sof-ace-tplg/CMakeLists.txt +++ b/tools/topology/topology2/sof-ace-tplg/CMakeLists.txt @@ -21,7 +21,7 @@ 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,\ From a0a365a93a5b18ce407d35be0b76091efeed0372 Mon Sep 17 00:00:00 2001 From: Rander Wang Date: Mon, 31 Oct 2022 16:41:09 +0800 Subject: [PATCH 4/4] topology2: hda: share deep buffer conf setting Deep buffer is mixed with HDA analog. Signed-off-by: Rander Wang --- .../topology2/avs-tplg/CMakeLists.txt | 9 ++-- .../topology2/cavs-mixin-mixout-hda.conf | 46 ++++++------------- .../topology2/sof-ace-tplg/CMakeLists.txt | 10 ++-- 3 files changed, 24 insertions(+), 41 deletions(-) diff --git a/tools/topology/topology2/avs-tplg/CMakeLists.txt b/tools/topology/topology2/avs-tplg/CMakeLists.txt index 00a216453855..45ba5df47e19 100644 --- a/tools/topology/topology2/avs-tplg/CMakeLists.txt +++ b/tools/topology/topology2/avs-tplg/CMakeLists.txt @@ -3,16 +3,17 @@ # 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\;DEEPBUFFER_FW_DMA_MS=100" 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/sof-ace-tplg/CMakeLists.txt b/tools/topology/topology2/sof-ace-tplg/CMakeLists.txt index 4588dac58d01..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"