[Sound-open-firmware] [PATCH] topology: Allows playback and capture pipelines to share same PCM

Liam Girdwood liam.r.girdwood at linux.intel.com
Mon Oct 2 16:30:31 CEST 2017


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 at 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)
 
-- 
1.9.1



More information about the Sound-open-firmware mailing list