From e9beed9a0d0af796d87180fd676d0c8f6022bec3 Mon Sep 17 00:00:00 2001 From: Bard Liao Date: Fri, 24 Jul 2026 17:00:20 +0800 Subject: [PATCH 1/3] topology2: add line1/8_pass.conf To support line1 and lin8 pass. Signed-off-by: Bard Liao --- .../include/components/tdfb/line1_pass.conf | 18 +++++++ .../include/components/tdfb/line8_pass.conf | 48 +++++++++++++++++++ .../cavs/host-gateway-tdfb-drc-capture.conf | 2 + .../platform/intel/dmic-generic.conf | 2 + 4 files changed, 70 insertions(+) create mode 100644 tools/topology/topology2/include/components/tdfb/line1_pass.conf create mode 100644 tools/topology/topology2/include/components/tdfb/line8_pass.conf diff --git a/tools/topology/topology2/include/components/tdfb/line1_pass.conf b/tools/topology/topology2/include/components/tdfb/line1_pass.conf new file mode 100644 index 000000000000..b8a31699187f --- /dev/null +++ b/tools/topology/topology2/include/components/tdfb/line1_pass.conf @@ -0,0 +1,18 @@ +# Exported with script example_pass_config.m 24-Jul-2026 +# cd tools/tune/tdfb; octave --no-window-system example_pass_config.m +Object.Base.data."tdfb_config" { + bytes " + 0x53,0x4f,0x46,0x34,0x00,0x00,0x00,0x00, + 0x48,0x00,0x00,0x00,0x00,0xa0,0x01,0x03, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x48,0x00,0x00,0x00,0x01,0x00,0x01,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0xff,0xff, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00" +} \ No newline at end of file diff --git a/tools/topology/topology2/include/components/tdfb/line8_pass.conf b/tools/topology/topology2/include/components/tdfb/line8_pass.conf new file mode 100644 index 000000000000..aff8d6a3e862 --- /dev/null +++ b/tools/topology/topology2/include/components/tdfb/line8_pass.conf @@ -0,0 +1,48 @@ +# Exported with script example_pass_config.m 24-Jul-2026 +# cd tools/tune/tdfb; octave --no-window-system example_pass_config.m +Object.Base.data."tdfb_config" { + bytes " + 0x53,0x4f,0x46,0x34,0x00,0x00,0x00,0x00, + 0x34,0x01,0x00,0x00,0x00,0xa0,0x01,0x03, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x34,0x01,0x00,0x00,0x08,0x00,0x08,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0xff,0xff, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0xff,0xff,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0xff,0xff, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0xff,0xff,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0xff,0xff, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0xff,0xff,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00, + 0x00,0x00,0x00,0x00,0x04,0x00,0xff,0xff, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00, + 0x04,0x00,0xff,0xff,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, + 0x02,0x00,0x03,0x00,0x04,0x00,0x05,0x00, + 0x06,0x00,0x07,0x00,0x01,0x00,0x02,0x00, + 0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00, + 0x40,0x00,0x80,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00" +} \ No newline at end of file diff --git a/tools/topology/topology2/include/pipelines/cavs/host-gateway-tdfb-drc-capture.conf b/tools/topology/topology2/include/pipelines/cavs/host-gateway-tdfb-drc-capture.conf index c0912037a424..4a65d998c9ec 100644 --- a/tools/topology/topology2/include/pipelines/cavs/host-gateway-tdfb-drc-capture.conf +++ b/tools/topology/topology2/include/pipelines/cavs/host-gateway-tdfb-drc-capture.conf @@ -39,6 +39,7 @@ Class.Pipeline."host-gateway-tdfb-drc-capture" { bytes."1" { max 16384 IncludeByKey.EFX_MIC_TDFB_PARAMS { + "line1_pass" "include/components/tdfb/line1_pass.conf" "line2_pass" "include/components/tdfb/line2_pass.conf" "line2_generic_pm10deg" "include/components/tdfb/line2_generic_pm10deg_48khz.conf" "line2_50mm" "include/components/tdfb/line2_50mm_pm0_30_90deg_48khz.conf" @@ -48,6 +49,7 @@ Class.Pipeline."host-gateway-tdfb-drc-capture" { "line4to2_pass" "include/components/tdfb/line4to2_pass.conf" "line4_generic_pm10deg" "include/components/tdfb/line4_generic_pm10deg_48khz.conf" "line4_28mm" "include/components/tdfb/line2_28mm_pm0_30_90deg_48khz.conf" + "line8_pass" "include/components/tdfb/line8_pass.conf" } } } diff --git a/tools/topology/topology2/platform/intel/dmic-generic.conf b/tools/topology/topology2/platform/intel/dmic-generic.conf index c473f1eea470..1d6cff348631 100644 --- a/tools/topology/topology2/platform/intel/dmic-generic.conf +++ b/tools/topology/topology2/platform/intel/dmic-generic.conf @@ -676,6 +676,7 @@ IncludeByKey.PASSTHROUGH { name 'Dmic0 Capture TDFB bytes' max 16384 IncludeByKey.EFX_DMIC0_TDFB_PARAMS { + "line1_pass" "include/components/tdfb/line1_pass.conf" "line2_pass" "include/components/tdfb/line2_pass.conf" "line2_generic_pm10deg" "include/components/tdfb/line2_generic_pm10deg_48khz.conf" "line2_50mm" "include/components/tdfb/line2_50mm_pm0_30_90deg_48khz.conf" @@ -685,6 +686,7 @@ IncludeByKey.PASSTHROUGH { "line4to2_pass" "include/components/tdfb/line4to2_pass.conf" "line4_generic_pm10deg" "include/components/tdfb/line4_generic_pm10deg_48khz.conf" "line4_28mm" "include/components/tdfb/line2_28mm_pm0_30_90deg_48khz.conf" + "line8_pass" "include/components/tdfb/line8_pass.conf" } } mixer."1" { From 31317d1b5ac577322ab1914af0c15037685c91b0 Mon Sep 17 00:00:00 2001 From: Bard Liao Date: Tue, 7 Jul 2026 10:51:08 +0800 Subject: [PATCH 2/3] topology2: sdw-dmic-generic: add multiple DMIC number support Add NUM_DMICS to set SDW DMIC number. The value is 2 by default. Signed-off-by: Bard Liao --- .../cavs/host-gateway-tdfb-drc-capture.conf | 43 ++++ .../platform/intel/sdw-dmic-generic.conf | 214 +++++++++++++++++- 2 files changed, 254 insertions(+), 3 deletions(-) diff --git a/tools/topology/topology2/include/pipelines/cavs/host-gateway-tdfb-drc-capture.conf b/tools/topology/topology2/include/pipelines/cavs/host-gateway-tdfb-drc-capture.conf index 4a65d998c9ec..8c58377b6e82 100644 --- a/tools/topology/topology2/include/pipelines/cavs/host-gateway-tdfb-drc-capture.conf +++ b/tools/topology/topology2/include/pipelines/cavs/host-gateway-tdfb-drc-capture.conf @@ -19,6 +19,37 @@ +Define { + TDFB_DMIC_PCM_CHANNELS 2 +} + +IncludeByKey.TDFB_DMIC_PCM_CHANNELS { + "1" { + Define { + TDFB_DMIC_CHANNEL_CFG $CHANNEL_CONFIG_MONO + TDFB_DMIC_CHANNEL_MAP $CHANNEL_MAP_MONO + } + } + "2" { + Define { + TDFB_DMIC_CHANNEL_CFG $CHANNEL_CONFIG_STEREO + TDFB_DMIC_CHANNEL_MAP $CHANNEL_MAP_STEREO + } + } + "4" { + Define { + TDFB_DMIC_CHANNEL_CFG $CHANNEL_CONFIG_3_POINT_1 + TDFB_DMIC_CHANNEL_MAP $CHANNEL_MAP_3_POINT_1 + } + } + "8" { + Define { + TDFB_SDW_DMIC_CHANNEL_CFG $CHANNEL_CONFIG_7_POINT_1 + TDFB_SDW_DMIC_CHANNEL_MAP $CHANNEL_MAP_7_POINT_1 + } + } +} + Class.Pipeline."host-gateway-tdfb-drc-capture" { SubTreeCopy.baseclass { @@ -59,12 +90,18 @@ Class.Pipeline."host-gateway-tdfb-drc-capture" { { in_bit_depth 32 in_valid_bit_depth 32 + in_channels $TDFB_DMIC_PCM_CHANNELS + in_ch_cfg $TDFB_DMIC_CHANNEL_CFG + in_ch_map $TDFB_DMIC_CHANNEL_MAP } ] Object.Base.output_audio_format [ { out_bit_depth 32 out_valid_bit_depth 32 + out_channels $TDFB_DMIC_PCM_CHANNELS + out_ch_cfg $TDFB_DMIC_CHANNEL_CFG + out_ch_map $TDFB_DMIC_CHANNEL_MAP } ] } @@ -84,12 +121,18 @@ Class.Pipeline."host-gateway-tdfb-drc-capture" { { in_bit_depth 32 in_valid_bit_depth 32 + in_channels $TDFB_DMIC_PCM_CHANNELS + in_ch_cfg $TDFB_DMIC_CHANNEL_CFG + in_ch_map $TDFB_DMIC_CHANNEL_MAP } ] Object.Base.output_audio_format [ { out_bit_depth 32 out_valid_bit_depth 32 + out_channels $TDFB_DMIC_PCM_CHANNELS + out_ch_cfg $TDFB_DMIC_CHANNEL_CFG + out_ch_map $TDFB_DMIC_CHANNEL_MAP } ] } diff --git a/tools/topology/topology2/platform/intel/sdw-dmic-generic.conf b/tools/topology/topology2/platform/intel/sdw-dmic-generic.conf index f8fc51303966..4331f0664d6e 100644 --- a/tools/topology/topology2/platform/intel/sdw-dmic-generic.conf +++ b/tools/topology/topology2/platform/intel/sdw-dmic-generic.conf @@ -5,7 +5,37 @@ Define { SDW_DMIC_STREAM 'SDW3-Capture' SDW_DMIC_BE_ID 4 SDW_DMIC_PASSTHROUGH "false" - SDW_DMIC_HOST_PIPELINE_ID 40 + SDW_DMIC_HOST_PIPELINE_ID 40 + SDW_DMIC_PCM_CHANNELS 2 + SDW_DMIC_CHANNEL_CFG $CHANNEL_CONFIG_STEREO + SDW_DMIC_CHANNEL_MAP $CHANNEL_MAP_STEREO +} + +IncludeByKey.SDW_DMIC_PCM_CHANNELS { + "1" { + Define { + SDW_DMIC_CHANNEL_CFG $CHANNEL_CONFIG_MONO + SDW_DMIC_CHANNEL_MAP $CHANNEL_MAP_MONO + } + } + "2" { + Define { + SDW_DMIC_CHANNEL_CFG $CHANNEL_CONFIG_STEREO + SDW_DMIC_CHANNEL_MAP $CHANNEL_MAP_STEREO + } + } + "4" { + Define { + SDW_DMIC_CHANNEL_CFG $CHANNEL_CONFIG_3_POINT_1 + SDW_DMIC_CHANNEL_MAP $CHANNEL_MAP_3_POINT_1 + } + } + "8" { + Define { + SDW_DMIC_CHANNEL_CFG $CHANNEL_CONFIG_7_POINT_1 + SDW_DMIC_CHANNEL_MAP $CHANNEL_MAP_7_POINT_1 + } + } } Object.Dai.ALH [ @@ -16,7 +46,7 @@ Object.Dai.ALH [ name $SDW_DMIC_STREAM default_hw_conf_id 0 rate 48000 - channels 2 + channels $SDW_DMIC_PCM_CHANNELS Object.Base.hw_config.1 { id 0 @@ -38,46 +68,134 @@ IncludeByKey.SDW_DMIC_ENHANCED_CAPTURE { pcm_id 4 IncludeByKey.PCM_FORMAT_ALL { "true" { + num_input_audio_formats 5 num_output_audio_formats 5 + Object.Base.input_audio_format [ + { + in_channels $SDW_DMIC_PCM_CHANNELS + in_bit_depth 16 + in_valid_bit_depth 16 + in_ch_cfg $SDW_DMIC_CHANNEL_CFG + in_ch_map $SDW_DMIC_CHANNEL_MAP + } + { + in_channels $SDW_DMIC_PCM_CHANNELS + in_bit_depth 32 + in_valid_bit_depth 32 + in_ch_cfg $SDW_DMIC_CHANNEL_CFG + in_ch_map $SDW_DMIC_CHANNEL_MAP + } + { + in_channels $SDW_DMIC_PCM_CHANNELS + in_bit_depth 32 + in_valid_bit_depth 24 + in_ch_cfg $SDW_DMIC_CHANNEL_CFG + in_ch_map $SDW_DMIC_CHANNEL_MAP + } + { + in_channels $SDW_DMIC_PCM_CHANNELS + in_bit_depth 32 + in_valid_bit_depth 32 + in_sample_type $SAMPLE_TYPE_FLOAT + in_ch_cfg $SDW_DMIC_CHANNEL_CFG + in_ch_map $SDW_DMIC_CHANNEL_MAP + } + { + in_channels $SDW_DMIC_PCM_CHANNELS + in_bit_depth 8 + in_valid_bit_depth 8 + in_sample_type $SAMPLE_TYPE_UNSIGNED_INTEGER + in_ch_cfg $SDW_DMIC_CHANNEL_CFG + in_ch_map $SDW_DMIC_CHANNEL_MAP + } + ] Object.Base.output_audio_format [ { + out_channels $SDW_DMIC_PCM_CHANNELS out_bit_depth 16 out_valid_bit_depth 16 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP } { + out_channels $SDW_DMIC_PCM_CHANNELS out_bit_depth 32 out_valid_bit_depth 32 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP } { + out_channels $SDW_DMIC_PCM_CHANNELS out_bit_depth 32 out_valid_bit_depth 24 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP } { + out_channels $SDW_DMIC_PCM_CHANNELS out_bit_depth 32 out_valid_bit_depth 32 out_sample_type $SAMPLE_TYPE_FLOAT + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP } { + out_channels $SDW_DMIC_PCM_CHANNELS out_bit_depth 8 out_valid_bit_depth 8 out_sample_type $SAMPLE_TYPE_UNSIGNED_INTEGER + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP } ] } "false" { + num_input_audio_formats 3 num_output_audio_formats 3 + Object.Base.input_audio_format [ + { + in_channels $SDW_DMIC_PCM_CHANNELS + in_bit_depth 16 + in_valid_bit_depth 16 + in_ch_cfg $SDW_DMIC_CHANNEL_CFG + in_ch_map $SDW_DMIC_CHANNEL_MAP + } + { + in_channels $SDW_DMIC_PCM_CHANNELS + in_bit_depth 32 + in_valid_bit_depth 24 + in_ch_cfg $SDW_DMIC_CHANNEL_CFG + in_ch_map $SDW_DMIC_CHANNEL_MAP + } + { + in_channels $SDW_DMIC_PCM_CHANNELS + in_bit_depth 32 + in_valid_bit_depth 32 + in_ch_cfg $SDW_DMIC_CHANNEL_CFG + in_ch_map $SDW_DMIC_CHANNEL_MAP + } + ] Object.Base.output_audio_format [ { + out_channels $SDW_DMIC_PCM_CHANNELS out_bit_depth 16 out_valid_bit_depth 16 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP } { + out_channels $SDW_DMIC_PCM_CHANNELS out_bit_depth 32 out_valid_bit_depth 24 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP } { + out_channels $SDW_DMIC_PCM_CHANNELS out_bit_depth 32 out_valid_bit_depth 32 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP } ] } @@ -121,6 +239,76 @@ IncludeByKey.SDW_DMIC_ENHANCED_CAPTURE { Object.Widget.host-copier.1 { stream_name "sdw dmic" pcm_id 4 + IncludeByKey.PCM_FORMAT_ALL { + "true" { + num_output_audio_formats 5 + Object.Base.output_audio_format [ + { + out_channels $SDW_DMIC_PCM_CHANNELS + out_bit_depth 16 + out_valid_bit_depth 16 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP + } + { + out_channels $SDW_DMIC_PCM_CHANNELS + out_bit_depth 32 + out_valid_bit_depth 32 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP + } + { + out_channels $SDW_DMIC_PCM_CHANNELS + out_bit_depth 32 + out_valid_bit_depth 24 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP + } + { + out_channels $SDW_DMIC_PCM_CHANNELS + out_bit_depth 32 + out_valid_bit_depth 32 + out_sample_type $SAMPLE_TYPE_FLOAT + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP + } + { + out_channels $SDW_DMIC_PCM_CHANNELS + out_bit_depth 8 + out_valid_bit_depth 8 + out_sample_type $SAMPLE_TYPE_UNSIGNED_INTEGER + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP + } + ] + } + "false" { + num_output_audio_formats 3 + Object.Base.output_audio_format [ + { + out_channels $SDW_DMIC_PCM_CHANNELS + out_bit_depth 16 + out_valid_bit_depth 16 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP + } + { + out_channels $SDW_DMIC_PCM_CHANNELS + out_bit_depth 32 + out_valid_bit_depth 24 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP + } + { + out_channels $SDW_DMIC_PCM_CHANNELS + out_bit_depth 32 + out_valid_bit_depth 32 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP + } + ] + } + } } } ] @@ -141,19 +329,25 @@ Object.Widget { num_output_audio_formats 1 num_output_pins 1 - # 32-bit 48KHz 2ch + # 32-bit 48KHz capture, channel count derived from NUM_DMICS. Object.Base.input_audio_format [ { + in_channels $SDW_DMIC_PCM_CHANNELS in_bit_depth 32 in_valid_bit_depth $SDW_LINK_VALID_BITS in_sample_type $SAMPLE_TYPE_MSB_INTEGER + in_ch_cfg $SDW_DMIC_CHANNEL_CFG + in_ch_map $SDW_DMIC_CHANNEL_MAP in_fmt_cfg "$[($in_channels | ($in_valid_bit_depth * 256))]" } ] Object.Base.output_audio_format [ { + out_channels $SDW_DMIC_PCM_CHANNELS out_bit_depth 32 out_valid_bit_depth 32 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP } ] } @@ -174,14 +368,20 @@ Object.Widget { # index 41 is in herited from the pipeline definition Object.Base.input_audio_format [ { + in_channels $SDW_DMIC_PCM_CHANNELS in_bit_depth 32 in_valid_bit_depth 32 + in_ch_cfg $SDW_DMIC_CHANNEL_CFG + in_ch_map $SDW_DMIC_CHANNEL_MAP } ] Object.Base.output_audio_format [ { + out_channels $SDW_DMIC_PCM_CHANNELS out_bit_depth 32 out_valid_bit_depth 32 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP } ] @@ -197,14 +397,20 @@ Object.Widget { num_output_audio_formats 1 Object.Base.input_audio_format [ { + in_channels $SDW_DMIC_PCM_CHANNELS in_bit_depth 32 in_valid_bit_depth 32 + in_ch_cfg $SDW_DMIC_CHANNEL_CFG + in_ch_map $SDW_DMIC_CHANNEL_MAP } ] Object.Base.output_audio_format [ { + out_channels $SDW_DMIC_PCM_CHANNELS out_bit_depth 32 out_valid_bit_depth 32 + out_ch_cfg $SDW_DMIC_CHANNEL_CFG + out_ch_map $SDW_DMIC_CHANNEL_MAP } ] } @@ -226,6 +432,8 @@ Object.PCM.pcm [ Object.PCM.pcm_caps.1 { name "sdw dmic" + channels_min $SDW_DMIC_PCM_CHANNELS + channels_max $SDW_DMIC_PCM_CHANNELS IncludeByKey.PCM_FORMAT_ALL { "true" { formats 'S16_LE,S24_LE,S32_LE,U8,FLOAT_LE' From da93fe658bdfb08f340f7009eb406033c823b903 Mon Sep 17 00:00:00 2001 From: Bard Liao Date: Mon, 20 Jul 2026 11:31:34 +0800 Subject: [PATCH 3/3] topology2: add sof-sdca-mic-1/4/8ch-id4 tplgs support Add 1 channel, 4 channel and 8 channel sdca mic function topologies support. Signed-off-by: Bard Liao --- .../production/tplg-targets-sdca-generic.cmake | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tools/topology/topology2/production/tplg-targets-sdca-generic.cmake b/tools/topology/topology2/production/tplg-targets-sdca-generic.cmake index c7d5b5d8af1b..61ad8c550e57 100644 --- a/tools/topology/topology2/production/tplg-targets-sdca-generic.cmake +++ b/tools/topology/topology2/production/tplg-targets-sdca-generic.cmake @@ -27,9 +27,20 @@ DEEP_BUF_SPK=true" SDW_AMP_FEEDBACK=false,SDW_SPK_STREAM=Playback-SmartAmp,NUM_HDMIS=0,\ DEEP_BUF_SPK=true" +#default NUM_DMICS=2 "cavs-sdw\;sof-sdca-mic-id4\;SDW_JACK=false,SDW_DMIC=1,NUM_HDMIS=0,\ SDW_DMIC_STREAM=Capture-SmartMic" +"cavs-sdw\;sof-sdca-mic-1ch-id4\;SDW_JACK=false,SDW_DMIC=1,NUM_HDMIS=0,\ +SDW_DMIC_STREAM=Capture-SmartMic,SDW_DMIC_PCM_CHANNELS=1" + +"cavs-sdw\;sof-sdca-mic-4ch-id4\;SDW_JACK=false,SDW_DMIC=1,NUM_HDMIS=0,\ +SDW_DMIC_STREAM=Capture-SmartMic,SDW_DMIC_PCM_CHANNELS=4,TDFB_DMIC_PCM_CHANNELS=4,\ +EFX_MIC_TDFB_PARAMS=line4_pass" + +"cavs-sdw\;sof-sdca-mic-8ch-id4\;SDW_JACK=false,SDW_DMIC=1,NUM_HDMIS=0,\ +SDW_DMIC_STREAM=Capture-SmartMic,SDW_DMIC_PCM_CHANNELS=8" + "cavs-sdw\;sof-hdmi-pcm5-id2\;SDW_JACK=false,HDMI1_ID=2,HDMI2_ID=3,HDMI3_ID=4" "cavs-sdw\;sof-hdmi-pcm5-id3\;SDW_JACK=false,HDMI1_ID=3,HDMI2_ID=4,HDMI3_ID=5" "cavs-sdw\;sof-hdmi-pcm5-id4\;SDW_JACK=false,HDMI1_ID=4,HDMI2_ID=5,HDMI3_ID=6"