[Sound-open-firmware] [PATCH 5/5] topology: Add machine specific update for buffer and scheduling tokens

Liam Girdwood liam.r.girdwood at linux.intel.com
Wed Aug 9 16:02:17 CEST 2017


Allow machines to specify scheduling config in pipeline topologies.

Signed-off-by: Liam Girdwood <liam.r.girdwood at linux.intel.com>
---
 topology/reef-apl-nocodec.m4 | 86 ++++++++++++++++++++++++--------------------
 topology/reef-bdw-rt286.m4   | 83 ++++++++++++++++++++++++------------------
 topology/reef-bdw-rt5640.m4  | 83 ++++++++++++++++++++++++------------------
 topology/reef-bxt-nocodec.m4 | 84 ++++++++++++++++++++++++-------------------
 topology/reef-byt-nocodec.m4 | 84 ++++++++++++++++++++++++-------------------
 topology/reef-byt-rt5640.m4  | 84 ++++++++++++++++++++++++-------------------
 topology/reef-byt-rt5651.m4  | 85 ++++++++++++++++++++++++-------------------
 topology/reef-cht-nocodec.m4 | 86 +++++++++++++++++++++++++-------------------
 topology/reef-hsw-rt5640.m4  | 83 ++++++++++++++++++++++++------------------
 9 files changed, 434 insertions(+), 324 deletions(-)

diff --git a/topology/reef-apl-nocodec.m4 b/topology/reef-apl-nocodec.m4
index f1c1819..93febe0 100644
--- a/topology/reef-apl-nocodec.m4
+++ b/topology/reef-apl-nocodec.m4
@@ -18,29 +18,40 @@ include(`dsps/bxt.m4')
 #
 # Define the pipelines
 #
+# PCM0 ----> volume ---------------+
+#                                  |--low latency mixer ----> volume ---->  SSP2
+# PCM2 ----> SRC -----> volume ----+
+#                                  |
+# PCM3 ----> SRC -----> volume ----+
+#                                  |
+#           Tone -----> volume ----+
+#
+# PCM1 <---- Volume <---- SSP2
+#
 
-# Low Latency playback pipeline 1 on PCM 0
-PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 768, 768, 48, 1000, 0)
-
-# Low Latency capture pipeline 2 on PCM 1
-PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, 2, 1, 768, 768, 48, 1000, 0)
+# Low Latency playback pipeline 1 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 1 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
 
-# PCM Media Playback pipeline 3 on PCM 2
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 1536, 1536, 96, 2000, 1)
+# Low Latency capture pipeline 2 on PCM 1 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, 48, 1000, 0, 0, 0, 2)
 
-# PCM Media Playback pipeline 4 on PCM 3
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 4, 3, 1536, 1536, 96, 2000, 1)
+# PCM Media Playback pipeline 3 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 3 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 2, s32le, 96, 2000, 1, 0, 0, 3)
 
-# Tone Playback pipeline 5
-PIPELINE_ADD(sof/pipe-tone.m4, 5, 3072, 192, 4000, 2)
+# PCM Media Playback pipeline 4 on PCM 3 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, 96, 2000, 1, 0, 0, 4)
 
-
-#
-# DAI configuration
-#
-
-# SSP port 2 is our pipeline DAI
-DAI_ADD(sof/pipe-dai.m4, SSP2, I2S Audio, NPIPELINE_BUFFER(2, 0), NPIPELINE_BUFFER(1, 3))
+# Tone Playback pipeline 5 using max 2 channels of s32le.
+# Schedule 192 frames per 4000us deadline on core 0 with priority 2
+PIPELINE_ADD(sof/pipe-tone.m4, 5, 2, s32le, 192, 4000, 2, 0)
 
 # Connect pipelines together
 SectionGraph."pipe-apl-nocodec" {
@@ -48,32 +59,31 @@ SectionGraph."pipe-apl-nocodec" {
 
 	lines [
 		# media 0
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(3, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_3)
 		# media 1
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(4, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_4)
 		#tone
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(5, 1))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_5)
 	]
 }
 
-
 #
-# BE configurations - overrides config in ACPI if present
+# DAI configuration
+#
+# SSP port 2 is our only pipeline DAI
 #
 
-# BE configurations - overrides config in ACPI if present
-SectionHWConfig."SSP2" {
-
-	id 		"2"
-	format 		"I2S"
-	bclk_master	"true"
-	bclk_freq	"2400000"
-	mclk_freq	"19200000"
-	fsyn_master	"true"
-	fsync_freq	"48000"
-	tdm_slots	"2"
-	tdm_slot_width	"25"
-	tx_slots	"2"
-	rx_slots	"2"
-}
+# playback DAI is SSP2 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-playback.m4, SSP, 2, I2S, PIPELINE_SOURCE_1, 2)
 
+# capture DAI is SSP2 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-capture.m4, SSP, 2, I2S, PIPELINE_SINK_2, 2)
+
+#
+# BE configurations - overrides config in ACPI if present
+#
+DAI_CONFIG(SSP, 2, NoCodec, I2S, I2S,
+	DAI_CLOCK(mclk, 19200000, slave),
+	DAI_CLOCK(bclk, 2400000, slave),
+	DAI_CLOCK(fsync, 48000, slave),
+	DAI_TDM(2, 24, 3, 3))
diff --git a/topology/reef-bdw-rt286.m4 b/topology/reef-bdw-rt286.m4
index 38d1c6a..4135353 100644
--- a/topology/reef-bdw-rt286.m4
+++ b/topology/reef-bdw-rt286.m4
@@ -18,29 +18,40 @@ include(`dsps/bdw.m4')
 #
 # Define the pipelines
 #
+# PCM0 ----> volume ---------------+
+#                                  |--low latency mixer ----> volume ---->  SSP2
+# PCM2 ----> SRC -----> volume ----+
+#                                  |
+# PCM3 ----> SRC -----> volume ----+
+#                                  |
+#           Tone -----> volume ----+
+#
+# PCM1 <---- Volume <---- SSP0
+#
 
-# Low Latency playback pipeline 1 on PCM 0
-PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 768, 768, 48, 1000, 0)
-
-# Low Latency capture pipeline 2 on PCM 1
-PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, 2, 1, 768, 768, 48, 1000, 0)
-
-# PCM Media Playback pipeline 3 on PCM 2
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 1536, 1536, 96, 2000, 1)
-
-# PCM Media Playback pipeline 4 on PCM 3
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 4, 3, 1536, 1536, 96, 2000, 1)
+# Low Latency playback pipeline 1 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 1 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
 
