Skip to content

Up2 with nocodec topology: DSP panic with 6 SSPs #253

@plbossart

Description

@plbossart

With the usual 6 SSP+1DMIC topology the DSP panics. When the SSP5 is commented out from the topology file things work fine.
I suspect an off-by-one error. Filing as a kernel bug for now but this is more of a firmware issue I suspect.

Differences in the topology file to make things work:

diff --git a/topology/sof-apl-nocodec.m4 b/topology/sof-apl-nocodec.m4
index 2a99560..711589f 100644
--- a/topology/sof-apl-nocodec.m4
+++ b/topology/sof-apl-nocodec.m4
@@ -100,17 +100,17 @@ PIPELINE_PCM_ADD(sof/pipe-volume-capture.m4,
 	10, 4, 2, s16le,
 	48, 1000, 0, 0)
 
-# Low Latency playback pipeline 11 on PCM 5 using max 2 channels of s16le.
-# Schedule 48 frames per 1000us deadline on core 0 with priority 0
-PIPELINE_PCM_ADD(sof/pipe-volume-playback.m4,
-	11, 5, 2, s16le,
-	48, 1000, 0, 0)
-
-# Low Latency capture pipeline 12 on PCM 5 using max 2 channels of s16le.
-# Schedule 48 frames per 1000us deadline on core 0 with priority 0
-PIPELINE_PCM_ADD(sof/pipe-volume-capture.m4,
-	12, 5, 2, s16le,
-	48, 1000, 0, 0)
+# # Low Latency playback pipeline 11 on PCM 5 using max 2 channels of s16le.
+# # Schedule 48 frames per 1000us deadline on core 0 with priority 0
+# PIPELINE_PCM_ADD(sof/pipe-volume-playback.m4,
+# 	11, 5, 2, s16le,
+# 	48, 1000, 0, 0)
+
+# # Low Latency capture pipeline 12 on PCM 5 using max 2 channels of s16le.
+# # Schedule 48 frames per 1000us deadline on core 0 with priority 0
+# PIPELINE_PCM_ADD(sof/pipe-volume-capture.m4,
+# 	12, 5, 2, s16le,
+# 	48, 1000, 0, 0)
 
 # Passthrough capture pipeline 13 on PCM 6 using max 2 channels.
 # Schedule 48 frames per 1000us deadline on core 0 with priority 0
@@ -197,26 +197,26 @@ DAI_ADD(sof/pipe-dai-capture.m4,
 	PIPELINE_SINK_10, 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,
-	11, SSP, 5, NoCodec-5,
-	PIPELINE_SOURCE_11, 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,
-	12, SSP, 5, NoCodec-5,
-	PIPELINE_SINK_12, 2, s16le,
-	48, 1000, 0, 0)
-
-# capture DAI is DMIC 0 using 2 periods
-# Buffers use s32le format, with 48 frame per 1000us on core 0 with priority 0
-DAI_ADD(sof/pipe-dai-capture.m4,
-	13, DMIC, 0, NoCodec-6,
-	PIPELINE_SINK_13, 2, s32le,
-	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,
+# 	11, SSP, 5, NoCodec-5,
+# 	PIPELINE_SOURCE_11, 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,
+# 	12, SSP, 5, NoCodec-5,
+# 	PIPELINE_SINK_12, 2, s16le,
+# 	48, 1000, 0, 0)
+
+# # capture DAI is DMIC 0 using 2 periods
+# # Buffers use s32le format, with 48 frame per 1000us on core 0 with priority 0
+# DAI_ADD(sof/pipe-dai-capture.m4,
+# 	13, DMIC, 0, NoCodec-6,
+# 	PIPELINE_SINK_13, 2, s32le,
+# 	48, 1000, 0, 0)
 
 dnl PCM_DUPLEX_ADD(name, pcm_id, playback, capture)
 PCM_DUPLEX_ADD(Port0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2)
@@ -224,7 +224,7 @@ PCM_DUPLEX_ADD(Port1, 1, PIPELINE_PCM_3, PIPELINE_PCM_4)
 PCM_DUPLEX_ADD(Port2, 2, PIPELINE_PCM_5, PIPELINE_PCM_6)
 PCM_DUPLEX_ADD(Port3, 3, PIPELINE_PCM_7, PIPELINE_PCM_8)
 PCM_DUPLEX_ADD(Port4, 4, PIPELINE_PCM_9, PIPELINE_PCM_10)
-PCM_DUPLEX_ADD(Port5, 5, PIPELINE_PCM_11, PIPELINE_PCM_12)
+#PCM_DUPLEX_ADD(Port5, 5, PIPELINE_PCM_11, PIPELINE_PCM_12)
 dnl PCM_CAPTURE_ADD(name, pipeline, capture)
 PCM_CAPTURE_ADD(DMIC01, 6, PIPELINE_PCM_13)
 
@@ -270,12 +270,12 @@ DAI_CONFIG(SSP, 4, 4, NoCodec-4,
 		      SSP_TDM(2, 16, 3, 3),
 		      SSP_CONFIG_DATA(SSP, 4, 16)))
 
-DAI_CONFIG(SSP, 5, 5, NoCodec-5,
-	   SSP_CONFIG(I2S, SSP_CLOCK(mclk, 24576000, codec_mclk_in),
-		      SSP_CLOCK(bclk, 1536000, codec_slave),
-		      SSP_CLOCK(fsync, 48000, codec_slave),
-		      SSP_TDM(2, 16, 3, 3),
-		      SSP_CONFIG_DATA(SSP, 5, 16)))
+# DAI_CONFIG(SSP, 5, 5, NoCodec-5,
+# 	   SSP_CONFIG(I2S, SSP_CLOCK(mclk, 24576000, codec_mclk_in),
+# 		      SSP_CLOCK(bclk, 1536000, codec_slave),
+# 		      SSP_CLOCK(fsync, 48000, codec_slave),
+# 		      SSP_TDM(2, 16, 3, 3),
+# 		      SSP_CONFIG_DATA(SSP, 5, 16)))
 
 DAI_CONFIG(DMIC, 0, 6, NoCodec-6,
 	   dnl DMIC_CONFIG(driver_version, clk_min, clk_mac, duty_min, duty_max,

Metadata

Metadata

Assignees

Labels

P1Blocker bugs or important featuresbugSomething isn't workingduplicateThis issue or pull request already existsfirmwareProved to be a firmware issue

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions