From ea7b1c8f255b0f0de1b99ab0c100a3144693b45c Mon Sep 17 00:00:00 2001 From: Fred Oh Date: Mon, 16 Mar 2020 09:35:38 -0700 Subject: [PATCH] topology: enable eq pipeline when EQ is enabled in makefile Instead of making new files for audio equalizer topology, reuse existing topology and replace only volume pipeline by macro replacement. Signed-off-by: Fred Oh --- tools/topology/CMakeLists.txt | 10 ++-- tools/topology/sof-apl-dmic.m4 | 13 ++++- tools/topology/sof-apl-eq-dmic.m4 | 74 ------------------------ tools/topology/sof-apl-eq-pcm512x.m4 | 67 --------------------- tools/topology/sof-apl-pcm512x-nohdmi.m4 | 13 ++++- 5 files changed, 27 insertions(+), 150 deletions(-) delete mode 100644 tools/topology/sof-apl-eq-dmic.m4 delete mode 100644 tools/topology/sof-apl-eq-pcm512x.m4 diff --git a/tools/topology/CMakeLists.txt b/tools/topology/CMakeLists.txt index d1da6adf7ea4..2a7e9aae28e6 100644 --- a/tools/topology/CMakeLists.txt +++ b/tools/topology/CMakeLists.txt @@ -61,7 +61,7 @@ set(TPLGS "sof-cnl-rt274\;sof-cnl-rt274" "sof-apl-tdf8532\;sof-apl-tdf8532" "sof-apl-pcm512x\;sof-apl-pcm512x" - "sof-apl-pcm512x-nohdmi\;sof-apl-pcm512x-nohdmi" + "sof-apl-pcm512x-nohdmi\;sof-apl-pcm512x-nohdmi\;-DPPROC=volume" "sof-apl-demux-pcm512x\;sof-apl-demux-pcm512x" "sof-apl-rt298\;sof-apl-rt298" "sof-apl-wm8804\;sof-apl-wm8804" @@ -70,8 +70,8 @@ set(TPLGS "sof-glk-da7219\;sof-glk-da7219" "sof-glk-rt5682\;sof-glk-rt5682" "sof-icl-nocodec\;sof-icl-nocodec" - "sof-apl-eq-pcm512x\;sof-apl-eq-pcm512x" - "sof-apl-eq-dmic\;sof-apl-eq-dmic" + "sof-apl-pcm512x-nohdmi\;sof-apl-eq-pcm512x\;-DPPROC=eq-volume" + "sof-apl-dmic\;sof-apl-eq-dmic\;-DCHANNELS=4\;-DCPROC=eq" "sof-apl-src-dmic\;sof-apl-src-dmic" "sof-apl-dmic-a2ch\;sof-apl-dmic-a2ch" "sof-apl-dmic-b2ch\;sof-apl-dmic-b2ch" @@ -79,8 +79,8 @@ set(TPLGS "sof-apl-dmic-a4ch-b2ch\;sof-apl-dmic-a4ch-b2ch" "sof-apl-dmic-a2ch-b4ch\;sof-apl-dmic-a2ch-b4ch" "sof-apl-dmic-a96k-b16k\;sof-apl-dmic-a96k-b16k" - "sof-apl-dmic\;sof-apl-dmic-4ch\;-DCHANNELS=4" - "sof-apl-dmic\;sof-apl-dmic-2ch\;-DCHANNELS=2" + "sof-apl-dmic\;sof-apl-dmic-4ch\;-DCHANNELS=4\;-DCPROC=volume" + "sof-apl-dmic\;sof-apl-dmic-2ch\;-DCHANNELS=2\;-DCPROC=volume" "sof-apl-src-50khz-pcm512x\;sof-apl-src-50khz-pcm512x" "sof-icl-dmic-4ch\;sof-icl-dmic-4ch" "sof-icl-rt700\;sof-icl-rt700\;-DPLATFORM=icl" diff --git a/tools/topology/sof-apl-dmic.m4 b/tools/topology/sof-apl-dmic.m4 index 3e894cd79d75..ee0bfa1151bc 100644 --- a/tools/topology/sof-apl-dmic.m4 +++ b/tools/topology/sof-apl-dmic.m4 @@ -23,7 +23,16 @@ define(DMIC_PDM_CONFIG, ifelse(CHANNELS, `4', ``FOUR_CH_PDM0_PDM1'', # # Define the pipelines # -# PCM6 <----- DMIC6 (DMIC01) +# CPROC is for capture pipeline processing, i.e volume, eq, eq-iir, eq-fir etc +# In this file, volume and eq are used. If anything else is used, please update +# pipeline comments below for tracking purpose. +# +ifelse(CPROC, `volume', `# PCM6 <----- DMIC6 (DMIC01)', + `ifelse(CPROC, `eq', `# PCM6 <---- EQ IIR <----- DMIC6 (DMIC01)', `')') + +# The pipeline naming notation is pipe-PROCESSING-DIRECTION.m4 +define(PIPE_PROC_CAPTURE, `sof/pipe-`CPROC'-capture.m4') + # PCM7 <----- DMIC7 (DMIC16k) # @@ -35,7 +44,7 @@ dnl time_domain, sched_comp) # Passthrough capture pipeline 6 on PCM 6 using max channels defined by CHANNELS. # Set 1000us deadline on core 0 with priority 0 -PIPELINE_PCM_ADD(sof/pipe-volume-capture.m4, +PIPELINE_PCM_ADD(PIPE_PROC_CAPTURE, 6, 6, CHANNELS, s32le, 1000, 0, 0, 48000, 48000, 48000) diff --git a/tools/topology/sof-apl-eq-dmic.m4 b/tools/topology/sof-apl-eq-dmic.m4 deleted file mode 100644 index 6ff543c4e949..000000000000 --- a/tools/topology/sof-apl-eq-dmic.m4 +++ /dev/null @@ -1,74 +0,0 @@ -# -# Topology for Apollo Lake with direct attach digital microphones array -# - -# Include topology builder -include(`utils.m4') -include(`dai.m4') -include(`pipeline.m4') - -# Include TLV library -include(`common/tlv.m4') - -# Include Token library -include(`sof/tokens.m4') - -# Include Apollolake DSP configuration -include(`platform/intel/bxt.m4') -include(`platform/intel/dmic.m4') - -# -# Define the pipelines -# -# PCM6 <---- EQ IIR <----- DMIC6 (DMIC01) -# - -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) - -# Passthrough capture pipeline 13 on PCM 6 using max 4 channels. -# 1000us deadline on core 0 with priority 0 -PIPELINE_PCM_ADD(sof/pipe-eq-capture.m4, - 1, 6, 4, s32le, - 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 deadline, priority, core, time_domain) - - -# capture DAI is DMIC 0 using 2 periods -# Buffers use s32le format, 1000us deadline on core 0 with priority 0 -DAI_ADD(sof/pipe-dai-capture.m4, - 1, DMIC, 0, NoCodec-6, - PIPELINE_SINK_1, 2, s32le, - 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) - -dnl PCM_DUPLEX_ADD(name, pcm_id, playback, capture) - -dnl PCM_CAPTURE_ADD(name, pipeline, capture) -PCM_CAPTURE_ADD(DMIC, 6, PIPELINE_PCM_1) - -# -# BE configurations - overrides config in ACPI if present -# - -dnl DAI_CONFIG(type, dai_index, link_id, name, ssp_config/dmic_config) - -DAI_CONFIG(DMIC, 0, 6, NoCodec-6, - dnl DMIC_CONFIG(driver_version, clk_min, clk_mac, duty_min, duty_max, - dnl sample_rate, fifo word length, unmute time - dnl type, dai_index, pdm controller config) - DMIC_CONFIG(1, 500000, 4800000, 40, 60, 48000, - DMIC_WORD_LENGTH(s32le), 400, DMIC, 0, - PDM_CONFIG(DMIC, 0, FOUR_CH_PDM0_PDM1))) - diff --git a/tools/topology/sof-apl-eq-pcm512x.m4 b/tools/topology/sof-apl-eq-pcm512x.m4 deleted file mode 100644 index 6ed1a52a0c1d..000000000000 --- a/tools/topology/sof-apl-eq-pcm512x.m4 +++ /dev/null @@ -1,67 +0,0 @@ -# -# Topology for generic Apollolake UP^2 with pcm512x codec with equalizer components. -# - -# Include topology builder -include(`utils.m4') -include(`dai.m4') -include(`pipeline.m4') -include(`ssp.m4') - -# Include TLV library -include(`common/tlv.m4') - -# Include Token library -include(`sof/tokens.m4') - -# Include Apollolake DSP configuration -include(`platform/intel/bxt.m4') - -# -# Define the pipelines -# -# PCM0 ----> EQ IIR ----> EQ FIR ----> volume ----> SSP5 (pcm512x) -# - -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) - -# Low Latency playback pipeline 1 on PCM 0 using max 2 channels of s32le. -# 1000us deadline on core 0 with priority 0 -PIPELINE_PCM_ADD(sof/pipe-eq-volume-playback.m4, - 1, 0, 2, s32le, - 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 deadline, priority, core, time_domain) - -# playback DAI is SSP5 using 2 periods -# Buffers use s24le format, 1000us deadline on core 0 with priority 0 -DAI_ADD(sof/pipe-dai-playback.m4, - 1, SSP, 5, SSP5-Codec, - PIPELINE_SOURCE_1, 2, s24le, - 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) - -# PCM Low Latency, id 0 -PCM_PLAYBACK_ADD(Port5, 0, PIPELINE_PCM_1) - -# -# BE configurations - overrides config in ACPI if present -# - -DAI_CONFIG(SSP, 5, 0, SSP5-Codec, - SSP_CONFIG(I2S, SSP_CLOCK(mclk, 24576000, codec_mclk_in), - SSP_CLOCK(bclk, 3072000, codec_slave), - SSP_CLOCK(fsync, 48000, codec_slave), - SSP_TDM(2, 32, 3, 3), - SSP_CONFIG_DATA(SSP, 5, 24))) diff --git a/tools/topology/sof-apl-pcm512x-nohdmi.m4 b/tools/topology/sof-apl-pcm512x-nohdmi.m4 index 42b93845d550..d3c728175053 100644 --- a/tools/topology/sof-apl-pcm512x-nohdmi.m4 +++ b/tools/topology/sof-apl-pcm512x-nohdmi.m4 @@ -22,8 +22,17 @@ DEBUG_START # # Define the pipelines # -# PCM0 ----> volume -----> SSP5 (pcm512x) +# PPROC is for playback pipeline processing, i.e volume, eq-volume, eq-iir, eq-fir etc +# In this file, volume and eq-volume are used. If anything else is used, please update +# pipeline comments below for tracking purpose. # +ifelse(PPROC, `volume', `# PCM0 ----> volume -----> SSP5 (pcm512x)', + `ifelse(PPROC, `eq-volume', + `# PCM0 ----> EQ IIR ----> EQ FIR ----> volume ----> SSP5 (pcm512x)', `')') +# +# The pipeline naming notation is pipe-PROCESSING-DIRECTION.m4 +define(PIPE_PROC_PLAYBACK, `sof/pipe-`PPROC'-playback.m4') + dnl PIPELINE_PCM_ADD(pipeline, dnl pipe id, pcm, max channels, format, @@ -33,7 +42,7 @@ dnl time_domain, sched_comp) # Low Latency playback pipeline 1 on PCM 0 using max 2 channels of s32le. # Set 1000us deadline on core 0 with priority 0 -PIPELINE_PCM_ADD(sof/pipe-volume-playback.m4, +PIPELINE_PCM_ADD(PIPE_PROC_PLAYBACK, 1, 0, 2, s32le, 1000, 0, 0, 48000, 48000, 48000)