-# Tone Playback pipeline 5
-PIPELINE_ADD(sof/pipe-tone.m4, 5, 3072, 192, 4000, 2)
+# Low Latency capture pipeline 2 on PCM 1 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, 48, 1000, 0, 0, 0, 2)
 
+# PCM Media Playback pipeline 3 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 3 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 2, s32le, 96, 2000, 1, 0, 0, 3)
 
-#
-# DAI configuration
-#
+# PCM Media Playback pipeline 4 on PCM 3 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, 96, 2000, 1, 0, 0, 4)
 
-# SSP port 2 is our pipeline DAI
-DAI_ADD(sof/pipe-dai.m4, SSP2, I2S Audio, NPIPELINE_BUFFER(2, 0), NPIPELINE_BUFFER(1, 3))
+# Tone Playback pipeline 5 using max 2 channels of s32le.
+# Schedule 192 frames per 4000us deadline on core 0 with priority 2
+PIPELINE_ADD(sof/pipe-tone.m4, 5, 2, s32le, 192, 4000, 2, 0)
 
 # Connect pipelines together
 SectionGraph."pipe-bdw-rt286" {
@@ -48,29 +59,31 @@ SectionGraph."pipe-bdw-rt286" {
 
 	lines [
 		# media 0
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(3, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_3)
 		# media 1
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(4, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_4)
 		#tone
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(5, 1))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_5)
 	]
 }
 
+#
+# DAI configuration
+#
+# SSP port 0 is our only pipeline DAI
+#
+
+# playback DAI is SSP0 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-playback.m4, SSP, 0, I2S, PIPELINE_SOURCE_1, 2)
+
+# capture DAI is SSP0 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-capture.m4, SSP, 0, I2S, PIPELINE_SINK_2, 2)
 
 #
 # BE configurations - overrides config in ACPI if present
 #
