From ceabe95d6b3bfb32b074136ce8b45637d22edd62 Mon Sep 17 00:00:00 2001 From: Fred Oh Date: Mon, 16 Nov 2020 12:47:54 -0800 Subject: [PATCH] topology: icl-nocodec: enable more SSP and DMIC pipelines Previously sof-icl-nocodec topology only enabled SSP0. To effectively test more test cases, this enables more playback and capture pipelines with SSP1, SSP2 and DMIC3. Signed-off-by: Fred Oh --- tools/topology/sof-icl-nocodec.m4 | 106 ++++++++++++++++++++++++++++-- 1 file changed, 100 insertions(+), 6 deletions(-) diff --git a/tools/topology/sof-icl-nocodec.m4 b/tools/topology/sof-icl-nocodec.m4 index 4bffe76ee..a973db93c 100644 --- a/tools/topology/sof-icl-nocodec.m4 +++ b/tools/topology/sof-icl-nocodec.m4 @@ -20,7 +20,10 @@ include(`platform/intel/'PLATFORM`.m4') # # Define the pipelines # -# PCM0 <---> Volume <---> SSP0 (NoCodec) +# PCM0 <---> Volume <---> SSP0 +# PCM1 <---> Volume <---> SSP1 +# PCM2 <---> volume <---> SSP2 +# PCM3 <---- volume <---- DMIC3 (DMIC01) # dnl PIPELINE_PCM_ADD(pipeline, @@ -30,24 +33,57 @@ dnl pcm_min_rate, pcm_max_rate, pipeline_rate, dnl time_domain, sched_comp) # Low Latency playback pipeline 1 on PCM 0 using max 2 channels of s24le. -# 1000us deadline on core 0 with priority 0 +# Set 1000us deadline on core 0 with priority 0 PIPELINE_PCM_ADD(sof/pipe-volume-playback.m4, 1, 0, 2, s24le, 1000, 0, 0, 48000, 48000, 48000) # Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s24le. -# 1000us deadline on core 0 with priority 0 +# Set 1000us deadline on core 0 with priority 0 PIPELINE_PCM_ADD(sof/pipe-volume-capture.m4, 2, 0, 2, s24le, 1000, 0, 0, 48000, 48000, 48000) +# Low Latency playback pipeline 3 on PCM 1 using max 2 channels of s24le. +# Set 1000us deadline on core 0 with priority 0 +PIPELINE_PCM_ADD(sof/pipe-volume-playback.m4, + 3, 1, 2, s24le, + 1000, 0, 0, + 48000, 48000, 48000) + +# Low Latency capture pipeline 4 on PCM 1 using max 2 channels of s24le. +# Set 1000us deadline on core 0 with priority 0 +PIPELINE_PCM_ADD(sof/pipe-volume-capture.m4, + 4, 1, 2, s24le, + 1000, 0, 0, + 48000, 48000, 48000) + +# Low Latency playback pipeline 5 on PCM 2 using max 2 channels of s24le. +# Set 1000us deadline on core 0 with priority 0 +PIPELINE_PCM_ADD(sof/pipe-volume-playback.m4, + 5, 2, 2, s24le, + 1000, 0, 0, + 48000, 48000, 48000) + +# Low Latency capture pipeline 6 on PCM 2 using max 2 channels of s24le. +# Set 1000us deadline on core 0 with priority 0 +PIPELINE_PCM_ADD(sof/pipe-volume-capture.m4, + 6, 2, 2, s24le, + 1000, 0, 0, + 48000, 48000, 48000) + +# Passthrough capture pipeline 7 on PCM 3 using max 4 channels. +# Set 1000us deadline on core 0 with priority 0 +PIPELINE_PCM_ADD(sof/pipe-passthrough-capture.m4, + 7, 3, 4, s32le, + 1000, 0, 0, + 48000, 48000, 48000) + # # DAI configuration # -# SSP port 0 is our only pipeline DAI -# dnl DAI_ADD(pipeline, dnl pipe id, dai type, dai_index, dai_be, @@ -68,9 +104,48 @@ DAI_ADD(sof/pipe-dai-capture.m4, PIPELINE_SINK_2, 2, s24le, 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) +# playback DAI is SSP1 using 2 periods +# Buffers use s24le format, 1000us deadline on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-playback.m4, + 3, SSP, 1, NoCodec-1, + PIPELINE_SOURCE_3, 2, s24le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) + +# capture DAI is SSP1 using 2 periods +# Buffers use s24le format, 1000us deadline on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-capture.m4, + 4, SSP, 1, NoCodec-1, + PIPELINE_SINK_4, 2, s24le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) + +# playback DAI is SSP2 using 2 periods +# Buffers use s24le format, 1000us deadline on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-playback.m4, + 5, SSP, 2, NoCodec-2, + PIPELINE_SOURCE_5, 2, s24le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) + +# capture DAI is SSP2 using 2 periods +# Buffers use s24le format, 1000us deadline on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-capture.m4, + 6, SSP, 2, NoCodec-2, + PIPELINE_SINK_6, 2, s24le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) + +# capture DAI is DMIC 0 using 2 periods +# Buffers use s32le format, 1000us deadline on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-capture.m4, + 7, DMIC, 0, NoCodec-3, + PIPELINE_SINK_7, 2, s32le, + 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) + +dnl PCM_DUPLEX_ADD(name, pcm_id, playback, capture) # PCM Low Latency PCM_DUPLEX_ADD(Passthrough, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) - +PCM_DUPLEX_ADD(Port1, 1, PIPELINE_PCM_3, PIPELINE_PCM_4) +PCM_DUPLEX_ADD(Port2, 2, PIPELINE_PCM_5, PIPELINE_PCM_6) +dnl PCM_CAPTURE_ADD(name, pipeline, capture) +PCM_CAPTURE_ADD(DMIC, 3, PIPELINE_PCM_7) # # BE configurations - overrides config in ACPI if present # @@ -80,3 +155,22 @@ DAI_CONFIG(SSP, 0, 0, NoCodec-0, SSP_CLOCK(fsync, 48000, codec_slave), SSP_TDM(2, 25, 3, 3), SSP_CONFIG_DATA(SSP, 0, 24, 0, SSP_QUIRK_LBM))) + +DAI_CONFIG(SSP, 1, 1, NoCodec-1, + SSP_CONFIG(DSP_B, SSP_CLOCK(mclk, 38400000, codec_mclk_in), + SSP_CLOCK(bclk, 2400000, codec_slave), + SSP_CLOCK(fsync, 48000, codec_slave), + SSP_TDM(2, 25, 3, 3), + SSP_CONFIG_DATA(SSP, 1, 24, 0, SSP_QUIRK_LBM))) + +DAI_CONFIG(SSP, 2, 2, NoCodec-2, + SSP_CONFIG(DSP_B, SSP_CLOCK(mclk, 38400000, codec_mclk_in), + SSP_CLOCK(bclk, 2400000, codec_slave), + SSP_CLOCK(fsync, 48000, codec_slave), + SSP_TDM(2, 25, 3, 3), + SSP_CONFIG_DATA(SSP, 2, 24, 0, SSP_QUIRK_LBM))) + +DAI_CONFIG(DMIC, 0, 3, NoCodec-3, + DMIC_CONFIG(1, 2400000, 4800000, 40, 60, 48000, + DMIC_WORD_LENGTH(s32le), 400, DMIC, 0, + PDM_CONFIG(DMIC, 0, FOUR_CH_PDM0_PDM1)))