From 1ee0ec1d538483f133e5249145c0948a27c5c1fb Mon Sep 17 00:00:00 2001 From: Mac Chiang Date: Tue, 30 Jan 2024 21:02:27 -0500 Subject: [PATCH] topology2: sof-mtl-rt5650: add FMT_24 support RT5650 need to apply 24 bit format due to codec not support S32_LE. Signed-off-by: Mac Chiang --- .../cavs-mixin-mixout-eqiir-dts-ssp.conf | 26 +++++++- .../topology2/cavs-mixin-mixout-ssp.conf | 13 +++- tools/topology/topology2/cavs-rt5682.conf | 64 +++++++++++++++---- .../platform/intel/speaker-echo-ref.conf | 21 ++++++ .../production/tplg-targets-ace1.cmake | 13 +++- 5 files changed, 119 insertions(+), 18 deletions(-) diff --git a/tools/topology/topology2/cavs-mixin-mixout-eqiir-dts-ssp.conf b/tools/topology/topology2/cavs-mixin-mixout-eqiir-dts-ssp.conf index 2d5800617c85..774db4ddc592 100644 --- a/tools/topology/topology2/cavs-mixin-mixout-eqiir-dts-ssp.conf +++ b/tools/topology/topology2/cavs-mixin-mixout-eqiir-dts-ssp.conf @@ -46,7 +46,18 @@ Object.Pipeline { copier_type "SSP" stream_name "$HEADSET_CODEC_NAME" node_type $I2S_LINK_OUTPUT_CLASS - } + IncludeByKey.USE_FMT_24 { + "true" { + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 24 + out_fmt_cfg "$[($out_channels | ($out_valid_bit_depth * 256))]" + } + ] + } + } + } Object.Widget.gain.1 { Object.Control.mixer.1 { @@ -76,7 +87,18 @@ Object.Pipeline { copier_type "SSP" stream_name "$SPEAKER_CODEC_NAME" node_type $I2S_LINK_OUTPUT_CLASS - } + IncludeByKey.USE_FMT_24 { + "true" { + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 24 + out_fmt_cfg "$[($out_channels | ($out_valid_bit_depth * 256))]" + } + ] + } + } + } Object.Widget.gain.1 { Object.Control.mixer.1 { diff --git a/tools/topology/topology2/cavs-mixin-mixout-ssp.conf b/tools/topology/topology2/cavs-mixin-mixout-ssp.conf index 3b26c1102838..b5b775f78dda 100644 --- a/tools/topology/topology2/cavs-mixin-mixout-ssp.conf +++ b/tools/topology/topology2/cavs-mixin-mixout-ssp.conf @@ -64,7 +64,18 @@ Object.Pipeline { copier_type "SSP" stream_name "$SPEAKER_CODEC_NAME" node_type $I2S_LINK_OUTPUT_CLASS - } + IncludeByKey.USE_FMT_24 { + "true" { + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 24 + out_fmt_cfg "$[($out_channels | ($out_valid_bit_depth * 256))]" + } + ] + } + } + } Object.Widget.gain.1 { Object.Control.mixer.1 { diff --git a/tools/topology/topology2/cavs-rt5682.conf b/tools/topology/topology2/cavs-rt5682.conf index 12de16d9e818..587e7c9c0331 100644 --- a/tools/topology/topology2/cavs-rt5682.conf +++ b/tools/topology/topology2/cavs-rt5682.conf @@ -118,6 +118,7 @@ Define { DMIC_PIPELINE_PRIORITY 1 ECHO_REF_PIPELINE_PRIORITY 0 PLAYBACK_PIPELINE_SRC "volume" + USE_FMT_24 false } # override defaults with platform-specific config @@ -245,18 +246,57 @@ Object.Pipeline { copier_type "SSP" stream_name "$HEADSET_CODEC_NAME" node_type $I2S_LINK_INPUT_CLASS - Object.Base.input_audio_format [ - { - in_bit_depth 32 - in_valid_bit_depth 32 - } - ] - Object.Base.output_audio_format [ - { - out_bit_depth 32 - out_valid_bit_depth 32 - } - ] + IncludeByKey.USE_FMT_24 { + "true" { + Object.Base.input_audio_format [ + { + in_bit_depth 32 + in_valid_bit_depth 24 + in_fmt_cfg "$[($in_channels | ($in_valid_bit_depth * 256))]" + } + ] + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 24 + out_fmt_cfg "$[($out_channels | ($out_valid_bit_depth * 256))]" + } + ] + } + "false" { + num_input_audio_formats 3 + Object.Base.input_audio_format [ + { + in_bit_depth 16 + in_valid_bit_depth 16 + } + { + in_bit_depth 32 + in_valid_bit_depth 24 + } + { + in_bit_depth 32 + in_valid_bit_depth 32 + } + + ] + num_output_audio_formats 3 + Object.Base.output_audio_format [ + { + out_bit_depth 16 + out_valid_bit_depth 16 + } + { + out_bit_depth 32 + out_valid_bit_depth 24 + } + { + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] + } + } } } ] diff --git a/tools/topology/topology2/platform/intel/speaker-echo-ref.conf b/tools/topology/topology2/platform/intel/speaker-echo-ref.conf index 7119dd1568ad..ab15c97279f8 100644 --- a/tools/topology/topology2/platform/intel/speaker-echo-ref.conf +++ b/tools/topology/topology2/platform/intel/speaker-echo-ref.conf @@ -13,13 +13,34 @@ Object.Pipeline { copier_type "SSP" stream_name $SPEAKER_CODEC_NAME node_type $I2S_LINK_INPUT_CLASS + IncludeByKey.USE_FMT_24 { + "true" { num_input_audio_formats 1 Object.Base.input_audio_format [ + { + in_bit_depth 32 + in_valid_bit_depth 24 + } + ] + } + "false" { + num_input_audio_formats 3 + Object.Base.input_audio_format [ + { + in_bit_depth 16 + in_valid_bit_depth 16 + } + { + in_bit_depth 32 + in_valid_bit_depth 24 + } { in_bit_depth 32 in_valid_bit_depth 32 } ] + } + } num_output_audio_formats 1 Object.Base.output_audio_format [ { diff --git a/tools/topology/topology2/production/tplg-targets-ace1.cmake b/tools/topology/topology2/production/tplg-targets-ace1.cmake index 487af6855f66..6ebd3f9e0cf7 100644 --- a/tools/topology/topology2/production/tplg-targets-ace1.cmake +++ b/tools/topology/topology2/production/tplg-targets-ace1.cmake @@ -64,12 +64,19 @@ NHLT_BIN=nhlt-sof-max98357a-rt5682.bin,DEEPBUFFER_FW_DMA_MS=10,HEADSET_SSP_DAI_I SPEAKER_SSP_DAI_INDEX=0,HEADSET_CODEC_NAME=SSP2-Codec,SPEAKER_CODEC_NAME=SSP0-Codec,\ INCLUDE_ECHO_REF=true,INCLUDE_BT_OFFLOAD=false" +"cavs-rt5682\;sof-mtl-rt5650\;PLATFORM=mtl,NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,\ +PDM1_MIC_B_ENABLE=1,DMIC0_PCM_ID=99,PREPROCESS_PLUGINS=nhlt,\ +NHLT_BIN=nhlt-sof-mtl-rt5650.bin,DEEPBUFFER_FW_DMA_MS=10,HEADSET_SSP_DAI_INDEX=2,\ +SPK_ID=6,SPEAKER_SSP_DAI_INDEX=0,HEADSET_CODEC_NAME=SSP2-Codec,SPEAKER_CODEC_NAME=SSP0-Codec,\ +BT_NAME=SSP1-BT,BT_INDEX=1,BT_ID=7,BT_PCM_NAME=Bluetooth,INCLUDE_ECHO_REF=true,\ +DEEP_BUF_SPK=true,USE_FMT_24=true" + "cavs-rt5682\;sof-mtl-rt5650-dts\;PLATFORM=mtl,NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,\ PDM1_MIC_B_ENABLE=1,DMIC0_PCM_ID=99,PREPROCESS_PLUGINS=nhlt,\ -NHLT_BIN=nhlt-sof-mtl-max98357a-rt5682.bin,DEEPBUFFER_FW_DMA_MS=10,HEADSET_SSP_DAI_INDEX=2,\ +NHLT_BIN=nhlt-sof-mtl-rt5650.bin,DEEPBUFFER_FW_DMA_MS=10,HEADSET_SSP_DAI_INDEX=2,\ SPK_ID=6,SPEAKER_SSP_DAI_INDEX=0,HEADSET_CODEC_NAME=SSP2-Codec,SPEAKER_CODEC_NAME=SSP0-Codec,\ -BT_NAME=SSP1-BT,BT_INDEX=1,BT_ID=7,BT_PCM_NAME=Bluetooth,INCLUDE_ECHO_REF=true,USE_CHAIN_DMA=true,\ -GOOGLE_RTC_AEC_SUPPORT=1,DEEP_BUF_SPK=true,PLAYBACK_PIPELINE_SRC=dts" +BT_NAME=SSP1-BT,BT_INDEX=1,BT_ID=7,BT_PCM_NAME=Bluetooth,INCLUDE_ECHO_REF=true,\ +DEEP_BUF_SPK=true,PLAYBACK_PIPELINE_SRC=dts,USE_FMT_24=true" #ES83x6+HDMI-IN "cavs-es83x6\;sof-mtl-es83x6-ssp1-hdmi-ssp02\;PLATFORM=mtl,PREPROCESS_PLUGINS=nhlt,\