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:
Liam Girdwood 2018-03-16 17:17:33 +00:00
parent 07d025363a
commit cc91c73aa3
10 changed files with 45 additions and 45 deletions

View File

@ -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"'

View File

@ -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))'))

View File

@ -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))',

View File

@ -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

View File

@ -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

View File

@ -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))'

View File

@ -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))'))

View File

@ -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))'))

View File

@ -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))'))

View File

@ -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))'))