[Sound-open-firmware] [PATCH 2/2] Topology: sof-apl-tdf8532: enable all 6 SSPs and pipelines.

Keyon Jie yang.jie at linux.intel.com
Thu May 31 16:31:20 CEST 2018


Todo: to confirm and refine settings for each SSP/dai.

Signed-off-by: Keyon Jie <yang.jie at linux.intel.com>
---
Test with:
APL-MRB with tdf8532 codec
Linux topic/sof-v4.14: 3ffd39334cb53aced88b8aba17cae3df9ee2736f
SOF master: 48a61423f6c2d2bcf5fad854a9b3d37dfb43b546
Tool master: 7ee114d2ed822a0dbfc0dc3a37fd5c4977e00be8
---
 topology/sof-apl-tdf8532.m4 | 149 +++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 142 insertions(+), 7 deletions(-)

diff --git a/topology/sof-apl-tdf8532.m4 b/topology/sof-apl-tdf8532.m4
index b897346..c737a65 100644
--- a/topology/sof-apl-tdf8532.m4
+++ b/topology/sof-apl-tdf8532.m4
@@ -20,8 +20,15 @@ include(`dsps/bxt.m4')
 # Define the pipelines
 #
 # PCM0 ----> volume -----> SSP4
-# PCM1 ----> volume -----> SSP2
-# PCM2 <---- Volume <----- SSP2
+# PCM1 ----> volume -----> SSP2(Dirana Pb)
+#      <---- Volume <----- SSP2(Dirana Cp)
+# PCM2 ----> volume -----> SSP0(BT HFP out)
+#      <---- volume <----- SSP0(BT HFP in)
+# PCM3 <---- Volume <----- SSP1(HDMI in)
+# PCM4 ----> volume -----> SSP3(Modem out)
+#      <---- volume <----- SSP3(Modem in)
+# PCM5 ----> volume -----> SSP5(TestPin out)
+#      <---- volume <----- SSP3(TestPin in)
 #
 
 # Low Latency playback pipeline 1 on PCM 0 using max 4 channels of s32le.
@@ -31,21 +38,72 @@ PIPELINE_PCM_DAI_ADD(sof/pipe-volume-playback.m4,
 	1, 0, 4, s32le,
 	48, 1000, 0, 0, 0, 1, SSP, 4, s32le, 2)
 
-# Low Latency playback pipeline 3 on PCM 1 using max 4 channels of s32le.
+# Low Latency playback pipeline 2 on PCM 1 using max 2 channels of s16le.
 # Schedule 48 frames per 1000us deadline on core 0 with priority 0
 # Use DMAC 0 channel 1 for PCM audio playback data
 PIPELINE_PCM_DAI_ADD(sof/pipe-volume-playback.m4,
 	2, 1, 2, s16le,
 	48, 1000, 0, 0, 0, 1, SSP, 2, s16le, 2)
 
-# Low Latency playback pipeline 1 on PCM 0 using max 4 channels of s32le.
+# Low Latency capture pipeline 3 on PCM 1 using max 2 channels of s16le.
 # Schedule 48 frames per 1000us deadline on core 0 with priority 0
 # Use DMAC 0 channel 1 for PCM audio playback data
 PIPELINE_PCM_DAI_ADD(sof/pipe-volume-capture.m4,
 	3, 1, 2, s16le,
 	48, 1000, 0, 0, 0, 1, SSP, 2, s16le, 2)
+
+# Low Latency playback pipeline 4 on PCM 2 using max 2 channels of s16le.
+# Schedule 48 frames per 1000us deadline on core 0 with priority 0
+# Use DMAC 0 channel 1 for PCM audio playback data
+PIPELINE_PCM_DAI_ADD(sof/pipe-volume-playback.m4,
+	4, 2, 2, s16le,
+	48, 1000, 0, 0, 0, 1, SSP, 0, s16le, 2)
+
+# Low Latency capture pipeline 5 on PCM 2 using max 2 channels of s16le.
+# Schedule 48 frames per 1000us deadline on core 0 with priority 0
+# Use DMAC 0 channel 1 for PCM audio playback data
+PIPELINE_PCM_DAI_ADD(sof/pipe-volume-capture.m4,
+	5, 2, 2, s16le,
+	48, 1000, 0, 0, 0, 1, SSP, 0, s16le, 2)
+
+# Low Latency capture pipeline 6 on PCM 3 using max 2 channels of s16le.
+# Schedule 48 frames per 1000us deadline on core 0 with priority 0
+# Use DMAC 0 channel 1 for PCM audio playback data
+PIPELINE_PCM_DAI_ADD(sof/pipe-volume-capture.m4,
+	6, 3, 2, s16le,
+	48, 1000, 0, 0, 0, 1, SSP, 1, s16le, 2)
+
+# Low Latency playback pipeline 7 on PCM 4 using max 2 channels of s16le.
+# Schedule 48 frames per 1000us deadline on core 0 with priority 0
+# Use DMAC 0 channel 1 for PCM audio playback data
+PIPELINE_PCM_DAI_ADD(sof/pipe-volume-playback.m4,
+	7, 4, 2, s16le,
+	48, 1000, 0, 0, 0, 1, SSP, 3, s16le, 2)
+
+# Low Latency capture pipeline 8 on PCM 4 using max 2 channels of s16le.
+# Schedule 48 frames per 1000us deadline on core 0 with priority 0
+# Use DMAC 0 channel 1 for PCM audio playback data
+PIPELINE_PCM_DAI_ADD(sof/pipe-volume-capture.m4,
+	8, 4, 2, s16le,
+	48, 1000, 0, 0, 0, 1, SSP, 3, s16le, 2)
+
+# Low Latency playback pipeline 9 on PCM 5 using max 2 channels of s16le.
+# Schedule 48 frames per 1000us deadline on core 0 with priority 0
+# Use DMAC 0 channel 1 for PCM audio playback data
+PIPELINE_PCM_DAI_ADD(sof/pipe-volume-playback.m4,
+	9, 5, 2, s16le,
+	48, 1000, 0, 0, 0, 1, SSP, 5, s16le, 2)
+
+# Low Latency capture pipeline 10 on PCM 5 using max 2 channels of s16le.
+# Schedule 48 frames per 1000us deadline on core 0 with priority 0
+# Use DMAC 0 channel 1 for PCM audio playback data
+PIPELINE_PCM_DAI_ADD(sof/pipe-volume-capture.m4,
+	10, 5, 2, s16le,
+	48, 1000, 0, 0, 0, 1, SSP, 5, s16le, 2)
+
+
 #
-# DAI configuration
+# DAIs configuration
 #
 
 # playback DAI is SSP4 using 2 periods
@@ -69,9 +127,62 @@ DAI_ADD(sof/pipe-dai-capture.m4,
 	PIPELINE_SINK_3, 2, s16le,
 	48, 1000, 0, 0)
 
+# playback DAI is SSP0 using 2 periods
+# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0
+DAI_ADD(sof/pipe-dai-playback.m4,
+	4, SSP, 0, SSP0-Codec,
+	PIPELINE_SOURCE_4, 2, s16le,
+	48, 1000, 0, 0)
+
+# capture DAI is SSP0 using 2 periods
+# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0
+DAI_ADD(sof/pipe-dai-capture.m4,
+	5, SSP, 0, SSP0-Codec,
+	PIPELINE_SINK_5, 2, s16le,
+	48, 1000, 0, 0)
+
+# capture DAI is SSP1 using 2 periods
+# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0
+DAI_ADD(sof/pipe-dai-capture.m4,
+	6, SSP, 1, SSP1-Codec,
+	PIPELINE_SINK_6, 2, s16le,
+	48, 1000, 0, 0)
+
+# playback DAI is SSP3 using 2 periods
+# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0
+DAI_ADD(sof/pipe-dai-playback.m4,
+	7, SSP, 3, SSP3-Codec,
+	PIPELINE_SOURCE_7, 2, s16le,
+	48, 1000, 0, 0)
+
+# capture DAI is SSP3 using 2 periods
+# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0
+DAI_ADD(sof/pipe-dai-capture.m4,
+	8, SSP, 3, SSP3-Codec,
+	PIPELINE_SINK_8, 2, s16le,
+	48, 1000, 0, 0)
+
+# playback DAI is SSP5 using 2 periods
+# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0
+DAI_ADD(sof/pipe-dai-playback.m4,
+	9, SSP, 5, SSP5-Codec,
+	PIPELINE_SOURCE_9, 2, s16le,
+	48, 1000, 0, 0)
+
+# capture DAI is SSP5 using 2 periods
+# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0
+DAI_ADD(sof/pipe-dai-capture.m4,
+	10, SSP, 5, SSP5-Codec,
+	PIPELINE_SINK_10, 2, s16le,
+	48, 1000, 0, 0)
+
 # PCM Low Latency, id 0
-PCM_PLAYBACK_ADD(Port4, 1, 0, 0, PIPELINE_PCM_1)
-PCM_DUPLEX_ADD(Port2, 4, 1, 1, PIPELINE_PCM_2, PIPELINE_PCM_3)
+PCM_PLAYBACK_ADD(Port4, 0, 0, 0, PIPELINE_PCM_1)
+PCM_DUPLEX_ADD(Port2, 1, 1, 1, PIPELINE_PCM_2, PIPELINE_PCM_3)
+PCM_DUPLEX_ADD(Port0, 2, 2, 2, PIPELINE_PCM_4, PIPELINE_PCM_5)
+PCM_CAPTURE_ADD(Port1, 3, 3, 3, PIPELINE_PCM_6)
+PCM_DUPLEX_ADD(Port3, 4, 4, 4, PIPELINE_PCM_7, PIPELINE_PCM_8)
+PCM_DUPLEX_ADD(Port5, 5, 5, 5, PIPELINE_PCM_9, PIPELINE_PCM_10)
 
 #
 # BE configurations - overrides config in ACPI if present
@@ -88,6 +199,30 @@ DAI_CONFIG(SSP, 2, 2, SSP2-Codec, I2S, 16,
 	DAI_CLOCK(fsync, 48000, codec_slave),
 	DAI_TDM(2, 16, 3, 3))
 
+DAI_CONFIG(SSP, 0, 0, SSP0-Codec, I2S, 16,
+	DAI_CLOCK(mclk, 24576000, codec_mclk_in),
+	DAI_CLOCK(bclk, 1536000, codec_slave),
+	DAI_CLOCK(fsync, 48000, codec_slave),
+	DAI_TDM(2, 16, 3, 3))
+
+DAI_CONFIG(SSP, 1, 1, SSP1-Codec, I2S, 16,
+	DAI_CLOCK(mclk, 24576000, codec_mclk_in),
+	DAI_CLOCK(bclk, 1536000, codec_slave),
+	DAI_CLOCK(fsync, 48000, codec_slave),
+	DAI_TDM(2, 16, 3, 3))
+
+DAI_CONFIG(SSP, 3, 3, SSP3-Codec, I2S, 16,
+	DAI_CLOCK(mclk, 24576000, codec_mclk_in),
+	DAI_CLOCK(bclk, 1536000, codec_slave),
+	DAI_CLOCK(fsync, 48000, codec_slave),
+	DAI_TDM(2, 16, 3, 3))
+
+DAI_CONFIG(SSP, 5, 5, SSP5-Codec, I2S, 16,
+	DAI_CLOCK(mclk, 24576000, codec_mclk_in),
+	DAI_CLOCK(bclk, 1536000, codec_slave),
+	DAI_CLOCK(fsync, 48000, codec_slave),
+	DAI_TDM(2, 16, 3, 3))
+
 VIRTUAL_DAPM_ROUTE_IN(BtHfp_ssp0_in, SSP, 0, IN, 0)
 VIRTUAL_DAPM_ROUTE_OUT(BtHfp_ssp0_out, SSP, 0, OUT, 1)
 VIRTUAL_DAPM_ROUTE_IN(hdmi_ssp1_in, SSP, 1, IN, 2)
-- 
2.14.1



More information about the Sound-open-firmware mailing list