Skip to content

Commit 0ef3534

Browse files
committed
topology1: add sdw multi-function codec support
The topology includes multi-function codec support on single SoundWire link. The hardware configuration on RPL product is below: Soundwire# link 0: cs42l43 multi-function codec with JACK, DMIC and Speakers endpoints. The SDW used bidirectional DAI for each sdw link. DAI index starts from 2. sdw0/1/2/3: 2(ALH_OUT/IN) / 3(ALH_IN/OUT) In this SKU, reorder to match cs42l43 DAIs index on sdw link 0: sdw0: 0(JACK_OUT), 1(DMIC_IN), 2(JACK_IN), 3(AMP_OUT) Besides, align the partial string match of dai name from main branch. Signed-off-by: Mac Chiang <mac.chiang@intel.com>
1 parent 181bfe1 commit 0ef3534

2 files changed

Lines changed: 61 additions & 20 deletions

File tree

tools/topology/topology1/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ set(TPLGS
127127
"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"
128128
"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"
129129
"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"
130+
"sof-icl-rt711-rt1308-rt715-hdmi\;sof-rpl-cs42l43-l0\;-DPLATFORM=adl\;-DUAJ_LINK=0\;-DMIC_LINK=0\;-DAMP_1_LINK=0\;-DMONO\;-DMFC"
130131
"sof-tgl-rt711-rt1308\;sof-tgl-rt711-rt1308-2ch\;-DCHANNELS=2\;-DEXT_AMP\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DPLATFORM=tgl"
131132
"sof-tgl-rt711-rt1308\;sof-tgl-rt711-rt1308-4ch\;-DCHANNELS=4\;-DEXT_AMP\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DPLATFORM=tgl"
132133
"sof-tgl-rt711-rt1308\;sof-tgl-rt711-4ch\;-DCHANNELS=4\;-DDMICPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_48khz.m4\;-DDMIC16KPROC_FILTER1=eq_iir_coef_highpass_40hz_20db_16khz.m4\;-DPLATFORM=tgl"

tools/topology/topology1/sof-icl-rt711-rt1308-rt715-hdmi.m4

Lines changed: 60 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,46 @@ ifdef(`MIC_LINK',`',
4040
# HDMI ID calculated based on the configuraiton
4141
define(HDMI_BE_ID_BASE, `0')
4242

43+
# define the codec endpoints order according to each codec dai index
44+
# assign rt711 dai index
45+
define(`ALH_JACK_OUT_INDEX', `0')
46+
define(`ALH_JACK_IN_INDEX', `1')
47+
define(`ALH_JACK_AMP_INDEX', `0')
48+
define(`ALH_DMIC_IN_INDEX', `0')
49+
50+
define(`ALH_JACK_OUT_NAME', `SDW'eval(UAJ_LINK)`-Playback')
51+
define(`ALH_JACK_IN_NAME', `SDW'eval(UAJ_LINK)`-Capture')
52+
define(`ALH_AMP_OUT_NAME', `SDW'eval(AMP_1_LINK)`-Playback')
53+
define(`ALH_MIC_IN_NAME', `SDW'eval(MIC_LINK)`-Capture')
54+
55+
ifdef(`MFC', `
56+
# assign cs42l43 dai index
57+
undefine(`ALH_JACK_OUT_INDEX')
58+
undefine(`ALH_JACK_IN_INDEX')
59+
undefine(`ALH_JACK_AMP_INDEX')
60+
undefine(`ALH_DMIC_IN_INDEX')
61+
define(`ALH_JACK_OUT_INDEX', `0')
62+
define(`ALH_JACK_IN_INDEX', `2')
63+
define(`ALH_JACK_AMP_INDEX', `3')
64+
define(`ALH_DMIC_IN_INDEX', `1')
65+
66+
# align the partial string match of full dai link name
67+
undefine(`ALH_JACK_OUT_NAME')
68+
undefine(`ALH_JACK_IN_NAME')
69+
undefine(`ALH_AMP_OUT_NAME')
70+
undefine(`ALH_MIC_IN_NAME')
71+
define(`ALH_JACK_OUT_NAME', `Playback-SimpleJack')
72+
define(`ALH_JACK_IN_NAME', `Capture-SimpleJack')
73+
define(`ALH_AMP_OUT_NAME', `Playback-SmartAmp')
74+
define(`ALH_MIC_IN_NAME', `Capture-SmartMic')'
75+
)
76+
77+
# SDW Pin as DAIs index starts from 2 on each SDW link
78+
define(`ALH_PIN2', `2' + `ALH_JACK_OUT_INDEX')
79+
define(`ALH_PIN3', `2' + `ALH_JACK_IN_INDEX')
80+
define(`ALH_PIN4', `2' + `ALH_JACK_AMP_INDEX')
81+
define(`ALH_PIN5', `2' + `ALH_DMIC_IN_INDEX')
82+
4383
ifdef(`NO_JACK', `',
4484
`undefine(`HDMI_BE_ID_BASE')
4585
define(HDMI_BE_ID_BASE, `2')'
@@ -106,16 +146,16 @@ ifdef(`NOJACK', `',
106146
`
107147
# PCM0 ---> volume ----> mixer --->ALH 2 BE UAJ_LINK
108148
# PCM31 ---> volume ------^
109-
# PCM1 <--- volume <---- ALH 3 BE UAJ_LINK
149+
# PCM1 <--- volume <---- ALH 3/4 BE UAJ_LINK
110150
')
111151
ifdef(`NOAMP', `',
112152
`
113-
# PCM2 ---> volume ----> ALH 2 BE AMP_1_LINK
153+
# PCM2 ---> volume ----> ALH 2/5 BE AMP_1_LINK
114154
ifdef(`MONO', `',
115-
`# PCM40 ---> volume ----> ALH 2 BE AMP_2_LINK')
155+
`# PCM40 ---> volume ----> ALH 2/5 BE AMP_2_LINK')
116156
')
117157
ifdef(`NO_LOCAL_MIC', `',
118-
`# PCM4 <--- volume <---- ALH 2 BE MIC_LINK')
158+
`# PCM4 <--- volume <---- ALH 2/3 BE MIC_LINK')
119159

120160
ifdef(`NOHDMI', `',
121161
`
@@ -215,14 +255,14 @@ ifdef(`NOJACK', `',
215255
# The NOT_USED_IGNORED is due to dependencies and is adjusted later with an explicit dapm line.
216256

217257
DAI_ADD(sof/pipe-mixer-volume-dai-playback.m4,
218-
1, ALH, eval(UAJ_LINK * 256 + 2), `SDW'eval(UAJ_LINK)`-Playback',
258+
1, ALH, eval(UAJ_LINK * 256 + ALH_PIN2), ALH_JACK_OUT_NAME,
219259
NOT_USE_IGNORED, 2, s24le,
220260
1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER, 2, 48000)
221261

222262
# capture DAI is ALH(UAJ_LINK PIN3) using 2 periods
223263
# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0
224264
DAI_ADD(sof/pipe-dai-capture.m4,
225-
2, ALH, eval(UAJ_LINK * 256 + 3), `SDW'eval(UAJ_LINK)`-Capture',
265+
2, ALH, eval(UAJ_LINK * 256 + ALH_PIN3), ALH_JACK_IN_NAME,
226266
PIPELINE_SINK_2, 2, s24le,
227267
1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER)
228268

@@ -271,13 +311,13 @@ ifdef(`NOAMP', `',
271311
# playback DAI is ALH(AMP_1_LINK PIN2/AMP_2_LINK PIN2) using 2 periods
272312
# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0
273313
DAI_ADD(sof/pipe-dai-playback.m4,
274-
3, ALH, eval(AMP_1_LINK * 256 + 2), `SDW'eval(AMP_1_LINK)`-Playback',
314+
3, ALH, eval(AMP_1_LINK * 256 + ALH_PIN4), ALH_AMP_OUT_NAME,
275315
PIPELINE_SOURCE_3, 2, s24le,
276316
1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER)
277317

278318
ifdef(`MONO', `',
279319
`DAI_ADD_SCHED(sof/pipe-dai-sched-playback.m4,
280-
4, ALH, eval(AMP_2_LINK * 256 + 2), `SDW'eval(AMP_1_LINK)`-Playback',
320+
4, ALH, eval(AMP_2_LINK * 256 + ALH_PIN4), ALH_AMP_OUT_NAME,
281321
PIPELINE_SOURCE_4, 2, s24le,
282322
1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER,
283323
PIPELINE_PLAYBACK_SCHED_COMP_3)
@@ -299,7 +339,7 @@ ifdef(`NO_LOCAL_MIC', `',
299339
# capture DAI is ALH(MIC_LINK PIN2) using 2 periods
300340
# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0
301341
DAI_ADD(sof/pipe-dai-capture.m4,
302-
5, ALH, eval(MIC_LINK * 256 + 2), `SDW'eval(MIC_LINK)`-Capture',
342+
5, ALH, eval(MIC_LINK * 256 + ALH_PIN5), ALH_MIC_IN_NAME,
303343
PIPELINE_SINK_5, 2, s24le,
304344
1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER)
305345
')
@@ -362,26 +402,26 @@ ifdef(`NOJACK', `',
362402
`
363403
#ALH dai index = ((link_id << 8) | PDI id)
364404
#ALH UAJ_LINK Pin2 (ID: 0)
365-
DAI_CONFIG(ALH, eval(UAJ_LINK * 256 + 2), 0, `SDW'eval(UAJ_LINK)`-Playback',
366-
ALH_CONFIG(ALH_CONFIG_DATA(ALH, eval(UAJ_LINK * 256 + 2), 48000, 2)))
405+
DAI_CONFIG(ALH, eval(UAJ_LINK * 256 + ALH_PIN2), 0, ALH_JACK_OUT_NAME,
406+
ALH_CONFIG(ALH_CONFIG_DATA(ALH, eval(UAJ_LINK * 256 + ALH_PIN2), 48000, 2)))
367407

368-
#ALH UAJ_LINK Pin3 (ID: 1)
369-
DAI_CONFIG(ALH, eval(UAJ_LINK * 256 + 3), 1, `SDW'eval(UAJ_LINK)`-Capture',
370-
ALH_CONFIG(ALH_CONFIG_DATA(ALH, eval(UAJ_LINK * 256 + 3), 48000, 2)))
408+
#ALH UAJ_LINK Pin3/4 (ID: 1)
409+
DAI_CONFIG(ALH, eval(UAJ_LINK * 256 + ALH_PIN3), 1, ALH_JACK_IN_NAME,
410+
ALH_CONFIG(ALH_CONFIG_DATA(ALH, eval(UAJ_LINK * 256 + ALH_PIN3), 48000, 2)))
371411
')
372412

373413
ifdef(`NOAMP', `',
374414
`
375-
#ALH AMP_1_LINK Pin2 (ID: 2)
376-
DAI_CONFIG(ALH, eval(AMP_1_LINK * 256 + 2), 2, `SDW'eval(AMP_1_LINK)`-Playback',
377-
ALH_CONFIG(ALH_CONFIG_DATA(ALH, eval(AMP_1_LINK * 256 + 2), 48000, 2)))
415+
#ALH AMP_1_LINK Pin2/5 (ID: 2)
416+
DAI_CONFIG(ALH, eval(AMP_1_LINK * 256 + ALH_PIN4), 2, ALH_AMP_OUT_NAME,
417+
ALH_CONFIG(ALH_CONFIG_DATA(ALH, eval(AMP_1_LINK * 256 + ALH_PIN4), 48000, 2)))
378418
')
379419

380420
ifdef(`NO_LOCAL_MIC', `',
381421
`
382-
#ALH MIC_LINK Pin2 (ID: 4)
383-
DAI_CONFIG(ALH, eval(MIC_LINK * 256 + 2), 4, `SDW'eval(MIC_LINK)`-Capture',
384-
ALH_CONFIG(ALH_CONFIG_DATA(ALH, eval(MIC_LINK * 256 + 2), 48000, 2)))
422+
#ALH MIC_LINK Pin2/3 (ID: 4)
423+
DAI_CONFIG(ALH, eval(MIC_LINK * 256 + ALH_PIN5), 4, ALH_MIC_IN_NAME,
424+
ALH_CONFIG(ALH_CONFIG_DATA(ALH, eval(MIC_LINK * 256 + ALH_PIN5), 48000, 2)))
385425
')
386426

387427
ifdef(`NOHDMI', `',

0 commit comments

Comments
 (0)