-SectionHWConfig."SSP0" {
-
-	id 		"2"
-	format 		"I2S"
-	bclk_master	"true"
-	bclk_freq	"2400000"
-	mclk_freq	"24000000"
-	fsyn_master	"true"
-	fsync_freq	"48000"
-	tdm_slots	"2"
-	tdm_slot_width	"25"
-	tx_slots	"2"
-	rx_slots	"2"
-}
+DAI_CONFIG(SSP, 0, Codec, I2S, I2S,
+	DAI_CLOCK(mclk, 24000000, slave),
+	DAI_CLOCK(bclk, 2400000, slave),
+	DAI_CLOCK(fsync, 48000, slave),
+	DAI_TDM(2, 24, 3, 3))
diff --git a/topology/reef-bdw-rt5640.m4 b/topology/reef-bdw-rt5640.m4
index 4bdfdb4..540ac4c 100644
--- a/topology/reef-bdw-rt5640.m4
+++ b/topology/reef-bdw-rt5640.m4
@@ -18,29 +18,40 @@ include(`dsps/bdw.m4')
 #
 # Define the pipelines
 #
+# PCM0 ----> volume ---------------+
+#                                  |--low latency mixer ----> volume ---->  SSP2
+# PCM2 ----> SRC -----> volume ----+
+#                                  |
+# PCM3 ----> SRC -----> volume ----+
+#                                  |
+#           Tone -----> volume ----+
+#
+# PCM1 <---- Volume <---- SSP0
+#
 
-# Low Latency playback pipeline 1 on PCM 0
-PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 768, 768, 48, 1000, 0)
-
-# Low Latency capture pipeline 2 on PCM 1
-PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, 2, 1, 768, 768, 48, 1000, 0)
-
-# PCM Media Playback pipeline 3 on PCM 2
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 1536, 1536, 96, 2000, 1)
-
-# PCM Media Playback pipeline 4 on PCM 3
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 4, 3, 1536, 1536, 96, 2000, 1)
+# Low Latency playback pipeline 1 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 1 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
 
-# Tone Playback pipeline 5
-PIPELINE_ADD(sof/pipe-tone.m4, 5, 3072, 192, 4000, 2)
+# Low Latency capture pipeline 2 on PCM 1 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, 48, 1000, 0, 0, 0, 2)
 
+# PCM Media Playback pipeline 3 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 3 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 2, s32le, 96, 2000, 1, 0, 0, 3)
 
-#
-# DAI configuration
-#
+# PCM Media Playback pipeline 4 on PCM 3 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, 96, 2000, 1, 0, 0, 4)
 
-# SSP port 2 is our pipeline DAI
-DAI_ADD(sof/pipe-dai.m4, SSP2, I2S Audio, NPIPELINE_BUFFER(2, 0), NPIPELINE_BUFFER(1, 3))
+# Tone Playback pipeline 5 using max 2 channels of s32le.
+# Schedule 192 frames per 4000us deadline on core 0 with priority 2
+PIPELINE_ADD(sof/pipe-tone.m4, 5, 2, s32le, 192, 4000, 2, 0)
 
 # Connect pipelines together
 SectionGraph."pipe-bdw-rt5640" {
@@ -48,29 +59,31 @@ SectionGraph."pipe-bdw-rt5640" {
 
 	lines [
 		# media 0
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(3, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_3)
 		# media 1
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(4, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_4)
 		#tone
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(5, 1))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_5)
 	]
 }
 
+#
+# DAI configuration
+#
+# SSP port 0 is our only pipeline DAI
+#
+
+# playback DAI is SSP0 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-playback.m4, SSP, 0, I2S, PIPELINE_SOURCE_1, 2)
+
+# capture DAI is SSP0 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-capture.m4, SSP, 0, I2S, PIPELINE_SINK_2, 2)
 
 #
 # BE configurations - overrides config in ACPI if present
 #
-SectionHWConfig."SSP0" {
-
-	id 		"2"
-	format 		"I2S"
-	bclk_master	"true"
-	bclk_freq	"2400000"
-	mclk_freq	"24000000"
-	fsyn_master	"true"
-	fsync_freq	"48000"
-	tdm_slots	"2"
-	tdm_slot_width	"25"
-	tx_slots	"2"
-	rx_slots	"2"
-}
+DAI_CONFIG(SSP, 0, Codec, I2S, I2S,
+	DAI_CLOCK(mclk, 24000000, slave),
+	DAI_CLOCK(bclk, 2400000, slave),
+	DAI_CLOCK(fsync, 48000, slave),
+	DAI_TDM(2, 24, 3, 3))
diff --git a/topology/reef-bxt-nocodec.m4 b/topology/reef-bxt-nocodec.m4
index 8634d3a..564e78c 100644
--- a/topology/reef-bxt-nocodec.m4
+++ b/topology/reef-bxt-nocodec.m4
@@ -18,29 +18,40 @@ include(`dsps/bxt.m4')
 #
 # Define the pipelines
 #
+# PCM0 ----> volume ---------------+
+#                                  |--low latency mixer ----> volume ---->  SSP2
+# PCM2 ----> SRC -----> volume ----+
+#                                  |
+# PCM3 ----> SRC -----> volume ----+
+#                                  |
+#           Tone -----> volume ----+
+#
+# PCM1 <---- Volume <---- SSP2
+#
 
-# Low Latency playback pipeline 1 on PCM 0
-PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 768, 768, 48, 1000, 0)
-
-# Low Latency capture pipeline 2 on PCM 1
-PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, 2, 1, 768, 768, 48, 1000, 0)
-
-# PCM Media Playback pipeline 3 on PCM 2
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 1536, 1536, 96, 2000, 1)
-
-# PCM Media Playback pipeline 4 on PCM 3
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 4, 3, 1536, 1536, 96, 2000, 1)
+# Low Latency playback pipeline 1 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 1 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
 
