From b3b937eb3d5a74aed4d0f048e4a95f2d264b4a02 Mon Sep 17 00:00:00 2001 From: Seppo Ingalsuo Date: Tue, 8 Feb 2022 16:15:12 +0200 Subject: [PATCH] Tools: Topology: Make PGA token objects unique This patch avoids the issue that topology .conf file after m4 processing can contain multiple same name objects playback_pga_conf for volume component tokens with possibly different settings. Alsatplg does not error from such input and it's not defined which impacs topology binary. The new naming is pga_conf_X and and_pga_tokens_X where X is the pipeline number. Signed-off-by: Seppo Ingalsuo --- .../topology1/sof/pipe-host-volume-playback.m4 | 11 ++++++++--- .../topology1/sof/pipe-low-latency-playback.m4 | 14 +++++++++----- ...pipe-mixer-eq-iir-eq-fir-volume-dai-playback.m4 | 11 ++++++++--- .../sof/pipe-mixer-volume-dai-playback.m4 | 11 ++++++++--- tools/topology/topology1/sof/pipe-pcm-media.m4 | 12 +++++++++--- tools/topology/topology1/sof/pipe-tone.m4 | 12 +++++++++--- .../topology1/sof/pipe-volume-capture-16khz.m4 | 12 +++++++++--- 7 files changed, 60 insertions(+), 23 deletions(-) diff --git a/tools/topology/topology1/sof/pipe-host-volume-playback.m4 b/tools/topology/topology1/sof/pipe-host-volume-playback.m4 index 087022a16..3e39af275 100644 --- a/tools/topology/topology1/sof/pipe-host-volume-playback.m4 +++ b/tools/topology/topology1/sof/pipe-host-volume-playback.m4 @@ -29,11 +29,14 @@ C_CONTROLMIXER(Playback Volume, PIPELINE_ID, # Volume configuration # -W_VENDORTUPLES(playback_pga_tokens, sof_volume_tokens, +define(DEF_PGA_TOKENS, concat(`pga_tokens_', PIPELINE_ID)) +define(DEF_PGA_CONF, concat(`pga_conf_', PIPELINE_ID)) + +W_VENDORTUPLES(DEF_PGA_TOKENS, sof_volume_tokens, LIST(` ', `SOF_TKN_VOLUME_RAMP_STEP_TYPE "0"' ` ', `SOF_TKN_VOLUME_RAMP_STEP_MS "250"')) -W_DATA(playback_pga_conf, playback_pga_tokens) +W_DATA(DEF_PGA_CONF, DEF_PGA_TOKENS) # # Components and Buffers @@ -44,7 +47,7 @@ W_DATA(playback_pga_conf, playback_pga_tokens) W_PCM_PLAYBACK(PCM_ID, Playback, 2, 0, SCHEDULE_CORE) # "Volume" has 2 source and x sink periods -W_PGA(0, PIPELINE_FORMAT, DAI_PERIODS, 2, playback_pga_conf, SCHEDULE_CORE, +W_PGA(0, PIPELINE_FORMAT, DAI_PERIODS, 2, DEF_PGA_CONF, SCHEDULE_CORE, LIST(` ', "PIPELINE_ID Playback Volume")) # Playback Buffers @@ -84,3 +87,5 @@ W_PIPELINE(SCHED_COMP, SCHEDULE_PERIOD, SCHEDULE_PRIORITY, SCHEDULE_CORE, SCHEDU # PCM_CAPABILITIES(Playback PCM_ID, CAPABILITY_FORMAT_NAME(PIPELINE_FORMAT), PCM_MIN_RATE, PCM_MAX_RATE, 2, PIPELINE_CHANNELS, 2, 16, 192, 16384, 65536, 65536) +undefine(`DEF_PGA_TOKENS') +undefine(`DEF_PGA_CONF') diff --git a/tools/topology/topology1/sof/pipe-low-latency-playback.m4 b/tools/topology/topology1/sof/pipe-low-latency-playback.m4 index 92263f94c..82ffda375 100644 --- a/tools/topology/topology1/sof/pipe-low-latency-playback.m4 +++ b/tools/topology/topology1/sof/pipe-low-latency-playback.m4 @@ -52,11 +52,14 @@ C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID, # Volume configuration # -W_VENDORTUPLES(playback_pga_tokens, sof_volume_tokens, +define(DEF_PGA_TOKENS, concat(`pga_tokens_', PIPELINE_ID)) +define(DEF_PGA_CONF, concat(`pga_conf_', PIPELINE_ID)) + +W_VENDORTUPLES(DEF_PGA_TOKENS, sof_volume_tokens, LIST(` ', `SOF_TKN_VOLUME_RAMP_STEP_TYPE "0"' ` ', `SOF_TKN_VOLUME_RAMP_STEP_MS "250"')) -W_DATA(playback_pga_conf, playback_pga_tokens) +W_DATA(DEF_PGA_CONF, DEF_PGA_TOKENS) # # Components and Buffers @@ -67,11 +70,11 @@ W_DATA(playback_pga_conf, playback_pga_tokens) W_PCM_PLAYBACK(PCM_ID, Low Latency Playback, 2, 0, SCHEDULE_CORE) # "Playback Volume" has 2 sink periods and 2 source periods for host ping-pong -W_PGA(0, PIPELINE_FORMAT, 2, 2, playback_pga_conf, SCHEDULE_CORE, +W_PGA(0, PIPELINE_FORMAT, 2, 2, DEF_PGA_CONF, SCHEDULE_CORE, LIST(` ', "PIPELINE_ID PCM PCM_ID Playback Volume")) # "Master Playback Volume" has 2 source and x sink periods for DAI ping-pong -W_PGA(1, PIPELINE_FORMAT, DAI_PERIODS, 2, playback_pga_conf, SCHEDULE_CORE, +W_PGA(1, PIPELINE_FORMAT, DAI_PERIODS, 2, DEF_PGA_CONF, SCHEDULE_CORE, LIST(` ', "PIPELINE_ID Master Playback Volume")) # Mixer 0 has 2 sink and source periods. @@ -124,7 +127,8 @@ indir(`define', concat(`PIPELINE_PCM_', PIPELINE_ID), Low Latency Playback PCM_I # PCM Configuration # - # PCM capabilities supported by FW PCM_CAPABILITIES(Low Latency Playback PCM_ID, CAPABILITY_FORMAT_NAME(PIPELINE_FORMAT), PCM_MIN_RATE, PCM_MAX_RATE, 2, PIPELINE_CHANNELS, 2, 16, 192, 16384, 65536, 65536) +undefine(`DEF_PGA_TOKENS') +undefine(`DEF_PGA_CONF') diff --git a/tools/topology/topology1/sof/pipe-mixer-eq-iir-eq-fir-volume-dai-playback.m4 b/tools/topology/topology1/sof/pipe-mixer-eq-iir-eq-fir-volume-dai-playback.m4 index 3928a46d4..5d0215547 100644 --- a/tools/topology/topology1/sof/pipe-mixer-eq-iir-eq-fir-volume-dai-playback.m4 +++ b/tools/topology/topology1/sof/pipe-mixer-eq-iir-eq-fir-volume-dai-playback.m4 @@ -38,11 +38,14 @@ C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID, # Volume configuration # -W_VENDORTUPLES(playback_pga_tokens, sof_volume_tokens, +define(DEF_PGA_TOKENS, concat(`pga_tokens_', PIPELINE_ID)) +define(DEF_PGA_CONF, concat(`pga_conf_', PIPELINE_ID)) + +W_VENDORTUPLES(DEF_PGA_TOKENS, sof_volume_tokens, LIST(` ', `SOF_TKN_VOLUME_RAMP_STEP_TYPE "0"' ` ', `SOF_TKN_VOLUME_RAMP_STEP_MS "250"')) -W_DATA(playback_pga_conf, playback_pga_tokens) +W_DATA(DEF_PGA_CONF, DEF_PGA_TOKENS) # Mixer 0 has 2 sink and source periods. W_MIXER(0, PIPELINE_FORMAT, 2, 2, SCHEDULE_CORE) @@ -96,7 +99,7 @@ W_EQ_FIR(0, PIPELINE_FORMAT, 2, 2, SCHEDULE_CORE, LIST(` ', "DEF_EQFIR_COEF")) # "Master Playback Volume" has 2 source and x sink periods for DAI ping-pong -W_PGA(0, PIPELINE_FORMAT, DAI_PERIODS, 2, playback_pga_conf, SCHEDULE_CORE, +W_PGA(0, PIPELINE_FORMAT, DAI_PERIODS, 2, DEF_PGA_CONF, SCHEDULE_CORE, LIST(` ', "PIPELINE_ID Master Playback Volume")) # @@ -143,3 +146,5 @@ indir(`define', concat(`PIPELINE_MIXER_', PIPELINE_ID), N_MIXER(0)) undefine(`DEF_EQIIR_COEF') undefine(`DEF_EQIIR_PRIV') +undefine(`DEF_PGA_TOKENS') +undefine(`DEF_PGA_CONF') diff --git a/tools/topology/topology1/sof/pipe-mixer-volume-dai-playback.m4 b/tools/topology/topology1/sof/pipe-mixer-volume-dai-playback.m4 index 5c1c81194..aa3cd1e7b 100644 --- a/tools/topology/topology1/sof/pipe-mixer-volume-dai-playback.m4 +++ b/tools/topology/topology1/sof/pipe-mixer-volume-dai-playback.m4 @@ -36,17 +36,20 @@ C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID, # Volume configuration # -W_VENDORTUPLES(playback_pga_tokens, sof_volume_tokens, +define(DEF_PGA_TOKENS, concat(`pga_tokens_', PIPELINE_ID)) +define(DEF_PGA_CONF, concat(`pga_conf_', PIPELINE_ID)) + +W_VENDORTUPLES(DEF_PGA_TOKENS, sof_volume_tokens, LIST(` ', `SOF_TKN_VOLUME_RAMP_STEP_TYPE "0"' ` ', `SOF_TKN_VOLUME_RAMP_STEP_MS "250"')) -W_DATA(playback_pga_conf, playback_pga_tokens) +W_DATA(DEF_PGA_CONF, DEF_PGA_TOKENS) # Mixer 0 has 2 sink and source periods. W_MIXER(0, PIPELINE_FORMAT, 2, 2, SCHEDULE_CORE) # "Master Playback Volume" has 2 source and x sink periods for DAI ping-pong -W_PGA(0, PIPELINE_FORMAT, DAI_PERIODS, 2, playback_pga_conf, SCHEDULE_CORE, +W_PGA(0, PIPELINE_FORMAT, DAI_PERIODS, 2, DEF_PGA_CONF, SCHEDULE_CORE, LIST(` ', "PIPELINE_ID Master Playback Volume")) # @@ -81,3 +84,5 @@ P_GRAPH(DAI_NAME, PIPELINE_ID, indir(`define', concat(`PIPELINE_PLAYBACK_SCHED_COMP_', PIPELINE_ID), N_DAI_OUT) indir(`define', concat(`PIPELINE_MIXER_', PIPELINE_ID), N_MIXER(0)) +undefine(`DEF_PGA_TOKENS') +undefine(`DEF_PGA_CONF') diff --git a/tools/topology/topology1/sof/pipe-pcm-media.m4 b/tools/topology/topology1/sof/pipe-pcm-media.m4 index 2af2937b7..3c0c694df 100644 --- a/tools/topology/topology1/sof/pipe-pcm-media.m4 +++ b/tools/topology/topology1/sof/pipe-pcm-media.m4 @@ -40,11 +40,14 @@ W_DATA(media_src_conf, media_src_tokens) # Volume Configuration # -W_VENDORTUPLES(playback_pga_tokens, sof_volume_tokens, +define(DEF_PGA_TOKENS, concat(`pga_tokens_', PIPELINE_ID)) +define(DEF_PGA_CONF, concat(`pga_conf_', PIPELINE_ID)) + +W_VENDORTUPLES(DEF_PGA_TOKENS, sof_volume_tokens, LIST(` ', `SOF_TKN_VOLUME_RAMP_STEP_TYPE "0"' ` ', `SOF_TKN_VOLUME_RAMP_STEP_MS "250"')) -W_DATA(playback_pga_conf, playback_pga_tokens) +W_DATA(DEF_PGA_CONF, DEF_PGA_TOKENS) # # Components and Buffers @@ -55,7 +58,7 @@ W_DATA(playback_pga_conf, playback_pga_tokens) W_PCM_PLAYBACK(PCM_ID, Media Playback, 2, 0, SCHEDULE_CORE) # "Playback Volume" has 3 sink period and 2 source periods for host ping-pong -W_PGA(0, PIPELINE_FORMAT, 3, 2, playback_pga_conf, SCHEDULE_CORE, +W_PGA(0, PIPELINE_FORMAT, 3, 2, DEF_PGA_CONF, SCHEDULE_CORE, LIST(` ', "PIPELINE_ID PCM PCM_ID Playback Volume")) # "SRC 0" has 3 sink and source periods. @@ -127,3 +130,6 @@ SectionPCM.STR(Media Playback PCM_ID) { capabilities STR(Media Playback PCM_ID) } } + +undefine(`DEF_PGA_TOKENS') +undefine(`DEF_PGA_CONF') diff --git a/tools/topology/topology1/sof/pipe-tone.m4 b/tools/topology/topology1/sof/pipe-tone.m4 index 270966840..030923fa6 100644 --- a/tools/topology/topology1/sof/pipe-tone.m4 +++ b/tools/topology/topology1/sof/pipe-tone.m4 @@ -41,11 +41,14 @@ C_CONTROLMIXER(Tone Switch, PIPELINE_ID, # Volume configuration # -W_VENDORTUPLES(playback_pga_tokens, sof_volume_tokens, +define(DEF_PGA_TOKENS, concat(`pga_tokens_', PIPELINE_ID)) +define(DEF_PGA_CONF, concat(`pga_conf_', PIPELINE_ID)) + +W_VENDORTUPLES(DEF_PGA_TOKENS, sof_volume_tokens, LIST(` ', `SOF_TKN_VOLUME_RAMP_STEP_TYPE "0"' ` ', `SOF_TKN_VOLUME_RAMP_STEP_MS "250"')) -W_DATA(playback_pga_conf, playback_pga_tokens) +W_DATA(DEF_PGA_CONF, DEF_PGA_TOKENS) # # Components and Buffers @@ -56,7 +59,7 @@ W_TONE(0, PIPELINE_FORMAT, 2, 0, SCHEDULE_CORE, LIST(` ', "PIPELINE_ID Tone Switch")) # "Tone Volume" has 2 sink period and 2 source periods -W_PGA(0, PIPELINE_FORMAT, 2, 2, playback_pga_conf, SCHEDULE_CORE, +W_PGA(0, PIPELINE_FORMAT, 2, 2, DEF_PGA_CONF, SCHEDULE_CORE, LIST(` ', "PIPELINE_ID Tone Volume")) # Low Latency Buffers @@ -90,3 +93,6 @@ indir(`define', concat(`PIPELINE_SOURCE_', PIPELINE_ID), N_BUFFER(1)) # W_PIPELINE(N_TONE(0), SCHEDULE_PERIOD, SCHEDULE_PRIORITY, SCHEDULE_CORE, SCHEDULE_TIME_DOMAIN, pipe_tone_schedule_plat) + +undefine(`DEF_PGA_TOKENS') +undefine(`DEF_PGA_CONF') diff --git a/tools/topology/topology1/sof/pipe-volume-capture-16khz.m4 b/tools/topology/topology1/sof/pipe-volume-capture-16khz.m4 index 283a08540..ce28e9c06 100644 --- a/tools/topology/topology1/sof/pipe-volume-capture-16khz.m4 +++ b/tools/topology/topology1/sof/pipe-volume-capture-16khz.m4 @@ -32,11 +32,14 @@ C_CONTROLMIXER(Master Capture Volume, PIPELINE_ID, # Volume configuration # -W_VENDORTUPLES(playback_pga_tokens, sof_volume_tokens, +define(DEF_PGA_TOKENS, concat(`pga_tokens_', PIPELINE_ID)) +define(DEF_PGA_CONF, concat(`pga_conf_', PIPELINE_ID)) + +W_VENDORTUPLES(DEF_PGA_TOKENS, sof_volume_tokens, LIST(` ', `SOF_TKN_VOLUME_RAMP_STEP_TYPE "0"' ` ', `SOF_TKN_VOLUME_RAMP_STEP_MS "250"')) -W_DATA(playback_pga_conf, playback_pga_tokens) +W_DATA(DEF_PGA_CONF, DEF_PGA_TOKENS) # # Components and Buffers @@ -47,7 +50,7 @@ W_DATA(playback_pga_conf, playback_pga_tokens) W_PCM_CAPTURE(PCM_ID, Passthrough Capture, 0, 2, SCHEDULE_CORE) # "Volume" has x source and 2 sink periods -W_PGA(0, PIPELINE_FORMAT, 2, DAI_PERIODS, playback_pga_conf, SCHEDULE_CORE, +W_PGA(0, PIPELINE_FORMAT, 2, DAI_PERIODS, DEF_PGA_CONF, SCHEDULE_CORE, LIST(` ', "PIPELINE_ID Master Capture Volume")) # Capture Buffers @@ -82,3 +85,6 @@ indir(`define', concat(`PIPELINE_PCM_', PIPELINE_ID), Passthrough Capture PCM_ID PCM_CAPABILITIES(Passthrough Capture PCM_ID, CAPABILITY_FORMAT_NAME(PIPELINE_FORMAT), 16000, 16000, PIPELINE_CHANNELS, PIPELINE_CHANNELS, 2, 16, 192, 16384, 65536, 65536) + +undefine(`DEF_PGA_TOKENS') +undefine(`DEF_PGA_CONF')