diff --git a/tools/topology/topology1/CMakeLists.txt b/tools/topology/topology1/CMakeLists.txt index be3295805250..a321e37a7066 100644 --- a/tools/topology/topology1/CMakeLists.txt +++ b/tools/topology/topology1/CMakeLists.txt @@ -100,17 +100,18 @@ set(TPLGS "sof-icl-rt711-rt1308-rt715-hdmi\;sof-cml-rt711-rt1308-rt715\;-DPLATFORM=cml" "sof-icl-rt711-rt1308-rt715-hdmi\;sof-icl-rt711-rt1308-rt715\;-DPLATFORM=icl" "sof-icl-rt711-rt1308-rt715-hdmi\;sof-tgl-rt711-rt1308-mono-rt715\;-DPLATFORM=tgl\;-DMONO\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DMIC_LINK=3" - "sof-icl-rt711-rt1308-rt715-hdmi\;sof-tgl-rt711-l0-rt1316-l1-mono-rt714-l3\;-DPLATFORM=tgl\;-DMONO\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DMIC_LINK=3" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-tgl-rt711-l0-rt1316-l1-mono-rt714-l3\;-DPLATFORM=tgl\;-DMONO\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DEXT_AMP_REF\;-DMIC_LINK=3" "sof-icl-rt711-rt1308-rt715-hdmi\;sof-tgl-rt715-rt711-rt1308-mono\;-DPLATFORM=tgl\;-DMONO\;-DUAJ_LINK=1\;-DAMP_1_LINK=2\;-DMIC_LINK=0" "sof-icl-rt711-rt1308-rt715-hdmi\;sof-tgl-rt711-rt1308-rt715\;-DPLATFORM=tgl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DMIC_LINK=3" - "sof-icl-rt711-rt1308-rt715-hdmi\;sof-tgl-rt711-rt1316-rt714\;-DPLATFORM=tgl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DMIC_LINK=3" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-tgl-rt711-rt1316-rt714\;-DPLATFORM=tgl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=3" "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l0-rt1308-l12-rt715-l3\;-DPLATFORM=adl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DMIC_LINK=3" - "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l0-rt1316-l12-rt714-l3\;-DPLATFORM=adl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DMIC_LINK=3" - "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l0-rt1316-l13-rt714-l2\;-DPLATFORM=adl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=3\;-DMIC_LINK=2" - "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt1316-l2-mono-rt714-l0\;-DPLATFORM=adl\;-DMONO\;-DNOJACK\;-DAMP_1_LINK=2\;-DMIC_LINK=0" - "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt1316-l12-rt714-l0\;-DPLATFORM=adl\;-DNOJACK\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DMIC_LINK=0" - "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt1316-l2-mono-rt714-l3\;-DPLATFORM=adl\;-DMONO\;-DNOJACK\;-DAMP_1_LINK=2\;-DMIC_LINK=3" - "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l2-rt1316-l01-rt714-l3\;-DPLATFORM=adl\;-DUAJ_LINK=2\;-DAMP_1_LINK=0\;-DAMP_2_LINK=1\;-DMIC_LINK=3" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l0-rt1316-l12-rt714-l3\;-DPLATFORM=adl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=3" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l0-rt1316-l13-rt714-l2\;-DPLATFORM=adl\;-DUAJ_LINK=0\;-DAMP_1_LINK=1\;-DAMP_2_LINK=3\;-DEXT_AMP_REF\;-DMIC_LINK=2" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt1316-l2-mono-rt714-l0\;-DPLATFORM=adl\;-DMONO\;-DNOJACK\;-DAMP_1_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=0" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt1316-l12-rt714-l0\;-DPLATFORM=adl\;-DNOJACK\;-DAMP_1_LINK=1\;-DAMP_2_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=0" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt1316-l2-mono-rt714-l3\;-DPLATFORM=adl\;-DMONO\;-DNOJACK\;-DAMP_1_LINK=2\;-DEXT_AMP_REF\;-DMIC_LINK=3" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l2-rt1316-l01-rt714-l3\;-DPLATFORM=adl\;-DUAJ_LINK=2\;-DAMP_1_LINK=0\;-DAMP_2_LINK=1\;-DEXT_AMP_REF\;-DMIC_LINK=3" + "sof-icl-rt711-rt1308-rt715-hdmi\;sof-adl-rt711-l2-rt1316-l01\;-DPLATFORM=adl\;-DUAJ_LINK=2\;-DAMP_1_LINK=0\;-DAMP_2_LINK=1\;-DEXT_AMP_REF\;-DNO_LOCAL_MIC" "sof-cml-rt5682\;sof-cml-rt5682\;-DPLATFORM=cml\;-DDMICPROC=eq-iir-volume\;-DDMIC16KPROC=eq-iir-volume" "sof-cml-rt5682\;sof-whl-rt5682\;-DPLATFORM=whl\;-DDMICPROC=eq-iir-volume\;-DDMIC16KPROC=eq-iir-volume" "sof-cml-rt5682\;sof-icl-rt5682\;-DPLATFORM=icl\;-DDMICPROC=eq-iir-volume\;-DDMIC16KPROC=eq-iir-volume" diff --git a/tools/topology/topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4 b/tools/topology/topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4 index 7fdad91de16b..11f26be8b202 100644 --- a/tools/topology/topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4 +++ b/tools/topology/topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4 @@ -31,6 +31,33 @@ ifdef(`AMP_2_LINK',`', ifdef(`MIC_LINK',`', `define(MIC_LINK, `3')') +# UAJ ID: 0, 1 +# AMP ID: 2, 3 (if EXT_AMP_REF defined) +# DMIC ID: 4 +# HDMI ID calculated based on the configuration +define(HDMI_BE_ID_BASE, `0') + +ifdef(`NO_JACK', `', + `undefine(`HDMI_BE_ID_BASE') + define(HDMI_BE_ID_BASE, `2')' +) + +ifdef(`NOAMP', `', + `undefine(`HDMI_BE_ID_BASE') + define(HDMI_BE_ID_BASE, `3')' +) + +ifdef(`EXT_AMP_REF', + `undefine(`HDMI_BE_ID_BASE') + define(HDMI_BE_ID_BASE, `4')', + `' +) + +ifdef(`NO_LOCAL_MIC', `', + `undefine(`HDMI_BE_ID_BASE') + define(HDMI_BE_ID_BASE, `5')' +) + DEBUG_START dnl Configure demux @@ -40,6 +67,8 @@ dnl copied to corresponding output channels in all output streams. dnl I.e. row index is the input channel, 1 means it is copied to dnl corresponding output channel (column index), 0 means it is discarded. dnl There's a separate matrix for all outputs. +ifdef(`NOAMP', `', +` ifdef(`MONO', `', ` define(matrix1, `ROUTE_MATRIX(3, @@ -65,19 +94,24 @@ define(matrix2, `ROUTE_MATRIX(4, dnl name, num_streams, route_matrix list MUXDEMUX_CONFIG(demux_priv_3, 2, LIST_NONEWLINE(`', `matrix1,', `matrix2')) ') +') # # Define the pipelines # ifdef(`NOJACK', `', ` -# PCM0 ---> volume ----> mixer --->ALH 2 BE dailink 0 -# PCM1 <--- volume <---- ALH 3 BE dailink 1 +# PCM0 ---> volume ----> mixer --->ALH 2 BE UAJ_LINK +# PCM1 <--- volume <---- ALH 3 BE UAJ_LINK ') -# PCM2 ---> volume ----> ALH 2 BE dailink 2 +ifdef(`NOAMP', `', +` +# PCM2 ---> volume ----> ALH 2 BE AMP_1_LINK ifdef(`MONO', `', -`# PCM40 ---> volume ----> ALH 2 BE dailink 3') -# PCM4 <--- volume <---- ALH 2 BE dailink 4 +`# PCM40 ---> volume ----> ALH 2 BE AMP_2_LINK') +') +ifdef(`NO_LOCAL_MIC', `', +`# PCM4 <--- volume <---- ALH 2 BE MIC_LINK') # PCM5 ---> volume ----> iDisp1 # PCM6 ---> volume ----> iDisp2 # PCM7 ---> volume ----> iDisp3 @@ -98,6 +132,8 @@ PIPELINE_PCM_ADD(sof/pipe-volume-switch-capture.m4, 48000, 48000, 48000) ') +ifdef(`NOAMP', `', +` ifdef(`MONO', ` # Low Latency playback pipeline 3 on PCM 2 using max 2 channels of s32le. @@ -110,27 +146,29 @@ PIPELINE_PCM_ADD(sof/pipe-volume-playback.m4, ` # Low Latency playback pipeline 3 on PCM 2 using max 2 channels of s32le. # Schedule 48 frames per 1000us deadline with priority 0 on core 0 -PIPELINE_PCM_ADD(ifdef(`NO_AGGREGATION',`sof/pipe-volume-playback.m4', - `sof/pipe-volume-demux-playback.m4'), +PIPELINE_PCM_ADD(sof/pipe-volume-demux-playback.m4, 3, 2, 2, s32le, 1000, 0, 0, 48000, 48000, 48000) # Low Latency playback pipeline 4 on PCM 40 using max 2 channels of s32le. # Schedule 48 frames per 1000us deadline with priority 0 on core 0 -PIPELINE_PCM_ADD(ifdef(`NO_AGGREGATION', `sof/pipe-volume-playback.m4', - `sof/pipe-dai-endpoint.m4'), +PIPELINE_PCM_ADD(sof/pipe-dai-endpoint.m4, 4, 40, 2, s32le, 1000, 0, 0, 48000, 48000, 48000) ') +') +ifdef(`NO_LOCAL_MIC', `', +` # Low Latency capture pipeline 5 on PCM 4 using max 2 channels of s32le. # Schedule 48 frames per 1000us deadline with priority 0 on core 0 PIPELINE_PCM_ADD(sof/pipe-highpass-switch-capture.m4, 5, 4, 2, s32le, 1000, 0, 0, 48000, 48000, 48000) +') # Low Latency playback pipeline 6 on PCM 5 using max 2 channels of s32le. # Schedule 48 frames per 1000us deadline with priority 0 on core 0 @@ -164,7 +202,7 @@ dnl deadline, priority, core, time_domain) ifdef(`NOJACK', `', ` -# playback DAI is ALH(SDW0 PIN2) using 2 periods +# playback DAI is ALH(UAJ_LINK PIN2) using 2 periods # Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 # The NOT_USED_IGNORED is due to dependencies and is adjusted later with an explicit dapm line. @@ -173,7 +211,7 @@ DAI_ADD(sof/pipe-mixer-volume-dai-playback.m4, NOT_USE_IGNORED, 2, s24le, 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER, 2, 48000) -# capture DAI is ALH(SDW0 PIN2) using 2 periods +# capture DAI is ALH(UAJ_LINK PIN3) using 2 periods # Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 DAI_ADD(sof/pipe-dai-capture.m4, 2, ALH, eval(UAJ_LINK * 256 + 3), `SDW'eval(UAJ_LINK)`-Capture', @@ -201,21 +239,16 @@ SectionGraph."mixer-host" { ' ) -# playback DAI is ALH(SDW1 PIN2) using 2 periods +ifdef(`NOAMP', `', +` +# playback DAI is ALH(AMP_1_LINK PIN2/AMP_2_LINK PIN2) using 2 periods # Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 DAI_ADD(sof/pipe-dai-playback.m4, 3, ALH, eval(AMP_1_LINK * 256 + 2), `SDW'eval(AMP_1_LINK)`-Playback', PIPELINE_SOURCE_3, 2, s24le, 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) -ifdef(`NO_AGGREGATION', -`# playback DAI is ALH(SDW2 PIN2) using 2 periods -# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 -DAI_ADD(sof/pipe-dai-playback.m4, - 4, ALH, eval(AMP_2_LINK * 256 + 2), `SDW'eval(AMP_2_LINK)`-Playback', - PIPELINE_SOURCE_4, 2, s24le, - 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER)', -`ifdef(`MONO', `', +ifdef(`MONO', `', `DAI_ADD_SCHED(sof/pipe-dai-sched-playback.m4, 4, ALH, eval(AMP_2_LINK * 256 + 2), `SDW'eval(AMP_1_LINK)`-Playback', PIPELINE_SOURCE_4, 2, s24le, @@ -231,14 +264,18 @@ SectionGraph."PIPE_DEMUX" { dapm(PIPELINE_SOURCE_4, PIPELINE_DEMUX_3) ] } -')') +') +') -# capture DAI is ALH(SDW3 PIN2) using 2 periods +ifdef(`NO_LOCAL_MIC', `', +` +# capture DAI is ALH(MIC_LINK PIN2) using 2 periods # Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 DAI_ADD(sof/pipe-dai-capture.m4, 5, ALH, eval(MIC_LINK * 256 + 2), `SDW'eval(MIC_LINK)`-Capture', PIPELINE_SINK_5, 2, s24le, 1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER) +') # playback DAI is iDisp1 using 2 periods # # Buffers use s32le format, 1000us deadline with priority 0 on core 0 @@ -269,10 +306,11 @@ ifdef(`NOJACK', `', PCM_PLAYBACK_ADD(Jack Out, 0, PIPELINE_PCM_30) PCM_CAPTURE_ADD(Jack In, 1, PIPELINE_PCM_2) ') - +ifdef(`NOAMP', `', +` PCM_PLAYBACK_ADD(Speaker, 2, PIPELINE_PCM_3) -ifdef(`NO_AGGREGATION', `PCM_PLAYBACK_ADD(Speaker 2, 40, PIPELINE_PCM_4)',`') -PCM_CAPTURE_ADD(Microphone, 4, PIPELINE_PCM_5) +') +ifdef(`NO_LOCAL_MIC', `', `PCM_CAPTURE_ADD(Microphone, 4, PIPELINE_PCM_5)') PCM_PLAYBACK_ADD(HDMI 1, 5, PIPELINE_PCM_6) PCM_PLAYBACK_ADD(HDMI 2, 6, PIPELINE_PCM_7) PCM_PLAYBACK_ADD(HDMI 3, 7, PIPELINE_PCM_8) @@ -284,35 +322,35 @@ PCM_PLAYBACK_ADD(HDMI 3, 7, PIPELINE_PCM_8) ifdef(`NOJACK', `', ` #ALH dai index = ((link_id << 8) | PDI id) -#ALH SDW0 Pin2 (ID: 0) +#ALH UAJ_LINK Pin2 (ID: 0) DAI_CONFIG(ALH, eval(UAJ_LINK * 256 + 2), 0, `SDW'eval(UAJ_LINK)`-Playback', ALH_CONFIG(ALH_CONFIG_DATA(ALH, eval(UAJ_LINK * 256 + 2), 48000, 2))) -#ALH SDW0 Pin3 (ID: 1) +#ALH UAJ_LINK Pin3 (ID: 1) DAI_CONFIG(ALH, eval(UAJ_LINK * 256 + 3), 1, `SDW'eval(UAJ_LINK)`-Capture', ALH_CONFIG(ALH_CONFIG_DATA(ALH, eval(UAJ_LINK * 256 + 3), 48000, 2))) ') -#ALH SDW1 Pin2 (ID: 2) +ifdef(`NOAMP', `', +` +#ALH AMP_1_LINK Pin2 (ID: 2) DAI_CONFIG(ALH, eval(AMP_1_LINK * 256 + 2), 2, `SDW'eval(AMP_1_LINK)`-Playback', ALH_CONFIG(ALH_CONFIG_DATA(ALH, eval(AMP_1_LINK * 256 + 2), 48000, 2))) +') -ifdef(`NO_AGGREGATION', -`#ALH SDW2 Pin2 (ID: 3) -DAI_CONFIG(ALH, eval(AMP_2_LINK * 256 + 2), 3, `SDW'eval(AMP_2_LINK)`-Playback', - ALH_CONFIG(ALH_CONFIG_DATA(ALH, eval(AMP_2_LINK * 256 + 2), 48000, 2)))', -`') - -#ALH SDW3 Pin2 (ID: 4) +ifdef(`NO_LOCAL_MIC', `', +` +#ALH MIC_LINK Pin2 (ID: 4) DAI_CONFIG(ALH, eval(MIC_LINK * 256 + 2), 4, `SDW'eval(MIC_LINK)`-Capture', ALH_CONFIG(ALH_CONFIG_DATA(ALH, eval(MIC_LINK * 256 + 2), 48000, 2))) +') -# 3 HDMI/DP outputs (ID: 5,6,7) -DAI_CONFIG(HDA, 0, 5, iDisp1, +# 3 HDMI/DP outputs (ID: from HDMI_BE_ID_BASE) +DAI_CONFIG(HDA, 0, HDMI_BE_ID_BASE, iDisp1, HDA_CONFIG(HDA_CONFIG_DATA(HDA, 0, 48000, 2))) -DAI_CONFIG(HDA, 1, 6, iDisp2, +DAI_CONFIG(HDA, 1, eval(HDMI_BE_ID_BASE + 1), iDisp2, HDA_CONFIG(HDA_CONFIG_DATA(HDA, 1, 48000, 2))) -DAI_CONFIG(HDA, 2, 7, iDisp3, +DAI_CONFIG(HDA, 2, eval(HDMI_BE_ID_BASE + 2), iDisp3, HDA_CONFIG(HDA_CONFIG_DATA(HDA, 2, 48000, 2))) DEBUG_END