-# Tone Playback pipeline 5
-PIPELINE_ADD(sof/pipe-tone.m4, 5, 3072, 192, 4000, 2)
+# Low Latency capture pipeline 2 on PCM 1 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, 48, 1000, 0, 0, 0, 2)
 
+# PCM Media Playback pipeline 3 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 3 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 2, s32le, 96, 2000, 1, 0, 0, 3)
 
-#
-# DAI configuration
-#
+# PCM Media Playback pipeline 4 on PCM 3 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, 96, 2000, 1, 0, 0, 4)
 
-# SSP port 2 is our pipeline DAI
-DAI_ADD(sof/pipe-dai.m4, SSP2, I2S Audio, NPIPELINE_BUFFER(2, 0), NPIPELINE_BUFFER(1, 3))
+# Tone Playback pipeline 5 using max 2 channels of s32le.
+# Schedule 192 frames per 4000us deadline on core 0 with priority 2
+PIPELINE_ADD(sof/pipe-tone.m4, 5, 2, s32le, 192, 4000, 2, 0)
 
 # Connect pipelines together
 SectionGraph."pipe-bxt-nocodec" {
@@ -48,30 +59,31 @@ SectionGraph."pipe-bxt-nocodec" {
 
 	lines [
 		# media 0
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(3, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_3)
 		# media 1
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(4, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_4)
 		#tone
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(5, 1))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_5)
 	]
 }
 
+#
+# DAI configuration
+#
+# SSP port 2 is our only pipeline DAI
+#
+
+# playback DAI is SSP2 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-playback.m4, SSP, 2, I2S, PIPELINE_SOURCE_1, 2)
+
+# capture DAI is SSP2 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-capture.m4, SSP, 2, I2S, PIPELINE_SINK_2, 2)
 
 #
 # BE configurations - overrides config in ACPI if present
 #
