Add support so that different playback and capture pipelines can share the same host PCM device.
Modify board configs to use PCM0 for playback and capture.
Signed-off-by: Liam Girdwood liam.r.girdwood@linux.intel.com --- topology/m4/local.m4 | 62 +++++++++++++++++++-------- topology/reef-apl-nocodec.m4 | 15 ++++--- topology/reef-bdw-rt286.m4 | 15 ++++--- topology/reef-bdw-rt5640.m4 | 15 ++++--- topology/reef-bxt-nocodec.m4 | 13 +++--- topology/reef-byt-nocodec.m4 | 11 +++-- topology/reef-byt-rt5640.m4 | 11 +++-- topology/reef-byt-rt5651.m4 | 11 +++-- topology/reef-cht-nocodec.m4 | 11 +++-- topology/reef-hsw-rt5640.m4 | 15 ++++--- topology/sof/pipe-low-latency-capture.m4 | 28 ++---------- topology/sof/pipe-low-latency-playback.m4 | 29 ++----------- topology/sof/pipe-passthrough-playback.m4 | 4 +- topology/sof/pipe-passthrough-src-playback.m4 | 4 +- topology/sof/pipe-passthrough-vol-playback.m4 | 4 +- topology/sof/pipe-pcm-media.m4 | 6 +-- 16 files changed, 130 insertions(+), 124 deletions(-)
diff --git a/topology/m4/local.m4 b/topology/m4/local.m4 index 50c6b5d..e521267 100644 --- a/topology/m4/local.m4 +++ b/topology/m4/local.m4 @@ -67,12 +67,13 @@ define(`W_BUFFER', `}')
dnl PCM name) -define(`N_PCM', `PCM'PCM_ID) +define(`N_PCMP', `PCM'PCM_ID`P') +define(`N_PCMC', `PCM'PCM_ID`C')
dnl W_PCM_PLAYBACK(stream, dmac, dmac_chan, periods_sink, periods_source, preload) dnl PCM platform configuration define(`W_PCM_PLAYBACK', -`SectionVendorTuples."'N_PCM($1)`_tuples_w_comp" {' +`SectionVendorTuples."'N_PCMP($1)`_tuples_w_comp" {' ` tokens "sof_comp_tokens"' ` tuples."word" {' ` SOF_TKN_COMP_PERIOD_SINK_COUNT' STR($4) @@ -80,34 +81,34 @@ define(`W_PCM_PLAYBACK', ` SOF_TKN_COMP_PRELOAD_COUNT' STR($6) ` }' `}' -`SectionData."'N_PCM($1)`_data_w_comp" {' -` tuples "'N_PCM($1)`_tuples_w_comp"' +`SectionData."'N_PCMP($1)`_data_w_comp" {' +` tuples "'N_PCMP($1)`_tuples_w_comp"' `}' -`SectionVendorTuples."'N_PCM($1)`_tuples" {' +`SectionVendorTuples."'N_PCMP($1)`_tuples" {' ` tokens "sof_pcm_tokens"' ` tuples."word" {' ` SOF_TKN_PCM_DMAC' STR($2) ` SOF_TKN_PCM_DMAC_CHAN' STR($3) ` }' `}' -`SectionData."'N_PCM($1)`_data" {' -` tuples "'N_PCM($1)`_tuples"' +`SectionData."'N_PCMP($1)`_data" {' +` tuples "'N_PCMP($1)`_tuples"' `}' -`SectionWidget."'N_PCM`" {' +`SectionWidget."'N_PCMP`" {' ` index "'PIPELINE_ID`"' ` type "aif_out"' ` no_pm "true"' ` stream_name "'$1`"' ` data [' -` "'N_PCM($1)`_data"' -` "'N_PCM($1)`_data_w_comp"' +` "'N_PCMP($1)`_data"' +` "'N_PCMP($1)`_data_w_comp"' ` ]' `}')
dnl W_PCM_PLAYBACK(stream, dmac, dmac_chan, periods_sink, periods_source, preload) define(`W_PCM_CAPTURE', -`SectionVendorTuples."'N_PCM($1)`_tuples_w_comp" {' +`SectionVendorTuples."'N_PCMC($1)`_tuples_w_comp" {' ` tokens "sof_comp_tokens"' ` tuples."word" {' ` SOF_TKN_COMP_PERIOD_SINK_COUNT' STR($4) @@ -115,27 +116,27 @@ define(`W_PCM_CAPTURE', ` SOF_TKN_COMP_PRELOAD_COUNT' STR($6) ` }' `}' -`SectionData."'N_PCM($1)`_data_w_comp" {' -` tuples "'N_PCM($1)`_tuples_w_comp"' +`SectionData."'N_PCMC($1)`_data_w_comp" {' +` tuples "'N_PCMC($1)`_tuples_w_comp"' `}' -`SectionVendorTuples."'N_PCM($1)`_tuples" {' +`SectionVendorTuples."'N_PCMC($1)`_tuples" {' ` tokens "sof_pcm_tokens"' ` tuples."word" {' ` SOF_TKN_PCM_DMAC' STR($2) ` SOF_TKN_PCM_DMAC_CHAN' STR($3) ` }' `}' -`SectionData."'N_PCM($1)`_data" {' -` tuples "'N_PCM($1)`_tuples"' +`SectionData."'N_PCMC($1)`_data" {' +` tuples "'N_PCMC($1)`_tuples"' `}' -`SectionWidget."'N_PCM`" {' +`SectionWidget."'N_PCMC`" {' ` index "'PIPELINE_ID`"' ` type "aif_out"' ` no_pm "true"' ` stream_name "'$1`"' ` data [' -` "'N_PCM($1)`_data"' -` "'N_PCM($1)`_data_w_comp"' +` "'N_PCMC($1)`_data"' +` "'N_PCMC($1)`_data_w_comp"' ` ]' `}')
@@ -478,5 +479,28 @@ define(`COMP_SAMPLE_SIZE', dnl COMP_BUFFER_SIZE( num_periods, sample_size, channels, fmames) define(`COMP_BUFFER_SIZE', `eval(`$1 * $2 * $3 * $4')')
+dnl PCM_DUPLEX_ADD(name, pipeline, pcm_id, dai_id, playback, capture) +define(`PCM_DUPLEX_ADD', +`SectionPCM.STR($1) {' +`' +` index STR($2)' +`' +` # used for binding to the PCM' +` id STR($3)' +`' +` dai.STR($1 $3) {' +` id STR($4)' +` }' +`' +` pcm."capture" {' +`' +` capabilities STR($6)' +` }' +`' +` pcm."playback" {' +`' +` capabilities STR($5)' +` }' +`}')
divert(0) dnl diff --git a/topology/reef-apl-nocodec.m4 b/topology/reef-apl-nocodec.m4 index 5e497f6..96f28d5 100644 --- a/topology/reef-apl-nocodec.m4 +++ b/topology/reef-apl-nocodec.m4 @@ -36,25 +36,25 @@ PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
-# Low Latency capture pipeline 2 on PCM 1 using max 2 channels of s32le. +# Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s32le. # Schedule 48 frames per 1000us deadline on core 0 with priority 0 # Use DMAC 0 channel 2 for PCM audio capture data PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, - 2, 1, 2, s32le, + 2, 0, 2, s32le, 48, 1000, 0, 0, 0, 2)
-# PCM Media Playback pipeline 3 on PCM 2 using max 2 channels of s32le. +# PCM Media Playback pipeline 3 on PCM 1 using max 2 channels of s32le. # Schedule 96 frames per 2000us deadline on core 0 with priority 1 # Use DMAC 0 channel 3 for PCM audio playback data PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, - 3, 2, 2, s32le, + 3, 1, 2, s32le, 96, 2000, 1, 0, 0, 3)
-# PCM Media Playback pipeline 4 on PCM 3 using max 2 channels of s32le. +# PCM Media Playback pipeline 4 on PCM 2 using max 2 channels of s32le. # Schedule 96 frames per 2000us deadline on core 0 with priority 1 # Use DMAC 0 channel 4 for PCM audio playback data PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, - 4, 3, 2, s32le, + 4, 2, 2, s32le, 96, 2000, 1, 0, 0, 4)
# Tone Playback pipeline 5 using max 2 channels of s32le. @@ -97,6 +97,9 @@ DAI_ADD(sof/pipe-dai-capture.m4, PIPELINE_SINK_2, 2, s24le, 48, 1000, 0, 0)
+# PCM Low Latency +PCM_DUPLEX_ADD(Low Latency, 6, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + # # BE configurations - overrides config in ACPI if present # diff --git a/topology/reef-bdw-rt286.m4 b/topology/reef-bdw-rt286.m4 index cb11ad6..512efe9 100644 --- a/topology/reef-bdw-rt286.m4 +++ b/topology/reef-bdw-rt286.m4 @@ -36,25 +36,25 @@ PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
-# Low Latency capture pipeline 2 on PCM 1 using max 2 channels of s32le. +# Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s32le. # Schedule 48 frames per 1000us deadline on core 0 with priority 0 # Use DMAC 0 channel 2 for PCM audio capture data PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, - 2, 1, 2, s32le, + 2, 0, 2, s32le, 48, 1000, 0, 0, 0, 2)
-# PCM Media Playback pipeline 3 on PCM 2 using max 2 channels of s32le. +# PCM Media Playback pipeline 3 on PCM 1 using max 2 channels of s32le. # Schedule 96 frames per 2000us deadline on core 0 with priority 1 # Use DMAC 0 channel 3 for PCM audio playback data PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, - 3, 2, 2, s32le, + 3, 1, 2, s32le, 96, 2000, 1, 0, 0, 3)
-# PCM Media Playback pipeline 4 on PCM 3 using max 2 channels of s32le. +# PCM Media Playback pipeline 4 on PCM 2 using max 2 channels of s32le. # Schedule 96 frames per 2000us deadline on core 0 with priority 1 # Use DMAC 0 channel 4 for PCM audio playback data PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, - 4, 3, 2, s32le, + 4, 2, 2, s32le, 96, 2000, 1, 0, 0, 4)
# Tone Playback pipeline 5 using max 2 channels of s32le. @@ -97,6 +97,9 @@ DAI_ADD(sof/pipe-dai-capture.m4, PIPELINE_SINK_2, 2, s24le, 48, 1000, 0, 0)
+# PCM Low Latency +PCM_DUPLEX_ADD(Low Latency, 6, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + # # BE configurations - overrides config in ACPI if present # diff --git a/topology/reef-bdw-rt5640.m4 b/topology/reef-bdw-rt5640.m4 index b3c19c2..5e259a6 100644 --- a/topology/reef-bdw-rt5640.m4 +++ b/topology/reef-bdw-rt5640.m4 @@ -36,25 +36,25 @@ PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
-# Low Latency capture pipeline 2 on PCM 1 using max 2 channels of s32le. +# Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s32le. # Schedule 48 frames per 1000us deadline on core 0 with priority 0 # Use DMAC 0 channel 2 for PCM audio capture data PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, - 2, 1, 2, s32le, + 2, 0, 2, s32le, 48, 1000, 0, 0, 0, 2)
-# PCM Media Playback pipeline 3 on PCM 2 using max 2 channels of s32le. +# PCM Media Playback pipeline 3 on PCM 1 using max 2 channels of s32le. # Schedule 96 frames per 2000us deadline on core 0 with priority 1 # Use DMAC 0 channel 3 for PCM audio playback data PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, - 3, 2, 2, s32le, + 3, 1, 2, s32le, 96, 2000, 1, 0, 0, 3)
-# PCM Media Playback pipeline 4 on PCM 3 using max 2 channels of s32le. +# PCM Media Playback pipeline 4 on PCM 2 using max 2 channels of s32le. # Schedule 96 frames per 2000us deadline on core 0 with priority 1 # Use DMAC 0 channel 4 for PCM audio playback data PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, - 4, 3, 2, s32le, + 4, 2, 2, s32le, 96, 2000, 1, 0, 0, 4)
# Tone Playback pipeline 5 using max 2 channels of s32le. @@ -97,6 +97,9 @@ DAI_ADD(sof/pipe-dai-capture.m4, PIPELINE_SINK_2, 2, s24le, 48, 1000, 0, 0)
+# PCM Low Latency +PCM_DUPLEX_ADD(Low Latency, 6, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + # # BE configurations - overrides config in ACPI if present # diff --git a/topology/reef-bxt-nocodec.m4 b/topology/reef-bxt-nocodec.m4 index 58bc6f6..e3c45c9 100644 --- a/topology/reef-bxt-nocodec.m4 +++ b/topology/reef-bxt-nocodec.m4 @@ -36,21 +36,21 @@ PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
-# Low Latency capture pipeline 2 on PCM 1 using max 2 channels of s32le. +# Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s32le. # Schedule 48 frames per 1000us deadline on core 0 with priority 0 # Use DMAC 0 channel 2 for PCM audio capture data PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, - 2, 1, 2, s32le, + 2, 0, 2, s32le, 48, 1000, 0, 0, 0, 2)
-# PCM Media Playback pipeline 3 on PCM 2 using max 2 channels of s32le. +# PCM Media Playback pipeline 3 on PCM 1 using max 2 channels of s32le. # Schedule 192 frames per 4000us deadline on core 0 with priority 1 # Use DMAC 0 channel 3 for PCM audio playback data PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, - 3, 2, 2, s32le, + 3, 1, 2, s32le, 192, 4000, 1, 0, 0, 3)
-# PCM Media Playback pipeline 4 on PCM 3 using max 2 channels of s32le. +# PCM Media Playback pipeline 4 on PCM 2 using max 2 channels of s32le. # Schedule 192 frames per 4000us deadline on core 0 with priority 1 # Use DMAC 0 channel 3 for PCM audio playback data PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, @@ -97,6 +97,9 @@ DAI_ADD(sof/pipe-dai-capture.m4, PIPELINE_SINK_2, 2, s24le, 48, 1000, 0, 0)
+# PCM Low Latency +PCM_DUPLEX_ADD(Low Latency, 6, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + # # BE configurations - overrides config in ACPI if present # diff --git a/topology/reef-byt-nocodec.m4 b/topology/reef-byt-nocodec.m4 index 5f6cd1d..3db415d 100644 --- a/topology/reef-byt-nocodec.m4 +++ b/topology/reef-byt-nocodec.m4 @@ -34,18 +34,18 @@ PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
-# Low Latency capture pipeline 2 on PCM 1 using max 2 channels of s32le. +# Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s32le. # Schedule 48 frames per 1000us deadline on core 0 with priority 0 # Use DMAC 0 channel 2 for PCM audio capture data PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, - 2, 1, 2, s32le, + 2, 0, 2, s32le, 48, 1000, 0, 0, 0, 2)
-# PCM Media Playback pipeline 3 on PCM 2 using max 2 channels of s32le. +# PCM Media Playback pipeline 3 on PCM 1 using max 2 channels of s32le. # Schedule 192 frames per 4000us deadline on core 0 with priority 1 # Use DMAC 0 channel 3 for PCM audio playback data PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, - 3, 2, 2, s32le, + 3, 1, 2, s32le, 192, 4000, 1, 0, 0, 3)
# Tone Playback pipeline 5 using max 2 channels of s32le. @@ -86,6 +86,9 @@ DAI_ADD(sof/pipe-dai-capture.m4, PIPELINE_SINK_2, 2, s24le, 48, 1000, 0, 0)
+# PCM Low Latency +PCM_DUPLEX_ADD(Low Latency, 6, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + # # BE configurations - overrides config in ACPI if present # diff --git a/topology/reef-byt-rt5640.m4 b/topology/reef-byt-rt5640.m4 index c5e8b52..1e9bb5f 100644 --- a/topology/reef-byt-rt5640.m4 +++ b/topology/reef-byt-rt5640.m4 @@ -34,18 +34,18 @@ PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
-# Low Latency capture pipeline 2 on PCM 1 using max 2 channels of s32le. +# Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s32le. # Schedule 48 frames per 1000us deadline on core 0 with priority 0 # Use DMAC 0 channel 2 for PCM audio capture data PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, - 2, 1, 2, s32le, + 2, 0, 2, s32le, 48, 1000, 0, 0, 0, 2)
-# PCM Media Playback pipeline 3 on PCM 2 using max 2 channels of s32le. +# PCM Media Playback pipeline 3 on PCM 1 using max 2 channels of s32le. # Schedule 192 frames per 4000us deadline on core 0 with priority 1 # Use DMAC 0 channel 3 for PCM audio playback data PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, - 3, 2, 2, s32le, + 3, 1, 2, s32le, 192, 4000, 1, 0, 0, 3)
# Tone Playback pipeline 5 using max 2 channels of s32le. @@ -86,6 +86,9 @@ DAI_ADD(sof/pipe-dai-capture.m4, PIPELINE_SINK_2, 2, s24le, 48, 1000, 0, 0)
+# PCM Low Latency +PCM_DUPLEX_ADD(Low Latency, 6, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + # # BE configurations - overrides config in ACPI if present # diff --git a/topology/reef-byt-rt5651.m4 b/topology/reef-byt-rt5651.m4 index e335d66..0867f91 100644 --- a/topology/reef-byt-rt5651.m4 +++ b/topology/reef-byt-rt5651.m4 @@ -34,18 +34,18 @@ PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
-# Low Latency capture pipeline 2 on PCM 1 using max 2 channels of s32le. +# Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s32le. # Schedule 48 frames per 1000us deadline on core 0 with priority 0 # Use DMAC 0 channel 2 for PCM audio capture data PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, - 2, 1, 2, s32le, + 2, 0, 2, s32le, 48, 1000, 0, 0, 0, 2)
-# PCM Media Playback pipeline 3 on PCM 2 using max 2 channels of s32le. +# PCM Media Playback pipeline 3 on PCM 1 using max 2 channels of s32le. # Schedule 192 frames per 4000us deadline on core 0 with priority 1 # Use DMAC 0 channel 3 for PCM audio playback data PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, - 3, 2, 2, s32le, + 3, 1, 2, s32le, 192, 4000, 1, 0, 0, 3)
# Tone Playback pipeline 5 using max 2 channels of s32le. @@ -86,6 +86,9 @@ DAI_ADD(sof/pipe-dai-capture.m4, PIPELINE_SINK_2, 2, s24le, 48, 1000, 0, 0)
+# PCM Low Latency +PCM_DUPLEX_ADD(Low Latency, 3, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + # # BE configurations - overrides config in ACPI if present # diff --git a/topology/reef-cht-nocodec.m4 b/topology/reef-cht-nocodec.m4 index ddeb71e..195ae5c 100644 --- a/topology/reef-cht-nocodec.m4 +++ b/topology/reef-cht-nocodec.m4 @@ -34,18 +34,18 @@ PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
-# Low Latency capture pipeline 2 on PCM 1 using max 2 channels of s32le. +# Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s32le. # Schedule 48 frames per 1000us deadline on core 0 with priority 0 # Use DMAC 0 channel 2 for PCM audio capture data PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, - 2, 1, 2, s32le, + 2, 0, 2, s32le, 48, 1000, 0, 0, 0, 2)
-# PCM Media Playback pipeline 3 on PCM 2 using max 2 channels of s32le. +# PCM Media Playback pipeline 3 on PCM 1 using max 2 channels of s32le. # Schedule 192 frames per 4000us deadline on core 0 with priority 1 # Use DMAC 0 channel 3 for PCM audio playback data PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, - 3, 2, 2, s32le, + 3, 1, 2, s32le, 192, 4000, 1, 0, 0, 3)
# Tone Playback pipeline 5 using max 2 channels of s32le. @@ -86,6 +86,9 @@ DAI_ADD(sof/pipe-dai-capture.m4, PIPELINE_SINK_2, 2, s24le, 48, 1000, 0, 0)
+# PCM Low Latency +PCM_DUPLEX_ADD(Low Latency, 6, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + # # BE configurations - overrides config in ACPI if present # diff --git a/topology/reef-hsw-rt5640.m4 b/topology/reef-hsw-rt5640.m4 index efd815b..1b06828 100644 --- a/topology/reef-hsw-rt5640.m4 +++ b/topology/reef-hsw-rt5640.m4 @@ -36,25 +36,25 @@ PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
-# Low Latency capture pipeline 2 on PCM 1 using max 2 channels of s32le. +# Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s32le. # Schedule 48 frames per 1000us deadline on core 0 with priority 0 # Use DMAC 0 channel 2 for PCM audio capture data PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, - 2, 1, 2, s32le, + 2, 0, 2, s32le, 48, 1000, 0, 0, 0, 2)
-# PCM Media Playback pipeline 3 on PCM 2 using max 2 channels of s32le. +# PCM Media Playback pipeline 3 on PCM 1 using max 2 channels of s32le. # Schedule 192 frames per 4000us deadline on core 0 with priority 1 # Use DMAC 0 channel 3 for PCM audio playback data PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, - 3, 2, 2, s32le, + 3, 1, 2, s32le, 192, 4000, 1, 0, 0, 3)
-# PCM Media Playback pipeline 4 on PCM 3 using max 2 channels of s32le. +# PCM Media Playback pipeline 4 on PCM 2 using max 2 channels of s32le. # Schedule 192 frames per 4000us deadline on core 0 with priority 1 # Use DMAC 0 channel 3 for PCM audio playback data PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, - 3, 2, 2, s32le, + 4, 2, 2, s32le, 192, 4000, 1, 0, 0, 4)
# Tone Playback pipeline 5 using max 2 channels of s32le. @@ -97,6 +97,9 @@ DAI_ADD(sof/pipe-dai-capture.m4, PIPELINE_SINK_2, 2, s24le, 48, 1000, 0, 0)
+# PCM Low Latency +PCM_DUPLEX_ADD(Low Latency, 6, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + # # BE configurations - overrides config in ACPI if present # diff --git a/topology/sof/pipe-low-latency-capture.m4 b/topology/sof/pipe-low-latency-capture.m4 index 22df648..0c989a7 100644 --- a/topology/sof/pipe-low-latency-capture.m4 +++ b/topology/sof/pipe-low-latency-capture.m4 @@ -65,8 +65,8 @@ SectionGraph."pipe-ll-capture-PIPELINE_ID" { index STR(PIPELINE_ID)
lines [ - dapm(Low Latency Capture PCM_ID, N_PCM) - dapm(N_PCM, N_BUFFER(1)) + dapm(Low Latency Capture PCM_ID, N_PCMC) + dapm(N_PCMC, N_BUFFER(1)) dapm(N_BUFFER(1), N_PGA(0)) dapm(N_PGA(0), N_BUFFER(0)) ] @@ -76,12 +76,7 @@ SectionGraph."pipe-ll-capture-PIPELINE_ID" { # Pipeline Source and Sinks # indir(`define', concat(`PIPELINE_SINK_', PIPELINE_ID), N_BUFFER(0)) - -# -# Pipeline Configuration. -# - -#W_PIPELINE(N_PGA(0), SCHEDULE_DEADLINE, SCHEDULE_PRIORITY, SCHEDULE_FRAMES, SCHEDULE_CORE, pipe_ll_schedule_plat) +indir(`define', concat(`PIPELINE_PCM_', PIPELINE_ID), Low Latency Capture PCM_ID)
# # PCM Configuration @@ -102,20 +97,3 @@ SectionPCMCapabilities.STR(Low Latency Capture PCM_ID) { buffer_size_max "65536" }
-# PCM Low Latency Capture -SectionPCM.STR(PCM PCM_ID) { - - index STR(PIPELINE_ID) - - # used for binding to the PCM - id STR(PCM_ID) - - dai.STR(Low Latency Capture PCM_ID) { - id STR(PCM_ID) - } - - pcm."capture" { - - capabilities STR(Low Latency Capture PCM_ID) - } -} diff --git a/topology/sof/pipe-low-latency-playback.m4 b/topology/sof/pipe-low-latency-playback.m4 index c29165e..cd04ccf 100644 --- a/topology/sof/pipe-low-latency-playback.m4 +++ b/topology/sof/pipe-low-latency-playback.m4 @@ -125,8 +125,8 @@ SectionGraph."pipe-ll-playback-PIPELINE_ID" { index STR(PIPELINE_ID)
lines [ - dapm(N_PCM, Low Latency Playback PCM_ID) - dapm(N_BUFFER(0), N_PCM) + dapm(N_PCMP, Low Latency Playback PCM_ID) + dapm(N_BUFFER(0), N_PCMP) dapm(N_PGA(0), N_BUFFER(0)) dapm(N_BUFFER(1), N_PGA(0)) dapm(N_MIXER(0), N_BUFFER(1)) @@ -141,12 +141,7 @@ SectionGraph."pipe-ll-playback-PIPELINE_ID" { # indir(`define', concat(`PIPELINE_SOURCE_', PIPELINE_ID), N_BUFFER(3)) indir(`define', concat(`PIPELINE_MIXER_', PIPELINE_ID), N_MIXER(0)) - -# -# Pipeline Configuration. -# - -#W_PIPELINE(N_PGA(1), SCHEDULE_DEADLINE, SCHEDULE_PRIORITY, SCHEDULE_FRAMES, SCHEDULE_CORE, pipe_ll_schedule_plat) +indir(`define', concat(`PIPELINE_PCM_', PIPELINE_ID), Low Latency Playback PCM_ID)
# # PCM Configuration @@ -168,21 +163,3 @@ SectionPCMCapabilities.STR(Low Latency Playback PCM_ID) { buffer_size_max "65536" }
-# PCM Low Latency Playback -SectionPCM.STR(PCM PCM_ID) { - - index STR(PIPELINE_ID) - - # used for binding to the PCM - id STR(PCM_ID) - - dai.STR(Low Latency Playback PCM_ID) { - id STR(PCM_ID) - } - - # Playback and Capture Configuration - pcm."playback" { - - capabilities STR(Low Latency Playback PCM_ID) - } -} diff --git a/topology/sof/pipe-passthrough-playback.m4 b/topology/sof/pipe-passthrough-playback.m4 index 46ed949..4e6e705 100644 --- a/topology/sof/pipe-passthrough-playback.m4 +++ b/topology/sof/pipe-passthrough-playback.m4 @@ -39,8 +39,8 @@ SectionGraph."pipe-pass-playback-PIPELINE_ID" { index STR(PIPELINE_ID)
lines [ - dapm(N_PCM, Passthrough Playback PCM_ID) - dapm(N_BUFFER(0), N_PCM) + dapm(N_PCMP, Passthrough Playback PCM_ID) + dapm(N_BUFFER(0), N_PCMP) dapm(N_DAI_OUT, N_BUFFER(0)) ] } diff --git a/topology/sof/pipe-passthrough-src-playback.m4 b/topology/sof/pipe-passthrough-src-playback.m4 index 0ffc2a4..3cadaf2 100644 --- a/topology/sof/pipe-passthrough-src-playback.m4 +++ b/topology/sof/pipe-passthrough-src-playback.m4 @@ -62,8 +62,8 @@ SectionGraph."pipe-pass-src-playback-PIPELINE_ID" { index STR(PIPELINE_ID)
lines [ - dapm(N_PCM, Passthrough Playback PCM_ID) - dapm(N_BUFFER(0), N_PCM) + dapm(N_PCMP, Passthrough Playback PCM_ID) + dapm(N_BUFFER(0), N_PCMP) dapm(N_SRC(0), N_BUFFER(0)) dapm(N_BUFFER(1), N_SRC(0)) dapm(N_DAI_OUT, N_BUFFER(1)) diff --git a/topology/sof/pipe-passthrough-vol-playback.m4 b/topology/sof/pipe-passthrough-vol-playback.m4 index ffc9000..f0e39e8 100644 --- a/topology/sof/pipe-passthrough-vol-playback.m4 +++ b/topology/sof/pipe-passthrough-vol-playback.m4 @@ -76,8 +76,8 @@ SectionGraph."pipe-pass-vol-playback-PIPELINE_ID" { index STR(PIPELINE_ID)
lines [ - dapm(N_PCM, Passthrough Playback PCM_ID) - dapm(N_BUFFER(0), N_PCM) + dapm(N_PCMP, Passthrough Playback PCM_ID) + dapm(N_BUFFER(0), N_PCMP) dapm(N_PGA(0), N_BUFFER(0)) dapm(N_BUFFER(1), N_PGA(0)) dapm(N_DAI_OUT, N_BUFFER(1)) diff --git a/topology/sof/pipe-pcm-media.m4 b/topology/sof/pipe-pcm-media.m4 index b04b353..7bfb35a 100644 --- a/topology/sof/pipe-pcm-media.m4 +++ b/topology/sof/pipe-pcm-media.m4 @@ -93,8 +93,8 @@ SectionGraph."pipe-media-PIPELINE_ID" { index STR(PIPELINE_ID)
lines [ - dapm(N_PCM, Media Playback PCM_ID) - dapm(N_BUFFER(0), N_PCM) + dapm(N_PCMP, Media Playback PCM_ID) + dapm(N_BUFFER(0), N_PCMP) dapm(N_PGA(0), N_BUFFER(0)) dapm(N_BUFFER(1), N_PGA(0)) dapm(N_SRC(0), N_BUFFER(1)) @@ -134,7 +134,7 @@ SectionPCMCapabilities.STR(Media Playback PCM_ID) { }
# PCM Low Latency Playback and Capture -SectionPCM.STR(PCM PCM_ID) { +SectionPCM.STR(Media Playback PCM_ID) {
index STR(PIPELINE_ID)