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(a)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