-SectionHWConfig."SSP2" {
-
-	id 		"2"
-	format 		"I2S"
-	bclk_master	"true"
-	bclk_freq	"2400000"
-	mclk_freq	"19200000"
-	fsyn_master	"true"
-	fsync_freq	"48000"
-	tdm_slots	"2"
-	tdm_slot_width	"25"
-	tx_slots	"2"
-	rx_slots	"2"
-}
-
+DAI_CONFIG(SSP, 2, NoCodec, I2S, I2S,
+	DAI_CLOCK(mclk, 19200000, slave),
+	DAI_CLOCK(bclk, 2400000, slave),
+	DAI_CLOCK(fsync, 48000, slave),
+	DAI_TDM(2, 24, 3, 3))
diff --git a/topology/reef-byt-nocodec.m4 b/topology/reef-byt-nocodec.m4
index 14660fa..ab0cd8e 100644
--- a/topology/reef-byt-nocodec.m4
+++ b/topology/reef-byt-nocodec.m4
@@ -18,29 +18,40 @@ include(`dsps/byt.m4')
 #
 # Define the pipelines
 #
+# PCM0 ----> volume ---------------+
+#                                  |--low latency mixer ----> volume ---->  SSP2
+# PCM2 ----> SRC -----> volume ----+
+#                                  |
+# PCM3 ----> SRC -----> volume ----+
+#                                  |
+#           Tone -----> volume ----+
+#
+# PCM1 <---- Volume <---- SSP2
+#
 
-# Low Latency playback pipeline 1 on PCM 0
-PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 768, 768, 48, 1000, 0)
-
-# Low Latency capture pipeline 2 on PCM 1
-PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, 2, 1, 768, 768, 48, 1000, 0)
-
-# PCM Media Playback pipeline 3 on PCM 2
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 1536, 1536, 96, 2000, 1)
-
-# PCM Media Playback pipeline 4 on PCM 3
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 4, 3, 1536, 1536, 96, 2000, 1)
+# Low Latency playback pipeline 1 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 1 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
 
-# Tone Playback pipeline 5
-PIPELINE_ADD(sof/pipe-tone.m4, 5, 3072, 192, 4000, 2)
+# Low Latency capture pipeline 2 on PCM 1 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, 48, 1000, 0, 0, 0, 2)
 
+# PCM Media Playback pipeline 3 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 3 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 2, s32le, 96, 2000, 1, 0, 0, 3)
 
-#
-# DAI configuration
-#
+# PCM Media Playback pipeline 4 on PCM 3 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, 96, 2000, 1, 0, 0, 4)
 
-# SSP port 2 is our pipeline DAI
-DAI_ADD(sof/pipe-dai.m4, SSP2, I2S Audio, NPIPELINE_BUFFER(2, 0), NPIPELINE_BUFFER(1, 3))
+# Tone Playback pipeline 5 using max 2 channels of s32le.
+# Schedule 192 frames per 4000us deadline on core 0 with priority 2
+PIPELINE_ADD(sof/pipe-tone.m4, 5, 2, s32le, 192, 4000, 2, 0)
 
 # Connect pipelines together
 SectionGraph."pipe-byt-nocodec" {
@@ -48,30 +59,31 @@ SectionGraph."pipe-byt-nocodec" {
 
 	lines [
 		# media 0
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(3, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_3)
 		# media 1
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(4, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_4)
 		#tone
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(5, 1))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_5)
 	]
 }
 
+#
+# DAI configuration
+#
+# SSP port 2 is our only pipeline DAI
+#
+
+# playback DAI is SSP2 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-playback.m4, SSP, 2, I2S, PIPELINE_SOURCE_1, 2)
+
+# capture DAI is SSP2 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-capture.m4, SSP, 2, I2S, PIPELINE_SINK_2, 2)
 
 #
 # BE configurations - overrides config in ACPI if present
 #
-SectionHWConfig."SSP2" {
-
-	id 		"2"
-	format 		"I2S"
-	bclk_master	"true"
-	bclk_freq	"2400000"
-	mclk_freq	"19200000"
-	fsyn_master	"true"
-	fsync_freq	"48000"
-	tdm_slots	"2"
-	tdm_slot_width	"25"
-	tx_slots	"2"
-	rx_slots	"2"
-}
-
+DAI_CONFIG(SSP, 2, NoCodec, I2S, I2S,
+	DAI_CLOCK(mclk, 19200000, slave),
+	DAI_CLOCK(bclk, 2400000, slave),
+	DAI_CLOCK(fsync, 48000, slave),
+	DAI_TDM(2, 24, 3, 3))
diff --git a/topology/reef-byt-rt5640.m4 b/topology/reef-byt-rt5640.m4
index 90acec9..2cee093 100644
--- a/topology/reef-byt-rt5640.m4
+++ b/topology/reef-byt-rt5640.m4
@@ -18,29 +18,40 @@ include(`dsps/byt.m4')
 #
 # Define the pipelines
 #
+# PCM0 ----> volume ---------------+
+#                                  |--low latency mixer ----> volume ---->  SSP2
+# PCM2 ----> SRC -----> volume ----+
+#                                  |
+# PCM3 ----> SRC -----> volume ----+
+#                                  |
+#           Tone -----> volume ----+
+#
+# PCM1 <---- Volume <---- SSP2
+#
 
-# Low Latency playback pipeline 1 on PCM 0
-PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 768, 768, 48, 1000, 0)
-
-# Low Latency capture pipeline 2 on PCM 1
-PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, 2, 1, 768, 768, 48, 1000, 0)
-
-# PCM Media Playback pipeline 3 on PCM 2
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 1536, 1536, 96, 2000, 1)
-
-# PCM Media Playback pipeline 4 on PCM 3
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 4, 3, 1536, 1536, 96, 2000, 1)
+# Low Latency playback pipeline 1 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 1 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
 
-# Tone Playback pipeline 5
-PIPELINE_ADD(sof/pipe-tone.m4, 5, 3072, 192, 4000, 2)
+# Low Latency capture pipeline 2 on PCM 1 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, 48, 1000, 0, 0, 0, 2)
 
+# PCM Media Playback pipeline 3 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 3 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 2, s32le, 96, 2000, 1, 0, 0, 3)
 
-#
-# DAI configuration
-#
+# PCM Media Playback pipeline 4 on PCM 3 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, 96, 2000, 1, 0, 0, 4)
 
-# SSP port 2 is our pipeline DAI
-DAI_ADD(sof/pipe-dai.m4, SSP2, I2S Audio, NPIPELINE_BUFFER(2, 0), NPIPELINE_BUFFER(1, 3))
+# Tone Playback pipeline 5 using max 2 channels of s32le.
+# Schedule 192 frames per 4000us deadline on core 0 with priority 2
+PIPELINE_ADD(sof/pipe-tone.m4, 5, 2, s32le, 192, 4000, 2, 0)
 
 # Connect pipelines together
 SectionGraph."pipe-byt-rt5640" {
@@ -48,30 +59,31 @@ SectionGraph."pipe-byt-rt5640" {
 
 	lines [
 		# media 0
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(3, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_3)
 		# media 1
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(4, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_4)
 		#tone
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(5, 1))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_5)
 	]
 }
 
