[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