[Sound-open-firmware] [PATCH] topology: pcm: Fix PCM ID for topologies > 1 PCM
PCM number was not being preserved and was always zero. This would overwrite previous PCMs and cause the FW to return invalid PCM error messages.
Signed-off-by: Liam Girdwood liam.r.girdwood@linux.intel.com --- topology/m4/pcm.m4 | 36 +++++++++++++++---------------- topology/sof/pipe-low-latency-capture.m4 | 6 +++--- topology/sof/pipe-low-latency-playback.m4 | 6 +++--- topology/sof/pipe-passthrough-capture.m4 | 6 +++--- topology/sof/pipe-passthrough-playback.m4 | 6 +++--- topology/sof/pipe-pcm-media.m4 | 6 +++--- topology/sof/pipe-src-capture.m4 | 6 +++--- topology/sof/pipe-src-playback.m4 | 6 +++--- topology/sof/pipe-volume-capture.m4 | 6 +++--- topology/sof/pipe-volume-playback.m4 | 6 +++--- 10 files changed, 45 insertions(+), 45 deletions(-)
diff --git a/topology/m4/pcm.m4 b/topology/m4/pcm.m4 index 596f2fe..f77cb01 100644 --- a/topology/m4/pcm.m4 +++ b/topology/m4/pcm.m4 @@ -3,18 +3,18 @@ divert(-1) dnl Define the macro for PCM playback/capture/capabilities
dnl PCM name) -define(`N_PCMP', `PCM'PCM_ID`P') -define(`N_PCMC', `PCM'PCM_ID`C') +define(`N_PCMP', `PCM'$1`P') +define(`N_PCMC', `PCM'$1`C')
-dnl W_PCM_PLAYBACK(stream, dmac, dmac_chan, periods_sink, periods_source, preload) +dnl W_PCM_PLAYBACK(pcm, stream, dmac, dmac_chan, periods_sink, periods_source, preload) dnl PCM platform configuration define(`W_PCM_PLAYBACK', `SectionVendorTuples."'N_PCMP($1)`_tuples_w_comp" {' ` tokens "sof_comp_tokens"' ` tuples."word" {' -` SOF_TKN_COMP_PERIOD_SINK_COUNT' STR($4) -` SOF_TKN_COMP_PERIOD_SOURCE_COUNT' STR($5) -` SOF_TKN_COMP_PRELOAD_COUNT' STR($6) +` SOF_TKN_COMP_PERIOD_SINK_COUNT' STR($5) +` SOF_TKN_COMP_PERIOD_SOURCE_COUNT' STR($6) +` SOF_TKN_COMP_PRELOAD_COUNT' STR($7) ` }' `}' `SectionData."'N_PCMP($1)`_data_w_comp" {' @@ -23,18 +23,18 @@ define(`W_PCM_PLAYBACK', `SectionVendorTuples."'N_PCMP($1)`_tuples" {' ` tokens "sof_pcm_tokens"' ` tuples."word" {' -` SOF_TKN_PCM_DMAC' STR($2) -` SOF_TKN_PCM_DMAC_CHAN' STR($3) +` SOF_TKN_PCM_DMAC' STR($3) +` SOF_TKN_PCM_DMAC_CHAN' STR($4) ` }' `}' `SectionData."'N_PCMP($1)`_data" {' ` tuples "'N_PCMP($1)`_tuples"' `}' -`SectionWidget."'N_PCMP`" {' +`SectionWidget."'N_PCMP($1)`" {' ` index "'PIPELINE_ID`"' ` type "aif_in"' ` no_pm "true"' -` stream_name "'$1`"' +` stream_name "'$2`"' ` data [' ` "'N_PCMP($1)`_data"' ` "'N_PCMP($1)`_data_w_comp"' @@ -42,14 +42,14 @@ define(`W_PCM_PLAYBACK', `}')
-dnl W_PCM_CAPTURE(stream, dmac, dmac_chan, periods_sink, periods_source, preload) +dnl W_PCM_CAPTURE(pcm, stream, dmac, dmac_chan, periods_sink, periods_source, preload) define(`W_PCM_CAPTURE', `SectionVendorTuples."'N_PCMC($1)`_tuples_w_comp" {' ` tokens "sof_comp_tokens"' ` tuples."word" {' -` SOF_TKN_COMP_PERIOD_SINK_COUNT' STR($4) -` SOF_TKN_COMP_PERIOD_SOURCE_COUNT' STR($5) -` SOF_TKN_COMP_PRELOAD_COUNT' STR($6) +` SOF_TKN_COMP_PERIOD_SINK_COUNT' STR($5) +` SOF_TKN_COMP_PERIOD_SOURCE_COUNT' STR($6) +` SOF_TKN_COMP_PRELOAD_COUNT' STR($7) ` }' `}' `SectionData."'N_PCMC($1)`_data_w_comp" {' @@ -58,18 +58,18 @@ define(`W_PCM_CAPTURE', `SectionVendorTuples."'N_PCMC($1)`_tuples" {' ` tokens "sof_pcm_tokens"' ` tuples."word" {' -` SOF_TKN_PCM_DMAC' STR($2) -` SOF_TKN_PCM_DMAC_CHAN' STR($3) +` SOF_TKN_PCM_DMAC' STR($3) +` SOF_TKN_PCM_DMAC_CHAN' STR($4) ` }' `}' `SectionData."'N_PCMC($1)`_data" {' ` tuples "'N_PCMC($1)`_tuples"' `}' -`SectionWidget."'N_PCMC`" {' +`SectionWidget."'N_PCMC($1)`" {' ` index "'PIPELINE_ID`"' ` type "aif_out"' ` no_pm "true"' -` stream_name "'$1`"' +` stream_name "'$2`"' ` data [' ` "'N_PCMC($1)`_data"' ` "'N_PCMC($1)`_data_w_comp"' diff --git a/topology/sof/pipe-low-latency-capture.m4 b/topology/sof/pipe-low-latency-capture.m4 index 5619999..96fa3cc 100644 --- a/topology/sof/pipe-low-latency-capture.m4 +++ b/topology/sof/pipe-low-latency-capture.m4 @@ -29,7 +29,7 @@ C_CONTROLMIXER(PCM PCM_ID Capture Volume, PIPELINE_ID,
# Host "Low Latency Capture" PCM uses pipeline DMAC and channel # with 0 sink and 2 source periods -W_PCM_CAPTURE(Low Latency Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 0, 2, 0) +W_PCM_CAPTURE(PCM_ID, Low Latency Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 0, 2, 0)
# "Capture Volume" has 2 sink and source periods for host and DAI ping-pong W_PGA(0, PIPELINE_FORMAT, 2, 2, 0, LIST(` ', "PCM PCM_ID Capture Volume")) @@ -49,8 +49,8 @@ W_BUFFER(1, COMP_BUFFER_SIZE(2,
P_GRAPH(pipe-ll-capture-PIPELINE_ID, PIPELINE_ID, LIST(` ', - `dapm(Low Latency Capture PCM_ID, N_PCMC)', - `dapm(N_PCMC, N_BUFFER(1))', + `dapm(Low Latency Capture PCM_ID, N_PCMC(PCM_ID))', + `dapm(N_PCMC(PCM_ID), N_BUFFER(1))', `dapm(N_BUFFER(1), N_PGA(0))', `dapm(N_PGA(0), N_BUFFER(0))'))
diff --git a/topology/sof/pipe-low-latency-playback.m4 b/topology/sof/pipe-low-latency-playback.m4 index 4a4fca9..b7f2d11 100644 --- a/topology/sof/pipe-low-latency-playback.m4 +++ b/topology/sof/pipe-low-latency-playback.m4 @@ -54,7 +54,7 @@ C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID,
# Host "Low latency Playback" PCM uses pipeline DMAC and channel # with 2 sink and 0 source periods -W_PCM_PLAYBACK(Low Latency Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 2, 0, 2) +W_PCM_PLAYBACK(PCM_ID, Low Latency Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 2, 0, 2)
# "Playback Volume" has 1 sink period and 2 source periods for host ping-pong W_PGA(0, PIPELINE_FORMAT, 1, 2, 1, LIST(` ', "PCM PCM_ID Playback Volume")) @@ -93,8 +93,8 @@ W_BUFFER(3, COMP_BUFFER_SIZE(2,
P_GRAPH(pipe-ll-playback-PIPELINE_ID, PIPELINE_ID, LIST(` ', - `dapm(N_PCMP, Low Latency Playback PCM_ID)', - `dapm(N_BUFFER(0), N_PCMP)', + `dapm(N_PCMP(PCM_ID), Low Latency Playback PCM_ID)', + `dapm(N_BUFFER(0), N_PCMP(PCM_ID))', `dapm(N_PGA(0), N_BUFFER(0))', `dapm(N_BUFFER(1), N_PGA(0))', `dapm(N_MIXER(0), N_BUFFER(1))', diff --git a/topology/sof/pipe-passthrough-capture.m4 b/topology/sof/pipe-passthrough-capture.m4 index 07961b3..ff7c842 100644 --- a/topology/sof/pipe-passthrough-capture.m4 +++ b/topology/sof/pipe-passthrough-capture.m4 @@ -17,7 +17,7 @@ include(`pipeline.m4')
# Host "Passthrough Capture" PCM uses pipeline DMAC and channel # with 0 sink and 2 source periods -W_PCM_CAPTURE(Passthrough Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 0, 2, 2) +W_PCM_CAPTURE(PCM_ID, Passthrough Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 0, 2, 2)
# Capture Buffers W_BUFFER(0, COMP_BUFFER_SIZE(2, @@ -41,8 +41,8 @@ W_PIPELINE(N_DAI_IN, SCHEDULE_DEADLINE, SCHEDULE_PRIORITY, SCHEDULE_FRAMES, SCHE
P_GRAPH(pipe-pass-capture-PIPELINE_ID, PIPELINE_ID, LIST(` ', - `dapm(Passthrough Capture PCM_ID, N_PCMC)', - `dapm(N_PCMC, N_BUFFER(0))')) + `dapm(Passthrough Capture PCM_ID, N_PCMC(PCM_ID))', + `dapm(N_PCMC(PCM_ID), N_BUFFER(0))'))
# # Pipeline Source and Sinks diff --git a/topology/sof/pipe-passthrough-playback.m4 b/topology/sof/pipe-passthrough-playback.m4 index 715fcee..84aa126 100644 --- a/topology/sof/pipe-passthrough-playback.m4 +++ b/topology/sof/pipe-passthrough-playback.m4 @@ -17,7 +17,7 @@ include(`pipeline.m4')
# Host "Passthrough Playback" PCM uses pipeline DMAC and channel # with 2 sink and 0 source periods -W_PCM_PLAYBACK(Passthrough Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 2, 0, 2) +W_PCM_PLAYBACK(PCM_ID, Passthrough Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 2, 0, 2)
# Playback Buffers W_BUFFER(0, COMP_BUFFER_SIZE(2, @@ -41,8 +41,8 @@ W_PIPELINE(N_DAI_OUT, SCHEDULE_DEADLINE, SCHEDULE_PRIORITY, SCHEDULE_FRAMES, SCH
P_GRAPH(pipe-pass-playback-PIPELINE_ID, PIPELINE_ID, LIST(` ', - `dapm(N_PCMP, Passthrough Playback PCM_ID)', - `dapm(N_BUFFER(0), N_PCMP)')) + `dapm(N_PCMP(PCM_ID), Passthrough Playback PCM_ID)', + `dapm(N_BUFFER(0), N_PCMP(PCM_ID))'))
# # Pipeline Source and Sinks diff --git a/topology/sof/pipe-pcm-media.m4 b/topology/sof/pipe-pcm-media.m4 index f2053b7..1ca829f 100644 --- a/topology/sof/pipe-pcm-media.m4 +++ b/topology/sof/pipe-pcm-media.m4 @@ -41,7 +41,7 @@ W_DATA(media_src_conf, media_src_tokens)
# Host "Low latency Playback" PCM uses pipeline DMAC and channel # with 2 sink and 0 source periods -W_PCM_PLAYBACK(Media Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 2, 0, 2) +W_PCM_PLAYBACK(PCM_ID, Media Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 2, 0, 2)
# "Playback Volume" has 2 sink period and 2 source periods for host ping-pong W_PGA(0, PIPELINE_FORMAT, 2, 2, 2, LIST(` ', "PCM PCM_ID Playback Volume")) @@ -70,8 +70,8 @@ W_BUFFER(2, COMP_BUFFER_SIZE(3,
P_GRAPH(pipe-media-PIPELINE_ID, PIPELINE_ID, LIST(` ', - `dapm(N_PCMP, Media Playback PCM_ID)', - `dapm(N_BUFFER(0), N_PCMP)', + `dapm(N_PCMP(PCM_ID), Media Playback PCM_ID)', + `dapm(N_BUFFER(0), N_PCMP(PCM_ID))', `dapm(N_PGA(0), N_BUFFER(0))', `dapm(N_BUFFER(1), N_PGA(0))', `dapm(N_SRC(0), N_BUFFER(1))' diff --git a/topology/sof/pipe-src-capture.m4 b/topology/sof/pipe-src-capture.m4 index 1b1a58d..54eeea3 100644 --- a/topology/sof/pipe-src-capture.m4 +++ b/topology/sof/pipe-src-capture.m4 @@ -18,7 +18,7 @@ include(`pipeline.m4')
# Host "Passthrough Capture" PCM uses pipeline DMAC and channel # with 4 sink and 0 source periods -W_PCM_CAPTURE(Passthrough Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 4, 0, 2) +W_PCM_CAPTURE(PCM_ID, Passthrough Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 4, 0, 2)
# # SRC Configuration @@ -58,8 +58,8 @@ W_PIPELINE(N_DAI_IN, SCHEDULE_DEADLINE, SCHEDULE_PRIORITY, SCHEDULE_FRAMES,
P_GRAPH(pipe-pass-src-capture-PIPELINE_ID, PIPELINE_ID, LIST(` ', - `dapm(Passthrough Capture PCM_ID, N_PCMC)', - `dapm(N_PCMC, N_BUFFER(0))', + `dapm(Passthrough Capture PCM_ID, N_PCMC(PCM_ID))', + `dapm(N_PCMC(PCM_ID), N_BUFFER(0))', `dapm(N_BUFFER(0), N_SRC(0))', `dapm(N_SRC(0), N_BUFFER(1))'))
diff --git a/topology/sof/pipe-src-playback.m4 b/topology/sof/pipe-src-playback.m4 index 9dfdcd8..51237ac 100644 --- a/topology/sof/pipe-src-playback.m4 +++ b/topology/sof/pipe-src-playback.m4 @@ -18,7 +18,7 @@ include(`pipeline.m4')
# Host "Passthrough Playback" PCM uses pipeline DMAC and channel # with 4 sink and 0 source periods -W_PCM_PLAYBACK(Passthrough Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 4, 0, 2) +W_PCM_PLAYBACK(PCM_ID, Passthrough Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 4, 0, 2)
# # SRC Configuration @@ -58,8 +58,8 @@ W_PIPELINE(N_DAI_OUT, SCHEDULE_DEADLINE, SCHEDULE_PRIORITY, SCHEDULE_FRAMES,
P_GRAPH(pipe-pass-src-playback-PIPELINE_ID, PIPELINE_ID, LIST(` ', - `dapm(N_PCMP, Passthrough Playback PCM_ID)', - `dapm(N_BUFFER(0), N_PCMP)', + `dapm(N_PCMP(PCM_ID), Passthrough Playback PCM_ID)', + `dapm(N_BUFFER(0), N_PCMP(PCM_ID))', `dapm(N_SRC(0), N_BUFFER(0))', `dapm(N_BUFFER(1), N_SRC(0))'))
diff --git a/topology/sof/pipe-volume-capture.m4 b/topology/sof/pipe-volume-capture.m4 index 61b70a9..c3917ca 100644 --- a/topology/sof/pipe-volume-capture.m4 +++ b/topology/sof/pipe-volume-capture.m4 @@ -31,7 +31,7 @@ C_CONTROLMIXER(Master Capture Volume, PIPELINE_ID,
# Host "Passthrough Capture" PCM uses pipeline DMAC and channel # with 0 sink and 2 source periods -W_PCM_CAPTURE(Passthrough Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 0, 2, 2) +W_PCM_CAPTURE(PCM_ID, Passthrough Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 0, 2, 2)
# "Volume" has 2 source and 2 sink periods W_PGA(0, PIPELINE_FORMAT, 2, 2, 2, LIST(` ', "Master Capture Volume")) @@ -63,8 +63,8 @@ W_PIPELINE(N_DAI_IN, SCHEDULE_DEADLINE, SCHEDULE_PRIORITY, SCHEDULE_FRAMES,
P_GRAPH(pipe-pass-vol-capture-PIPELINE_ID, PIPELINE_ID, LIST(` ', - `dapm(Passthrough Capture PCM_ID, N_PCMC)', - `dapm(N_PCMC, N_BUFFER(0))', + `dapm(Passthrough Capture PCM_ID, N_PCMC(PCM_ID))', + `dapm(N_PCMC(PCM_ID), N_BUFFER(0))', `dapm(N_BUFFER(0), N_PGA(0))', `dapm(N_PGA(0), N_BUFFER(1))'))
diff --git a/topology/sof/pipe-volume-playback.m4 b/topology/sof/pipe-volume-playback.m4 index 5fea0c7..194aad9 100644 --- a/topology/sof/pipe-volume-playback.m4 +++ b/topology/sof/pipe-volume-playback.m4 @@ -31,7 +31,7 @@ C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID,
# Host "Passthrough Playback" PCM uses pipeline DMAC and channel # with 2 sink and 0 source periods -W_PCM_PLAYBACK(Passthrough Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 2, 0, 2) +W_PCM_PLAYBACK(PCM_ID, Passthrough Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 2, 0, 2)
# "Volume" has 2 source and 2 sink periods W_PGA(0, PIPELINE_FORMAT, 2, 2, 2, LIST(` ', "Master Playback Volume")) @@ -63,8 +63,8 @@ W_PIPELINE(N_DAI_OUT, SCHEDULE_DEADLINE, SCHEDULE_PRIORITY, SCHEDULE_FRAMES,
P_GRAPH(pipe-pass-vol-playback-PIPELINE_ID, PIPELINE_ID, LIST(` ', - `dapm(N_PCMP, Passthrough Playback PCM_ID)', - `dapm(N_BUFFER(0), N_PCMP)', + `dapm(N_PCMP(PCM_ID), Passthrough Playback PCM_ID)', + `dapm(N_BUFFER(0), N_PCMP(PCM_ID))', `dapm(N_PGA(0), N_BUFFER(0))', `dapm(N_BUFFER(1), N_PGA(0))'))
participants (1)
-
Liam Girdwood