+#
+# DAI configuration
+#
+# SSP port 2 is our only pipeline DAI
+#
+
+# playback DAI is SSP2 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-playback.m4, SSP, 2, I2S, PIPELINE_SOURCE_1, 2)
+
+# capture DAI is SSP2 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-capture.m4, SSP, 2, I2S, PIPELINE_SINK_2, 2)
 
 #
 # BE configurations - overrides config in ACPI if present
 #
-SectionHWConfig."SSP2" {
-
-	id 		"2"
-	format 		"I2S"
-	bclk_master	"true"
-	bclk_freq	"2400000"
-	mclk_freq	"19200000"
-	fsyn_master	"true"
-	fsync_freq	"48000"
-	tdm_slots	"2"
-	tdm_slot_width	"25"
-	tx_slots	"2"
-	rx_slots	"2"
-}
-
+DAI_CONFIG(SSP, 2, Baytrail Audio, Audio, I2S,
+	DAI_CLOCK(mclk, 19200000, slave),
+	DAI_CLOCK(bclk, 2400000, slave),
+	DAI_CLOCK(fsync, 48000, slave),
+	DAI_TDM(2, 24, 3, 3))
diff --git a/topology/reef-byt-rt5651.m4 b/topology/reef-byt-rt5651.m4
index e031807..4679343 100644
--- a/topology/reef-byt-rt5651.m4
+++ b/topology/reef-byt-rt5651.m4
@@ -1,5 +1,5 @@
 #
-# Topology for generic Baytrail board with no codec.
+# Topology for generic Baytrail board with no RT5651.
 #
 
 # Include topology builder
@@ -18,29 +18,40 @@ include(`dsps/byt.m4')
 #
 # Define the pipelines
 #
+# PCM0 ----> volume ---------------+
+#                                  |--low latency mixer ----> volume ---->  SSP2
+# PCM2 ----> SRC -----> volume ----+
+#                                  |
+# PCM3 ----> SRC -----> volume ----+
+#                                  |
+#           Tone -----> volume ----+
+#
+# PCM1 <---- Volume <---- SSP2
+#
 
-# Low Latency playback pipeline 1 on PCM 0
-PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 768, 768, 48, 1000, 0)
-
-# Low Latency capture pipeline 2 on PCM 1
-PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, 2, 1, 768, 768, 48, 1000, 0)
-
-# PCM Media Playback pipeline 3 on PCM 2
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 1536, 1536, 96, 2000, 1)
-
-# PCM Media Playback pipeline 4 on PCM 3
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 4, 3, 1536, 1536, 96, 2000, 1)
+# Low Latency playback pipeline 1 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 1 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
 
-# Tone Playback pipeline 5
-PIPELINE_ADD(sof/pipe-tone.m4, 5, 3072, 192, 4000, 2)
+# Low Latency capture pipeline 2 on PCM 1 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, 48, 1000, 0, 0, 0, 2)
 
+# PCM Media Playback pipeline 3 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 3 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 2, s32le, 96, 2000, 1, 0, 0, 3)
 
-#
-# DAI configuration
-#
+# PCM Media Playback pipeline 4 on PCM 3 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, 96, 2000, 1, 0, 0, 4)
 
-# SSP port 2 is our pipeline DAI
-DAI_ADD(sof/pipe-dai.m4, SSP2, I2S Audio, NPIPELINE_BUFFER(2, 0), NPIPELINE_BUFFER(1, 3))
+# Tone Playback pipeline 5 using max 2 channels of s32le.
+# Schedule 192 frames per 4000us deadline on core 0 with priority 2
+PIPELINE_ADD(sof/pipe-tone.m4, 5, 2, s32le, 192, 4000, 2, 0)
 
 # Connect pipelines together
 SectionGraph."pipe-byt-rt5651" {
@@ -48,29 +59,31 @@ SectionGraph."pipe-byt-rt5651" {
 
 	lines [
 		# media 0
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(3, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_3)
 		# media 1
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(4, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_4)
 		#tone
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(5, 1))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_5)
 	]
 }
 
+#
+# DAI configuration
+#
+# SSP port 2 is our only pipeline DAI
+#
+
+# playback DAI is SSP2 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-playback.m4, SSP, 2, I2S, PIPELINE_SOURCE_1, 2)
+
+# capture DAI is SSP2 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-capture.m4, SSP, 2, I2S, PIPELINE_SINK_2, 2)
 
 #
 # BE configurations - overrides config in ACPI if present
 #
-SectionHWConfig."SSP2" {
-
-	id 		"2"
-	format 		"I2S"
-	bclk_master	"true"
-	bclk_freq	"2400000"
-	mclk_freq	"19200000"
-	fsyn_master	"true"
-	fsync_freq	"48000"
-	tdm_slots	"2"
-	tdm_slot_width	"25"
-	tx_slots	"2"
-	rx_slots	"2"
-}
+DAI_CONFIG(SSP, 2, Baytrail Audio, Audio, I2S,
+	DAI_CLOCK(mclk, 19200000, slave),
+	DAI_CLOCK(bclk, 2400000, slave),
+	DAI_CLOCK(fsync, 48000, slave),
+	DAI_TDM(2, 24, 3, 3))
diff --git a/topology/reef-cht-nocodec.m4 b/topology/reef-cht-nocodec.m4
index 6ceed8e..f754551 100644
--- a/topology/reef-cht-nocodec.m4
+++ b/topology/reef-cht-nocodec.m4
@@ -18,29 +18,40 @@ include(`dsps/cht.m4')
 #
 # Define the pipelines
 #
+# PCM0 ----> volume ---------------+
+#                                  |--low latency mixer ----> volume ---->  SSP2
+# PCM2 ----> SRC -----> volume ----+
+#                                  |
+# PCM3 ----> SRC -----> volume ----+
+#                                  |
+#           Tone -----> volume ----+
+#
+# PCM1 <---- Volume <---- SSP2
+#
 
-# Low Latency playback pipeline 1 on PCM 0
-PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 768, 768, 48, 1000, 0)
-
-# Low Latency capture pipeline 2 on PCM 1
-PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, 2, 1, 768, 768, 48, 1000, 0)
+# Low Latency playback pipeline 1 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 1 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
 
