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>
This commit is contained in:
parent
07d025363a
commit
cc91c73aa3
|
@ -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"'
|
||||
|
|
|
@ -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))'))
|
||||
|
||||
|
|
|
@ -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))',
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))'
|
||||
|
|
|
@ -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))'))
|
||||
|
||||
|
|
|
@ -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))'))
|
||||
|
||||
|
|
|
@ -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))'))
|
||||
|
||||
|
|
|
@ -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))'))
|
||||
|
||||
|
|
Loading…
Reference in New Issue