From fb6c3b7e9d01697419d8c4e5a4341f13fbc64a7c Mon Sep 17 00:00:00 2001 From: Seppo Ingalsuo Date: Fri, 30 Jun 2023 19:00:03 +0300 Subject: [PATCH] Tools: Topology: Add test topologies for crossover component This patch adds build of tplg1 development topologies sof-tgl-nocodec-crossover-2way.tplg sof-tgl-nocodec-crossover-4way.tplg The tplg2 development topology version is sof-tgl-nocodec-crossover-2way.tplg Signed-off-by: Seppo Ingalsuo --- .../topology1/development/CMakeLists.txt | 2 + .../sof-tgl-nocodec-crossover-2way.m4 | 158 +++++++ .../sof-tgl-nocodec-crossover-4way.m4 | 264 ++++++++++++ .../m4/crossover/coef_2way_48000_200_1_2.m4 | 19 + .../coef_3way_48000_200_1000_1_2_3.m4 | 33 ++ .../coef_4way_48000_200_1000_3000_1_2_3_4.m4 | 33 ++ .../topology1/sof/pipe-crossover-playback.m4 | 6 +- .../development/cavs-nocodec-crossover.conf | 388 ++++++++++++++++++ .../topology2/development/tplg-targets.cmake | 5 +- .../include/components/crossover.conf | 63 +++ .../crossover/coef_2way_48000_200_0_1.conf | 20 + .../coef_3way_48000_200_1000_0_1_2.conf | 34 ++ ...coef_4way_48000_200_1000_3000_0_1_2_3.conf | 34 ++ .../topology2/platform/intel/efx-default.conf | 1 + 14 files changed, 1058 insertions(+), 2 deletions(-) create mode 100644 tools/topology/topology1/development/sof-tgl-nocodec-crossover-2way.m4 create mode 100644 tools/topology/topology1/development/sof-tgl-nocodec-crossover-4way.m4 create mode 100644 tools/topology/topology1/m4/crossover/coef_2way_48000_200_1_2.m4 create mode 100644 tools/topology/topology1/m4/crossover/coef_3way_48000_200_1000_1_2_3.m4 create mode 100644 tools/topology/topology1/m4/crossover/coef_4way_48000_200_1000_3000_1_2_3_4.m4 create mode 100644 tools/topology/topology2/development/cavs-nocodec-crossover.conf create mode 100644 tools/topology/topology2/include/components/crossover.conf create mode 100644 tools/topology/topology2/include/components/crossover/coef_2way_48000_200_0_1.conf create mode 100644 tools/topology/topology2/include/components/crossover/coef_3way_48000_200_1000_0_1_2.conf create mode 100644 tools/topology/topology2/include/components/crossover/coef_4way_48000_200_1000_3000_0_1_2_3.conf diff --git a/tools/topology/topology1/development/CMakeLists.txt b/tools/topology/topology1/development/CMakeLists.txt index b12d75141685..313cfec9b852 100644 --- a/tools/topology/topology1/development/CMakeLists.txt +++ b/tools/topology/topology1/development/CMakeLists.txt @@ -24,6 +24,8 @@ set(TPLGS "sof-tgl-nocodec-ci\;sof-tgl-nocodec-ci" "sof-tgl-nocodec-ci\;sof-adl-nocodec-ci" "sof-tgl-nocodec-mux\;sof-tgl-nocodec-mux" + "sof-tgl-nocodec-crossover-4way\;sof-tgl-nocodec-crossover-4way" + "sof-tgl-nocodec-crossover-2way\;sof-tgl-nocodec-crossover-2way" "sof-hda-generic-kwd\;sof-hda-generic-2ch-kwd\;-DCHANNELS=2\;-DDYNAMIC=1" "sof-hda-generic-kwd\;sof-hda-generic-4ch-kwd\;-DCHANNELS=4\;-DDYNAMIC=1" ) diff --git a/tools/topology/topology1/development/sof-tgl-nocodec-crossover-2way.m4 b/tools/topology/topology1/development/sof-tgl-nocodec-crossover-2way.m4 new file mode 100644 index 000000000000..77e9cd99e832 --- /dev/null +++ b/tools/topology/topology1/development/sof-tgl-nocodec-crossover-2way.m4 @@ -0,0 +1,158 @@ +# +# Topology for Tigerlake RVP board CI testing, with covering as more +# features as possible running with no codec machine. +# +# TGL Host GW DMAC support max 6 playback and max 6 capture channels so some +# pipelines/PCMs/DAIs are commented out to keep within HW bounds. If these +# are needed then they can be used provided other PCMs/pipelines/SSPs are +# commented out in their place. + +# Include topology builder +include(`utils.m4') +include(`dai.m4') +include(`ssp.m4') +include(`crossover.m4') +include(`bytecontrol.m4') +include(`pipeline.m4') + +# Include Token library +include(`sof/tokens.m4') + +# Include Tigerlake DSP configuration +include(`platform/intel/tgl.m4') + +#define SSP_MCLK +define(`SSP_MCLK', 38400000) + +# +# Topology +# +# pcm0p --> buf1.0 --> crossover1.0 --> buf1.1 --> ssp0.out +# | +# +----------> buf2.0 --> ssp2.out +# +# +# pcm0c <-- buf5.0 <-- ssp0.in +# pcm1c <-- buf6.0 <-- ssp2.in +# + +dnl PIPELINE_PCM_ADD(pipeline, +dnl pipe id, pcm, max channels, format, +dnl period, priority, core, +dnl pcm_min_rate, pcm_max_rate, pipeline_rate, +dnl time_domain, sched_comp, dynamic) + +define(PIPELINE_FILTER1, crossover/coef_2way_48000_200_1_2.m4) + +# Low Latency playback pipeline 1 on PCM 0 using max 2 channels of s16le. +# Schedule 48 frames per 1000us deadline with priority 0 on core 0 +PIPELINE_PCM_ADD(sof/pipe-crossover-playback.m4, + 1, 0, 2, s16le, + 1000, 0, 0, + 48000, 48000, 48000, + SCHEDULE_TIME_DOMAIN_TIMER, + PIPELINE_PLAYBACK_SCHED_COMP_1) + +undefine(`PIPELINE_FILTER1') + +# Playback pipeline 2 on PCM 1 using max 2 channels of s16le. +# Set 1000us deadline on core 0 with priority 0 +PIPELINE_PCM_ADD(sof/pipe-dai-endpoint.m4, + 2, 1, 2, s16le, + 1000, 0, 0, + 48000, 48000, 48000, + SCHEDULE_TIME_DOMAIN_TIMER) + +# connect pipelines together +SectionGraph."pipe-sof-2-pipe" { + index "2" + + lines [ + # connect the second sink buffer + dapm(PIPELINE_SOURCE_2, PIPELINE_CROSSOVER_1) + ] +} + +# Pass-through capture pipeline 5 on PCM 0 using max 2 channels of s16le. +# Schedule 48 frames per 1000us deadline with priority 0 on core 0 +PIPELINE_PCM_ADD(sof/pipe-passthrough-capture.m4, + 5, 0, 2, s16le, + 1000, 0, 0, + 48000, 48000, 48000) + +# Pass-throug capture pipeline 6 on PCM 1 using max 2 channels of s16le. +# Schedule 48 frames per 1000us deadline with priority 0 on core 0 +PIPELINE_PCM_ADD(sof/pipe-passthrough-capture.m4, + 6, 1, 2, s16le, + 1000, 0, 0, + 48000, 48000, 48000) + +# +# DAIs configuration +# + +dnl DAI_ADD(pipeline, +dnl pipe id, dai type, dai_index, dai_be, +dnl buffer, periods, format, +dnl period , priority, core, time_domain, +dnl channels, rate, dynamic_pipe) + +# playback DAI is SSP0 using 2 periods +# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-playback.m4, + 1, SSP, 0, NoCodec-0, + PIPELINE_SOURCE_1, 2, s16le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER, + 2, 48000) + +dnl DAI_ADD_SCHED(pipeline, +dnl pipe id, dai type, dai_index, dai_be, +dnl buffer, periods, format, +dnl period , priority, core, time_domain, sched_comp) + +# playback DAI is SSP2 using 2 periods +# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD_SCHED(sof/pipe-dai-sched-playback.m4, + 2, SSP, 2, NoCodec-2, + PIPELINE_SOURCE_2, 2, s16le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER, + PIPELINE_PLAYBACK_SCHED_COMP_1) + +# capture DAI is SSP0 using 2 periods +# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-capture.m4, + 5, SSP, 0, NoCodec-0, + PIPELINE_SINK_5, 2, s16le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) + +# capture DAI is SSP2 using 2 periods +# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-capture.m4, + 6, SSP, 2, NoCodec-2, + PIPELINE_SINK_6, 2, s16le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) + +dnl PCM_DUPLEX_ADD(name, pcm_id, playback, capture) +PCM_DUPLEX_ADD(Port0, 0, PIPELINE_PCM_1, PIPELINE_PCM_5) + +dnl PCM_CAPTURE_ADD(name, pcm_id, capture) +PCM_CAPTURE_ADD(Port1, 1, PIPELINE_PCM_6) + +# +# BE configurations - overrides config in ACPI if present +# + +dnl DAI_CONFIG(type, idx, link_id, name, ssp_config/dmic_config) +DAI_CONFIG(SSP, 0, 0, NoCodec-0, + SSP_CONFIG(I2S, SSP_CLOCK(mclk, 38400000, codec_mclk_in), + SSP_CLOCK(bclk, 2400000, codec_slave), + SSP_CLOCK(fsync, 48000, codec_slave), + SSP_TDM(2, 25, 3, 3), + SSP_CONFIG_DATA(SSP, 0, 24, 0, SSP_QUIRK_LBM))) + +DAI_CONFIG(SSP, 2, 2, NoCodec-2, + SSP_CONFIG(I2S, SSP_CLOCK(mclk, 38400000, codec_mclk_in), + SSP_CLOCK(bclk, 2400000, codec_slave), + SSP_CLOCK(fsync, 48000, codec_slave), + SSP_TDM(2, 25, 3, 3), + SSP_CONFIG_DATA(SSP, 2, 24, 0, SSP_QUIRK_LBM))) diff --git a/tools/topology/topology1/development/sof-tgl-nocodec-crossover-4way.m4 b/tools/topology/topology1/development/sof-tgl-nocodec-crossover-4way.m4 new file mode 100644 index 000000000000..e3d73ec59c90 --- /dev/null +++ b/tools/topology/topology1/development/sof-tgl-nocodec-crossover-4way.m4 @@ -0,0 +1,264 @@ +# +# Topology for Tigerlake RVP board CI testing, with covering as more +# features as possible running with no codec machine. +# +# TGL Host GW DMAC support max 6 playback and max 6 capture channels so some +# pipelines/PCMs/DAIs are commented out to keep within HW bounds. If these +# are needed then they can be used provided other PCMs/pipelines/SSPs are +# commented out in their place. + +# Include topology builder +include(`utils.m4') +include(`dai.m4') +include(`ssp.m4') +include(`crossover.m4') +include(`bytecontrol.m4') +include(`pipeline.m4') + +# Include Token library +include(`sof/tokens.m4') + +# Include Tigerlake DSP configuration +include(`platform/intel/tgl.m4') + +#define SSP_MCLK +define(`SSP_MCLK', 38400000) + +# +# Topology +# +# pcm0p --> buf1.0 --> crossover1.0 --> buf1.1 --> ssp0.out +# | +# +----------> buf2.0 --> ssp1.out +# | +# +----------> buf3.0 --> ssp2.out +# | +# +----------> buf4.0 --> ssp3.out +# +# pcm0c <-- buf5.0 <-- ssp0.in +# pcm1c <-- buf6.0 <-- ssp1.in +# pcm2c <-- buf7.0 <-- ssp2.in +# pcm3c <-- buf8.0 <-- ssp3.in +# + +dnl PIPELINE_PCM_ADD(pipeline, +dnl pipe id, pcm, max channels, format, +dnl period, priority, core, +dnl pcm_min_rate, pcm_max_rate, pipeline_rate, +dnl time_domain, sched_comp, dynamic) + +define(PIPELINE_FILTER1, crossover/coef_4way_48000_200_1000_3000_1_2_3_4.m4) + +# Low Latency playback pipeline 1 on PCM 0 using max 2 channels of s16le. +# Schedule 48 frames per 1000us deadline with priority 0 on core 0 +PIPELINE_PCM_ADD(sof/pipe-crossover-playback.m4, + 1, 0, 2, s16le, + 1000, 0, 0, + 48000, 48000, 48000, + SCHEDULE_TIME_DOMAIN_TIMER, + PIPELINE_PLAYBACK_SCHED_COMP_1) + +undefine(`PIPELINE_FILTER1') + +# Playback pipeline 2 on PCM 1 using max 2 channels of s16le. +# Set 1000us deadline on core 0 with priority 0 +PIPELINE_PCM_ADD(sof/pipe-dai-endpoint.m4, + 2, 1, 2, s16le, + 1000, 0, 0, + 48000, 48000, 48000, + SCHEDULE_TIME_DOMAIN_TIMER) + +# Playback pipeline 3 on PCM 2 using max 2 channels of s16le. +# Set 1000us deadline on core 0 with priority 0 +PIPELINE_PCM_ADD(sof/pipe-dai-endpoint.m4, + 3, 2, 2, s16le, + 1000, 0, 0, + 48000, 48000, 48000, + SCHEDULE_TIME_DOMAIN_TIMER) + +# Playback pipeline 4 on PCM 3 using max 2 channels of s16le. +# Set 1000us deadline on core 0 with priority 0 +PIPELINE_PCM_ADD(sof/pipe-dai-endpoint.m4, + 4, 3, 2, s16le, + 1000, 0, 0, + 48000, 48000, 48000, + SCHEDULE_TIME_DOMAIN_TIMER) + +# connect pipelines together +SectionGraph."pipe-sof-2-pipe" { + index "2" + + lines [ + # connect the second sink buffer + dapm(PIPELINE_SOURCE_2, PIPELINE_CROSSOVER_1) + ] +} + +# connect pipelines together +SectionGraph."pipe-sof-3-pipe" { + index "3" + + lines [ + # connect the second sink buffer + dapm(PIPELINE_SOURCE_3, PIPELINE_CROSSOVER_1) + ] +} + +# connect pipelines together +SectionGraph."pipe-sof-4-pipe" { + index "4" + + lines [ + # connect the second sink buffer + dapm(PIPELINE_SOURCE_4, PIPELINE_CROSSOVER_1) + ] +} + +# Pass-through capture pipeline 5 on PCM 0 using max 2 channels of s16le. +# Schedule 48 frames per 1000us deadline with priority 0 on core 0 +PIPELINE_PCM_ADD(sof/pipe-passthrough-capture.m4, + 5, 0, 2, s16le, + 1000, 0, 0, + 48000, 48000, 48000) + +# Pass-throug capture pipeline 6 on PCM 1 using max 2 channels of s16le. +# Schedule 48 frames per 1000us deadline with priority 0 on core 0 +PIPELINE_PCM_ADD(sof/pipe-passthrough-capture.m4, + 6, 1, 2, s16le, + 1000, 0, 0, + 48000, 48000, 48000) + +# Pass-throug capture pipeline 7 on PCM 2 using max 2 channels of s16le. +# Schedule 48 frames per 1000us deadline with priority 0 on core 0 +PIPELINE_PCM_ADD(sof/pipe-passthrough-capture.m4, + 7, 2, 2, s16le, + 1000, 0, 0, + 48000, 48000, 48000) + +# Pass-throug capture pipeline 6 on PCM 3 using max 2 channels of s16le. +# Schedule 48 frames per 1000us deadline with priority 0 on core 0 +PIPELINE_PCM_ADD(sof/pipe-passthrough-capture.m4, + 8, 3, 2, s16le, + 1000, 0, 0, + 48000, 48000, 48000) + +# +# DAIs configuration +# + +dnl DAI_ADD(pipeline, +dnl pipe id, dai type, dai_index, dai_be, +dnl buffer, periods, format, +dnl period , priority, core, time_domain, +dnl channels, rate, dynamic_pipe) + +# playback DAI is SSP0 using 2 periods +# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-playback.m4, + 1, SSP, 0, NoCodec-0, + PIPELINE_SOURCE_1, 2, s16le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER, + 2, 48000) + + + +dnl DAI_ADD_SCHED(pipeline, +dnl pipe id, dai type, dai_index, dai_be, +dnl buffer, periods, format, +dnl period , priority, core, time_domain, sched_comp) + +# playback DAI is SSP1 using 2 periods +# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD_SCHED(sof/pipe-dai-sched-playback.m4, + 2, SSP, 1, NoCodec-1, + PIPELINE_SOURCE_2, 2, s16le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER, + PIPELINE_PLAYBACK_SCHED_COMP_1) + +# playback DAI is SSP2 using 2 periods +# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD_SCHED(sof/pipe-dai-sched-playback.m4, + 3, SSP, 2, NoCodec-2, + PIPELINE_SOURCE_3, 2, s16le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER, + PIPELINE_PLAYBACK_SCHED_COMP_1) + +# playback DAI is SSP3 using 2 periods +# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD_SCHED(sof/pipe-dai-sched-playback.m4, + 4, SSP, 3, NoCodec-3, + PIPELINE_SOURCE_4, 2, s16le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER, + PIPELINE_PLAYBACK_SCHED_COMP_1) + + + +# capture DAI is SSP0 using 2 periods +# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-capture.m4, + 5, SSP, 0, NoCodec-0, + PIPELINE_SINK_5, 2, s16le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) + +# capture DAI is SSP1 using 2 periods +# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-capture.m4, + 6, SSP, 1, NoCodec-1, + PIPELINE_SINK_6, 2, s16le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) + +# capture DAI is SSP2 using 2 periods +# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-capture.m4, + 7, SSP, 2, NoCodec-2, + PIPELINE_SINK_7, 2, s16le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) + +# capture DAI is SSP3 using 2 periods +# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-capture.m4, + 8, SSP, 3, NoCodec-3, + PIPELINE_SINK_8, 2, s16le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) + + +dnl PCM_DUPLEX_ADD(name, pcm_id, playback, capture) +PCM_DUPLEX_ADD(Port0, 0, PIPELINE_PCM_1, PIPELINE_PCM_5) + +dnl PCM_CAPTURE_ADD(name, pcm_id, capture) +PCM_CAPTURE_ADD(Port1, 1, PIPELINE_PCM_6) +PCM_CAPTURE_ADD(Port2, 2, PIPELINE_PCM_7) +PCM_CAPTURE_ADD(Port3, 3, PIPELINE_PCM_8) + +# +# BE configurations - overrides config in ACPI if present +# + +dnl DAI_CONFIG(type, idx, link_id, name, ssp_config/dmic_config) +DAI_CONFIG(SSP, 0, 0, NoCodec-0, + SSP_CONFIG(I2S, SSP_CLOCK(mclk, 38400000, codec_mclk_in), + SSP_CLOCK(bclk, 2400000, codec_slave), + SSP_CLOCK(fsync, 48000, codec_slave), + SSP_TDM(2, 25, 3, 3), + SSP_CONFIG_DATA(SSP, 0, 24, 0, SSP_QUIRK_LBM))) + +DAI_CONFIG(SSP, 1, 1, NoCodec-1, + SSP_CONFIG(I2S, SSP_CLOCK(mclk, 38400000, codec_mclk_in), + SSP_CLOCK(bclk, 2400000, codec_slave), + SSP_CLOCK(fsync, 48000, codec_slave), + SSP_TDM(2, 25, 3, 3), + SSP_CONFIG_DATA(SSP, 1, 24, 0, SSP_QUIRK_LBM))) + +DAI_CONFIG(SSP, 2, 2, NoCodec-2, + SSP_CONFIG(I2S, SSP_CLOCK(mclk, 38400000, codec_mclk_in), + SSP_CLOCK(bclk, 2400000, codec_slave), + SSP_CLOCK(fsync, 48000, codec_slave), + SSP_TDM(2, 25, 3, 3), + SSP_CONFIG_DATA(SSP, 2, 24, 0, SSP_QUIRK_LBM))) + +DAI_CONFIG(SSP, 3, 3, NoCodec-3, + SSP_CONFIG(I2S, SSP_CLOCK(mclk, 38400000, codec_mclk_in), + SSP_CLOCK(bclk, 2400000, codec_slave), + SSP_CLOCK(fsync, 48000, codec_slave), + SSP_TDM(2, 25, 3, 3), + SSP_CONFIG_DATA(SSP, 3, 24, 0, SSP_QUIRK_LBM))) diff --git a/tools/topology/topology1/m4/crossover/coef_2way_48000_200_1_2.m4 b/tools/topology/topology1/m4/crossover/coef_2way_48000_200_1_2.m4 new file mode 100644 index 000000000000..640f22ee7e26 --- /dev/null +++ b/tools/topology/topology1/m4/crossover/coef_2way_48000_200_1_2.m4 @@ -0,0 +1,19 @@ +# Exported Control Bytes 30-Jun-2023 +CONTROLBYTES_PRIV(CROSSOVER_priv, +` bytes "0x53,0x4f,0x46,0x00,0x00,0x00,0x00,0x00,' +` 0x60,0x00,0x00,0x00,0x00,0xa0,0x01,0x03,' +` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' +` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' +` 0x60,0x00,0x00,0x00,0x02,0x00,0x00,0x00,' +` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' +` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' +` 0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,' +` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' +` 0x6f,0x82,0x53,0xc2,0x3e,0x77,0xa1,0x7d,' +` 0x95,0xc1,0x02,0x00,0x2a,0x83,0x05,0x00,' +` 0x95,0xc1,0x02,0x00,0x00,0x00,0x00,0x00,' +` 0x00,0x40,0x00,0x00,0x6f,0x82,0x53,0xc2,' +` 0x3e,0x77,0xa1,0x7d,0x34,0x7d,0xd3,0x3e,' +` 0x99,0x05,0x59,0x82,0x34,0x7d,0xd3,0x3e,' +` 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00"' +) diff --git a/tools/topology/topology1/m4/crossover/coef_3way_48000_200_1000_1_2_3.m4 b/tools/topology/topology1/m4/crossover/coef_3way_48000_200_1000_1_2_3.m4 new file mode 100644 index 000000000000..3ee3d5ef0e00 --- /dev/null +++ b/tools/topology/topology1/m4/crossover/coef_3way_48000_200_1000_1_2_3.m4 @@ -0,0 +1,33 @@ +# Exported Control Bytes 30-Jun-2023 +CONTROLBYTES_PRIV(CROSSOVER_priv, +` bytes "0x53,0x4f,0x46,0x00,0x00,0x00,0x00,0x00,' +` 0xd0,0x00,0x00,0x00,0x00,0xa0,0x01,0x03,' +` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' +` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' +` 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00,' +` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' +` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' +` 0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,' +` 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' +` 0x6f,0x82,0x53,0xc2,0x3e,0x77,0xa1,0x7d,' +` 0x95,0xc1,0x02,0x00,0x2a,0x83,0x05,0x00,' +` 0x95,0xc1,0x02,0x00,0x00,0x00,0x00,0x00,' +` 0x00,0x40,0x00,0x00,0x6f,0x82,0x53,0xc2,' +` 0x3e,0x77,0xa1,0x7d,0x34,0x7d,0xd3,0x3e,' +` 0x99,0x05,0x59,0x82,0x34,0x7d,0xd3,0x3e,' +` 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,' +` 0xef,0xcd,0xd0,0xca,0x5d,0x8c,0x2e,0x74,' +` 0x6d,0x29,0x40,0x00,0xda,0x52,0x80,0x00,' +` 0x6d,0x29,0x40,0x00,0x00,0x00,0x00,0x00,' +` 0x00,0x40,0x00,0x00,0xef,0xcd,0xd0,0xca,' +` 0x5d,0x8c,0x2e,0x74,0x9c,0x6f,0x57,0x3a,' +` 0xc9,0x20,0x51,0x8b,0x9c,0x6f,0x57,0x3a,' +` 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,' +` 0xef,0xcd,0xd0,0xca,0x5d,0x8c,0x2e,0x74,' +` 0x6d,0x29,0x40,0x00,0xda,0x52,0x80,0x00,' +` 0x6d,0x29,0x40,0x00,0x00,0x00,0x00,0x00,' +` 0x00,0x40,0x00,0x00,0xef,0xcd,0xd0,0xca,' +` 0x5d,0x8c,0x2e,0x74,0x9c,0x6f,0x57,0x3a,' +` 0xc9,0x20,0x51,0x8b,0x9c,0x6f,0x57,0x3a,' +` 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00"' +) diff --git a/tools/topology/topology1/m4/crossover/coef_4way_48000_200_1000_3000_1_2_3_4.m4 b/tools/topology/topology1/m4/crossover/coef_4way_48000_200_1000_3000_1_2_3_4.m4 new file mode 100644 index 000000000000..fe1fd29bd60d --- /dev/null +++ b/tools/topology/topology1/m4/crossover/coef_4way_48000_200_1000_3000_1_2_3_4.m4 @@ -0,0 +1,33 @@ +# Exported Control Bytes 30-Jun-2023 +CONTROLBYTES_PRIV(CROSSOVER_priv, +` bytes "0x53,0x4f,0x46,0x00,0x00,0x00,0x00,0x00,' +` 0xd0,0x00,0x00,0x00,0x00,0xa0,0x01,0x03,' +` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' +` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' +` 0xd0,0x00,0x00,0x00,0x04,0x00,0x00,0x00,' +` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' +` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' +` 0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,' +` 0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,' +` 0x6f,0x82,0x53,0xc2,0x3e,0x77,0xa1,0x7d,' +` 0x95,0xc1,0x02,0x00,0x2a,0x83,0x05,0x00,' +` 0x95,0xc1,0x02,0x00,0x00,0x00,0x00,0x00,' +` 0x00,0x40,0x00,0x00,0x6f,0x82,0x53,0xc2,' +` 0x3e,0x77,0xa1,0x7d,0x34,0x7d,0xd3,0x3e,' +` 0x99,0x05,0x59,0x82,0x34,0x7d,0xd3,0x3e,' +` 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,' +` 0xef,0xcd,0xd0,0xca,0x5d,0x8c,0x2e,0x74,' +` 0x6d,0x29,0x40,0x00,0xda,0x52,0x80,0x00,' +` 0x6d,0x29,0x40,0x00,0x00,0x00,0x00,0x00,' +` 0x00,0x40,0x00,0x00,0xef,0xcd,0xd0,0xca,' +` 0x5d,0x8c,0x2e,0x74,0x9c,0x6f,0x57,0x3a,' +` 0xc9,0x20,0x51,0x8b,0x9c,0x6f,0x57,0x3a,' +` 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,' +` 0xd0,0x91,0x42,0xdb,0xb1,0x53,0x12,0x5d,' +` 0xa0,0xc6,0xea,0x01,0x3f,0x8d,0xd5,0x03,' +` 0xa0,0xc6,0xea,0x01,0x00,0x00,0x00,0x00,' +` 0x00,0x40,0x00,0x00,0xd0,0x91,0x42,0xdb,' +` 0xb1,0x53,0x12,0x5d,0x78,0xf0,0x73,0x30,' +` 0x10,0x1f,0x18,0x9f,0x78,0xf0,0x73,0x30,' +` 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00"' +) diff --git a/tools/topology/topology1/sof/pipe-crossover-playback.m4 b/tools/topology/topology1/sof/pipe-crossover-playback.m4 index 413b65d3bc5d..006201eac4ae 100644 --- a/tools/topology/topology1/sof/pipe-crossover-playback.m4 +++ b/tools/topology/topology1/sof/pipe-crossover-playback.m4 @@ -24,7 +24,11 @@ include(`bytecontrol.m4') define(CROSSOVER_priv, concat(`crossover_bytes_', PIPELINE_ID)) define(MY_CROSSOVER_CTRL, concat(`crossover_control_', PIPELINE_ID)) -include(`crossover_coef_default.m4') + +# define filter, default is crossover_coef_default.m4 +ifdef(`PIPELINE_FILTER1', , `define(PIPELINE_FILTER1, crossover_coef_default.m4)') +include(PIPELINE_FILTER1) + C_CONTROLBYTES(MY_CROSSOVER_CTRL, PIPELINE_ID, CONTROLBYTES_OPS(bytes, 258 binds the control to bytes get/put handlers, 258, 258), CONTROLBYTES_EXTOPS(258 binds the control to bytes get/put handlers, 258, 258), diff --git a/tools/topology/topology2/development/cavs-nocodec-crossover.conf b/tools/topology/topology2/development/cavs-nocodec-crossover.conf new file mode 100644 index 000000000000..cc49e9c3ef84 --- /dev/null +++ b/tools/topology/topology2/development/cavs-nocodec-crossover.conf @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Define { + MCLK 24576000 + PLATFORM "none" + SSP0_PCM_ID 0 + SSP0_PCM_NAME "Port0" + SSP1_PCM_NAME "Port1" + SSP2_PCM_NAME "Port2" +} + +# override defaults with platform-specific config +IncludeByKey.PLATFORM { + "tgl" "platform/intel/tgl.conf" + "adl" "platform/intel/tgl.conf" + "mtl" "platform/intel/mtl.conf" + "lnl" "platform/intel/mtl.conf" +} + +# +# List of all DAIs +# +Object.Dai.SSP [ + { + id 0 + dai_index 0 + direction "duplex" + name NoCodec-0 + default_hw_conf_id 0 + sample_bits 32 + quirks "lbm_mode" + io_clk $MCLK + + Object.Base.hw_config.1 { + name "SSP0" + id 0 + bclk_freq 3072000 + tdm_slot_width 32 + # TODO: remove this. Needs alsaptlg change. + Object.Base.link_config.1 { + clock_source 1 + } + } + } + { + id 2 + dai_index 2 + direction "duplex" + name NoCodec-2 + default_hw_conf_id 0 + sample_bits 32 + quirks "lbm_mode" + io_clk $MCLK + + Object.Base.hw_config.1 { + name "SSP2" + id 0 + bclk_freq 3072000 + tdm_slot_width 32 + # TODO: remove this. Needs alsaptlg change. + Object.Base.link_config.1 { + clock_source 1 + } + } + } +] + +# +# Pipeline definitions +# +# PCM0 ---> Crossover ---> SSP0 +# | +# +--------> SSP2 +# +# SSP0 ---> PCM0 +# SSP2 ---> PCM2 + +Object.Pipeline.io-gateway [ + { + index 101 + direction playback + + Object.Widget.dai-copier.1 { + dai_index 0 + dai_type "SSP" + copier_type "SSP" + stream_name "NoCodec-0" + node_type $I2S_LINK_OUTPUT_CLASS + num_input_pins 1 + num_input_audio_formats 1 + Object.Base.input_audio_format [ + { + in_bit_depth 32 + in_valid_bit_depth 32 + } + ] + num_output_audio_formats 1 + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] + } + } + { + index 102 + direction playback + + Object.Widget.dai-copier.1 { + dai_index 2 + dai_type "SSP" + copier_type "SSP" + stream_name "NoCodec-2" + node_type $I2S_LINK_OUTPUT_CLASS + num_input_pins 1 + num_input_audio_formats 1 + Object.Base.input_audio_format [ + { + in_bit_depth 32 + in_valid_bit_depth 32 + } + ] + num_output_audio_formats 1 + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] + } + } +] + +Object.Pipeline.host-gateway-playback [ + { + index 1 + Object.Widget.host-copier.1 { + stream_name 'SSP0 Playback' + pcm_id 0 + 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 [ + { + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] + } + } +] + +Object.Widget.crossover [ + { + index 1 + name "crossover.1.1" + + num_input_audio_formats 1 + Object.Base.input_audio_format.1 { + input_pin_index 0 + in_bit_depth 32 + in_valid_bit_depth 32 + } + + num_output_pins 2 + num_output_audio_formats 2 + Object.Base.output_audio_format { + 1 { + output_pin_index 0 + out_bit_depth 32 + out_valid_bit_depth 32 + } + 2 { + output_pin_index 1 + out_bit_depth 32 + out_valid_bit_depth 32 + } + } + + Object.Base.output_pin_binding.1 { + output_pin_binding_name "dai-copier.SSP.NoCodec-0.playback" + } + + Object.Base.output_pin_binding.2 { + output_pin_binding_name "dai-copier.SSP.NoCodec-2.playback" + } + + Object.Control.bytes."1" { + name "crossover.1.1_bytes_control" + IncludeByKey.EFX_CROSSOVER_PARAMS { + "2way" "include/components/crossover/coef_2way_48000_200_0_1.conf" + "3way" "include/components/crossover/coef_3way_48000_200_1000_0_1_2.conf" + "4way" "include/components/crossover/coef_4way_48000_200_1000_3000_0_1_2_3.conf" + } + } + } +] + + +Object.Pipeline.host-gateway-capture [ + { + index 7 + + Object.Widget.host-copier.1 { + stream_name 'SSP0 Capture' + pcm_id 0 + } + } +] + +Object.Pipeline.io-gateway-capture [ + { + index 8 + direction capture + + Object.Widget.dai-copier."1" { + dai_index 0 + dai_type "SSP" + type dai_out + copier_type "SSP" + stream_name "NoCodec-0" + node_type $I2S_LINK_INPUT_CLASS + num_output_pins 2 + num_input_audio_formats 1 + + Object.Base.input_audio_format [ + { + in_bit_depth 32 + in_valid_bit_depth 32 + } + ] + num_output_audio_formats 1 + Object.Base.output_audio_format [ + { + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] + } + } +] + +Object.Pipeline.host-gateway-capture [ + { + index 11 + + Object.Widget.host-copier.1 { + stream_name 'SSP2 Capture' + pcm_id 2 + } + } +] + +Object.Pipeline.io-gateway-capture [ + { + index 12 + direction capture + + Object.Widget.dai-copier."1" { + dai_index 2 + dai_type "SSP" + type dai_out + copier_type "SSP" + stream_name "NoCodec-2" + node_type $I2S_LINK_INPUT_CLASS + Object.Base.audio_format.1 { + in_bit_depth 32 + in_valid_bit_depth 32 + out_bit_depth 32 + out_valid_bit_depth 32 + } + } + } +] + +Object.PCM.pcm [ + { + name "$SSP0_PCM_NAME" + id $SSP0_PCM_ID + direction "duplex" + Object.Base.fe_dai.1 { + name "$SSP0_PCM_NAME" + } + + Object.PCM.pcm_caps.1 { + direction "playback" + name "SSP0 Playback" + formats 'S16_LE,S24_LE,S32_LE' + } + + Object.PCM.pcm_caps.2 { + direction "capture" + name "SSP0 Capture" + formats 'S32_LE' + } + } + { + name "$SSP2_PCM_NAME" + id 2 + direction "capture" + Object.Base.fe_dai.1 { + name "$SSP2_PCM_NAME" + } + + Object.PCM.pcm_caps.2 { + direction "capture" + name "SSP2 Capture" + formats 'S32_LE' + } + } +] + +Object.Base.route [ + { + source "dai-copier.SSP.NoCodec-0.capture" + sink "host-copier.0.capture" + } + { + source "host-copier.0.playback" + sink "crossover.1.1" + } + { + source "crossover.1.1" + sink "dai-copier.SSP.NoCodec-0.playback" + } + + { + source "dai-copier.SSP.NoCodec-2.capture" + sink "host-copier.2.capture" + } + { + source "crossover.1.1" + sink "dai-copier.SSP.NoCodec-2.playback" + } +] + diff --git a/tools/topology/topology2/development/tplg-targets.cmake b/tools/topology/topology2/development/tplg-targets.cmake index 76631db94e54..2fd1b5c46ab2 100644 --- a/tools/topology/topology2/development/tplg-targets.cmake +++ b/tools/topology/topology2/development/tplg-targets.cmake @@ -98,5 +98,8 @@ PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-nocodec-bt-mtl-lbm.bin" "sof-hda-generic\;sof-hda-benchmark-generic-tgl\;PLATFORM=TGL,HDA_CONFIG=benchmark,USE_CHAIN_DMA=true" "sof-hda-generic\;sof-hda-benchmark-generic-mtl\;PLATFORM=MTL,HDA_CONFIG=benchmark,USE_CHAIN_DMA=true" "sof-hda-generic\;sof-hda-benchmark-generic-lnl\;PLATFORM=LNL,HDA_CONFIG=benchmark,USE_CHAIN_DMA=true" -) +# Topology to test IPC4 Crossover +"development/cavs-nocodec-crossover\;sof-tgl-nocodec-crossover-2way\;PLATFORM=tgl,\ +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-tgl-nocodec-crossover.bin,EFX_CROSSOVER_PARAMS=2way" +) diff --git a/tools/topology/topology2/include/components/crossover.conf b/tools/topology/topology2/include/components/crossover.conf new file mode 100644 index 000000000000..e3e02ec83152 --- /dev/null +++ b/tools/topology/topology2/include/components/crossover.conf @@ -0,0 +1,63 @@ +# +# +# A generic crossover component. All attributes defined herein are namespaced +# by alsatplg to "Object.Widget.crossover.attribute_name" +# +# Usage: this component can be used by declaring in the parent object. i.e. +# +# Object.Widget.crossover."N" { +# index 1 +# } +# } + +# +# Where M is pipeline ID and N is a unique integer in the parent object. + +Class.Widget."crossover" { + # + # Pipeline ID + # + DefineAttribute."index" { + type "integer" + } + + # + # Unique instance for CROSSOVER widget + # + DefineAttribute."instance" { + type "integer" + } + + # Include common widget attributes definition + + + attributes { + !constructor [ + "index" + "instance" + ] + !mandatory [ + "num_input_pins" + "num_output_pins" + "num_input_audio_formats" + "num_output_audio_formats" + ] + + !immutable [ + "uuid" + "type" + ] + !deprecated [ + "preload_count" + ] + unique "instance" + } + + # + # Default attributes for crossover + # + uuid "d1:9a:8c:94:6a:80:31:41:ad:6c:b2:bd:a9:e3:5a:9f" + type "effect" + no_pm "true" + num_input_pins 1 +} diff --git a/tools/topology/topology2/include/components/crossover/coef_2way_48000_200_0_1.conf b/tools/topology/topology2/include/components/crossover/coef_2way_48000_200_0_1.conf new file mode 100644 index 000000000000..ed944f1b56d5 --- /dev/null +++ b/tools/topology/topology2/include/components/crossover/coef_2way_48000_200_0_1.conf @@ -0,0 +1,20 @@ +# Exported Control Bytes 28-Jul-2023 +Object.Base.data."crossover_config" { + bytes " + 0x53,0x4f,0x46,0x34,0x00,0x00,0x00,0x00, + 0x60,0x00,0x00,0x00,0x00,0xa0,0x01,0x03, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x60,0x00,0x00,0x00,0x02,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6f,0x82,0x53,0xc2,0x3e,0x77,0xa1,0x7d, + 0x95,0xc1,0x02,0x00,0x2a,0x83,0x05,0x00, + 0x95,0xc1,0x02,0x00,0x00,0x00,0x00,0x00, + 0x00,0x40,0x00,0x00,0x6f,0x82,0x53,0xc2, + 0x3e,0x77,0xa1,0x7d,0x34,0x7d,0xd3,0x3e, + 0x99,0x05,0x59,0x82,0x34,0x7d,0xd3,0x3e, + 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00" +} diff --git a/tools/topology/topology2/include/components/crossover/coef_3way_48000_200_1000_0_1_2.conf b/tools/topology/topology2/include/components/crossover/coef_3way_48000_200_1000_0_1_2.conf new file mode 100644 index 000000000000..5d2058643f44 --- /dev/null +++ b/tools/topology/topology2/include/components/crossover/coef_3way_48000_200_1000_0_1_2.conf @@ -0,0 +1,34 @@ +# Exported Control Bytes 28-Jul-2023 +Object.Base.data."crossover_config" { + bytes " + 0x53,0x4f,0x46,0x34,0x00,0x00,0x00,0x00, + 0xd0,0x00,0x00,0x00,0x00,0xa0,0x01,0x03, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xd0,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6f,0x82,0x53,0xc2,0x3e,0x77,0xa1,0x7d, + 0x95,0xc1,0x02,0x00,0x2a,0x83,0x05,0x00, + 0x95,0xc1,0x02,0x00,0x00,0x00,0x00,0x00, + 0x00,0x40,0x00,0x00,0x6f,0x82,0x53,0xc2, + 0x3e,0x77,0xa1,0x7d,0x34,0x7d,0xd3,0x3e, + 0x99,0x05,0x59,0x82,0x34,0x7d,0xd3,0x3e, + 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00, + 0xef,0xcd,0xd0,0xca,0x5d,0x8c,0x2e,0x74, + 0x6d,0x29,0x40,0x00,0xda,0x52,0x80,0x00, + 0x6d,0x29,0x40,0x00,0x00,0x00,0x00,0x00, + 0x00,0x40,0x00,0x00,0xef,0xcd,0xd0,0xca, + 0x5d,0x8c,0x2e,0x74,0x9c,0x6f,0x57,0x3a, + 0xc9,0x20,0x51,0x8b,0x9c,0x6f,0x57,0x3a, + 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00, + 0xef,0xcd,0xd0,0xca,0x5d,0x8c,0x2e,0x74, + 0x6d,0x29,0x40,0x00,0xda,0x52,0x80,0x00, + 0x6d,0x29,0x40,0x00,0x00,0x00,0x00,0x00, + 0x00,0x40,0x00,0x00,0xef,0xcd,0xd0,0xca, + 0x5d,0x8c,0x2e,0x74,0x9c,0x6f,0x57,0x3a, + 0xc9,0x20,0x51,0x8b,0x9c,0x6f,0x57,0x3a, + 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00" +} diff --git a/tools/topology/topology2/include/components/crossover/coef_4way_48000_200_1000_3000_0_1_2_3.conf b/tools/topology/topology2/include/components/crossover/coef_4way_48000_200_1000_3000_0_1_2_3.conf new file mode 100644 index 000000000000..abe3519464ac --- /dev/null +++ b/tools/topology/topology2/include/components/crossover/coef_4way_48000_200_1000_3000_0_1_2_3.conf @@ -0,0 +1,34 @@ +# Exported Control Bytes 28-Jul-2023 +Object.Base.data."crossover_config" { + bytes " + 0x53,0x4f,0x46,0x34,0x00,0x00,0x00,0x00, + 0xd0,0x00,0x00,0x00,0x00,0xa0,0x01,0x03, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xd0,0x00,0x00,0x00,0x04,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00, + 0x6f,0x82,0x53,0xc2,0x3e,0x77,0xa1,0x7d, + 0x95,0xc1,0x02,0x00,0x2a,0x83,0x05,0x00, + 0x95,0xc1,0x02,0x00,0x00,0x00,0x00,0x00, + 0x00,0x40,0x00,0x00,0x6f,0x82,0x53,0xc2, + 0x3e,0x77,0xa1,0x7d,0x34,0x7d,0xd3,0x3e, + 0x99,0x05,0x59,0x82,0x34,0x7d,0xd3,0x3e, + 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00, + 0xef,0xcd,0xd0,0xca,0x5d,0x8c,0x2e,0x74, + 0x6d,0x29,0x40,0x00,0xda,0x52,0x80,0x00, + 0x6d,0x29,0x40,0x00,0x00,0x00,0x00,0x00, + 0x00,0x40,0x00,0x00,0xef,0xcd,0xd0,0xca, + 0x5d,0x8c,0x2e,0x74,0x9c,0x6f,0x57,0x3a, + 0xc9,0x20,0x51,0x8b,0x9c,0x6f,0x57,0x3a, + 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00, + 0xd0,0x91,0x42,0xdb,0xb1,0x53,0x12,0x5d, + 0xa0,0xc6,0xea,0x01,0x3f,0x8d,0xd5,0x03, + 0xa0,0xc6,0xea,0x01,0x00,0x00,0x00,0x00, + 0x00,0x40,0x00,0x00,0xd0,0x91,0x42,0xdb, + 0xb1,0x53,0x12,0x5d,0x78,0xf0,0x73,0x30, + 0x10,0x1f,0x18,0x9f,0x78,0xf0,0x73,0x30, + 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00" +} diff --git a/tools/topology/topology2/platform/intel/efx-default.conf b/tools/topology/topology2/platform/intel/efx-default.conf index e74db461216d..b60d9602d946 100644 --- a/tools/topology/topology2/platform/intel/efx-default.conf +++ b/tools/topology/topology2/platform/intel/efx-default.conf @@ -1,4 +1,5 @@ Define { EFX_FIR_PARAMS 'include/components/eqfir/passthrough.conf' EFX_IIR_PARAMS 'include/components/eqiir/passthrough.conf' + EFX_CROSSOVER_PARAMS '2way' }