-# PCM Media Playback pipeline 3 on PCM 2
-#PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 1536, 1536, 96, 2000, 1)
+# Low Latency capture pipeline 2 on PCM 1 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, 48, 1000, 0, 0, 0, 2)
 
-# PCM Media Playback pipeline 4 on PCM 3
-#PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 4, 3, 1536, 1536, 96, 2000, 1)
+# PCM Media Playback pipeline 3 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 3 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 2, s32le, 96, 2000, 1, 0, 0, 3)
 
-# Tone Playback pipeline 5
-#PIPELINE_ADD(sof/pipe-tone.m4, 5, 3072, 192, 4000, 2)
+# PCM Media Playback pipeline 4 on PCM 3 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, 96, 2000, 1, 0, 0, 4)
 
-
-#
-# DAI configuration
-#
-
-# SSP port 2 is our pipeline DAI
-DAI_ADD(sof/pipe-dai.m4, SSP2, I2S, NPIPELINE_BUFFER(2, 0), NPIPELINE_BUFFER(1, 3))
+# Tone Playback pipeline 5 using max 2 channels of s32le.
+# Schedule 192 frames per 4000us deadline on core 0 with priority 2
+PIPELINE_ADD(sof/pipe-tone.m4, 5, 2, s32le, 192, 4000, 2, 0)
 
 # Connect pipelines together
 SectionGraph."pipe-cht-nocodec" {
@@ -48,30 +59,31 @@ SectionGraph."pipe-cht-nocodec" {
 
 	lines [
 		# media 0
-#		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(3, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_3)
 		# media 1
-#		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(4, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_4)
 		#tone
-#		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(5, 1))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_5)
 	]
 }
 
 #
-# BE configurations - overrides config in ACPI if present
+# DAI configuration
 #
-SectionHWConfig."SSP2" {
-
-	id 		"2"
-	format 		"I2S"
-	bclk		"master"
-	bclk_freq	"2400000"
-	mclk		"master"
-	mclk_freq	"19200000"
-	fsync		"master"
-	fsync_freq	"48000"
-	tdm_slots	"2"
-	tdm_slot_width	"25"
-	tx_slots	"2"
-	rx_slots	"2"
-}
+# SSP port 2 is our only pipeline DAI
+#
+
+# playback DAI is SSP2 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-playback.m4, SSP, 2, I2S, PIPELINE_SOURCE_1, 2)
 
+# capture DAI is SSP2 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-capture.m4, SSP, 2, I2S, PIPELINE_SINK_2, 2)
+
+#
+# BE configurations - overrides config in ACPI if present
+#
+DAI_CONFIG(SSP, 2, NoCodec, I2S, I2S,
+	DAI_CLOCK(mclk, 19200000, slave),
+	DAI_CLOCK(bclk, 2400000, slave),
+	DAI_CLOCK(fsync, 48000, slave),
+	DAI_TDM(2, 24, 3, 3))
diff --git a/topology/reef-hsw-rt5640.m4 b/topology/reef-hsw-rt5640.m4
index 0648df2..cbbbfbe 100644
--- a/topology/reef-hsw-rt5640.m4
+++ b/topology/reef-hsw-rt5640.m4
@@ -18,29 +18,40 @@ include(`dsps/hsw.m4')
 #
 # Define the pipelines
 #
+# PCM0 ----> volume ---------------+
+#                                  |--low latency mixer ----> volume ---->  SSP2
+# PCM2 ----> SRC -----> volume ----+
+#                                  |
+# PCM3 ----> SRC -----> volume ----+
+#                                  |
+#           Tone -----> volume ----+
+#
+# PCM1 <---- Volume <---- SSP0
+#
 
-# Low Latency playback pipeline 1 on PCM 0
-PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 768, 768, 48, 1000, 0)
-
-# Low Latency capture pipeline 2 on PCM 1
-PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, 2, 1, 768, 768, 48, 1000, 0)
-
-# PCM Media Playback pipeline 3 on PCM 2
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 1536, 1536, 96, 2000, 1)
-
-# PCM Media Playback pipeline 4 on PCM 3
-PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 4, 3, 1536, 1536, 96, 2000, 1)
+# Low Latency playback pipeline 1 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 1 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, 1, 0, 2, s32le, 48, 1000, 0, 0, 0, 1)
 
-# Tone Playback pipeline 5
-PIPELINE_ADD(sof/pipe-tone.m4, 5, 3072, 192, 4000, 2)
+# Low Latency capture pipeline 2 on PCM 1 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, 48, 1000, 0, 0, 0, 2)
 
+# PCM Media Playback pipeline 3 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 3 for PCM audio playback data
+PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, 3, 2, 2, s32le, 96, 2000, 1, 0, 0, 3)
 
-#
-# DAI configuration
-#
+# PCM Media Playback pipeline 4 on PCM 3 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, 96, 2000, 1, 0, 0, 4)
 
-# SSP port 2 is our pipeline DAI
-DAI_ADD(sof/pipe-dai.m4, SSP2, I2S Audio, NPIPELINE_BUFFER(2, 0), NPIPELINE_BUFFER(1, 3))
+# Tone Playback pipeline 5 using max 2 channels of s32le.
+# Schedule 192 frames per 4000us deadline on core 0 with priority 2
+PIPELINE_ADD(sof/pipe-tone.m4, 5, 2, s32le, 192, 4000, 2, 0)
 
 # Connect pipelines together
 SectionGraph."pipe-hsw-rt5640" {
@@ -48,29 +59,31 @@ SectionGraph."pipe-hsw-rt5640" {
 
 	lines [
 		# media 0
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(3, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_3)
 		# media 1
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(4, 2))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_4)
 		#tone
-		dapm(NPIPELINE_MIXER(1, 0), NPIPELINE_BUFFER(5, 1))
+		dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_5)
 	]
 }
 
+#
+# DAI configuration
+#
+# SSP port 0 is our only pipeline DAI
+#
+
+# playback DAI is SSP0 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-playback.m4, SSP, 0, I2S, PIPELINE_SOURCE_1, 2)
+
+# capture DAI is SSP0 using I2S DAPM stream and 2 periods
+DAI_ADD(sof/pipe-dai-capture.m4, SSP, 0, I2S, PIPELINE_SINK_2, 2)
 
 #
 # BE configurations - overrides config in ACPI if present
 #
-SectionHWConfig."SSP0" {
-
-	id 		"2"
-	format 		"I2S"
-	bclk_master	"true"
-	bclk_freq	"2400000"
-	mclk_freq	"24000000"
-	fsyn_master	"true"
-	fsync_freq	"48000"
-	tdm_slots	"2"
-	tdm_slot_width	"25"
-	tx_slots	"2"
-	rx_slots	"2"
-}
+DAI_CONFIG(SSP, 0, Codec, I2S, I2S,
+	DAI_CLOCK(mclk, 24000000, slave),
+	DAI_CLOCK(bclk, 2400000, slave),
+	DAI_CLOCK(fsync, 48000, slave),
+	DAI_TDM(2, 24, 3, 3))
-- 
2.11.0



More information about the Sound-open-firmware mailing list