blob: 2ad6e63654543d14c8715b44288b5339823723e5 [file] [log] [blame]
Gangadhar Sc1a5a502020-03-03 13:23:43 +05301/* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved.
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013#include <linux/of.h>
14#include <sound/core.h>
15#include <sound/soc.h>
16#include <sound/soc-dapm.h>
17#include <sound/pcm.h>
18#include <sound/pcm_params.h>
Laxminath Kasam7e057cf2017-08-09 23:55:15 +053019#include "msm-pcm-routing-v2.h"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053020#include "sdm660-common.h"
21#include "sdm660-external.h"
Laxminath Kasam605b42f2017-08-01 22:02:15 +053022#include "codecs/core.h"
23#include "codecs/wcd9335.h"
Revathi Uddaraju30feb0d2017-11-21 15:30:19 +053024#include <linux/pm_qos.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053025
26#define DEV_NAME_STR_LEN 32
27#define __CHIPSET__ "SDM660 "
28#define MSM_DAILINK_NAME(name) (__CHIPSET__#name)
29
30#define WCN_CDC_SLIM_RX_CH_MAX 2
31#define WCN_CDC_SLIM_TX_CH_MAX 3
Revathi Uddaraju30feb0d2017-11-21 15:30:19 +053032#define MSM_LL_QOS_VALUE 300 /* time in us to ensure LPM doesn't go in C3/C4 */
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053033
Laxminath Kasam38070be2017-08-17 18:21:59 +053034static struct snd_soc_card snd_soc_card_msm_card_tavil = {
35 .name = "sdm670-tavil-snd-card",
36 .late_probe = msm_snd_card_tavil_late_probe,
37};
38
39static struct snd_soc_card snd_soc_card_msm_card_tasha = {
40 .name = "sdm670-tasha-snd-card",
41 .late_probe = msm_snd_card_tasha_late_probe,
42};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053043
44static struct snd_soc_ops msm_ext_slimbus_be_ops = {
45 .hw_params = msm_snd_hw_params,
46};
47
48static struct snd_soc_ops msm_ext_cpe_ops = {
49 .hw_params = msm_snd_cpe_hw_params,
50};
51
52static struct snd_soc_ops msm_ext_slimbus_2_be_ops = {
53 .hw_params = msm_ext_slimbus_2_hw_params,
54};
55
56static struct snd_soc_ops msm_mi2s_be_ops = {
57 .startup = msm_mi2s_snd_startup,
58 .shutdown = msm_mi2s_snd_shutdown,
59};
60
61static struct snd_soc_ops msm_aux_pcm_be_ops = {
62 .startup = msm_aux_pcm_snd_startup,
63 .shutdown = msm_aux_pcm_snd_shutdown,
64};
65
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +053066static struct snd_soc_ops msm_tdm_be_ops = {
67 .startup = msm_tdm_snd_startup,
68 .shutdown = msm_tdm_snd_shutdown,
69 .hw_params = msm_tdm_snd_hw_params,
70};
71
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053072static int msm_wcn_init(struct snd_soc_pcm_runtime *rtd)
73{
74 unsigned int rx_ch[WCN_CDC_SLIM_RX_CH_MAX] = {157, 158};
75 unsigned int tx_ch[WCN_CDC_SLIM_TX_CH_MAX] = {159, 160, 161};
76 struct snd_soc_dai *codec_dai = rtd->codec_dai;
77
78 return snd_soc_dai_set_channel_map(codec_dai, ARRAY_SIZE(tx_ch),
79 tx_ch, ARRAY_SIZE(rx_ch), rx_ch);
80}
81
82static int msm_wcn_hw_params(struct snd_pcm_substream *substream,
83 struct snd_pcm_hw_params *params)
84{
85 struct snd_soc_pcm_runtime *rtd = substream->private_data;
86 struct snd_soc_dai *codec_dai = rtd->codec_dai;
87 struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
88 struct snd_soc_dai_link *dai_link = rtd->dai_link;
89 u32 rx_ch[WCN_CDC_SLIM_RX_CH_MAX], tx_ch[WCN_CDC_SLIM_TX_CH_MAX];
90 u32 rx_ch_cnt = 0, tx_ch_cnt = 0;
91 int ret;
92
93 dev_dbg(rtd->dev, "%s: %s_tx_dai_id_%d\n", __func__,
94 codec_dai->name, codec_dai->id);
95 ret = snd_soc_dai_get_channel_map(codec_dai,
96 &tx_ch_cnt, tx_ch, &rx_ch_cnt, rx_ch);
97 if (ret) {
98 dev_err(rtd->dev,
99 "%s: failed to get BTFM codec chan map\n, err:%d\n",
100 __func__, ret);
101 goto exit;
102 }
103
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530104 dev_dbg(rtd->dev, "%s: tx_ch_cnt(%d) id %d\n",
105 __func__, tx_ch_cnt, dai_link->id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530106
107 ret = snd_soc_dai_set_channel_map(cpu_dai,
108 tx_ch_cnt, tx_ch, rx_ch_cnt, rx_ch);
109 if (ret)
110 dev_err(rtd->dev, "%s: failed to set cpu chan map, err:%d\n",
111 __func__, ret);
112
113exit:
114 return ret;
115}
116
117static struct snd_soc_ops msm_wcn_ops = {
118 .hw_params = msm_wcn_hw_params,
119};
120
Revathi Uddaraju30feb0d2017-11-21 15:30:19 +0530121static int msm_fe_qos_prepare(struct snd_pcm_substream *substream)
122{
123 cpumask_t mask;
124
125 if (pm_qos_request_active(&substream->latency_pm_qos_req))
126 pm_qos_remove_request(&substream->latency_pm_qos_req);
127
128 cpumask_clear(&mask);
129 cpumask_set_cpu(1, &mask); /* affine to core 1 */
130 cpumask_set_cpu(2, &mask); /* affine to core 2 */
131 cpumask_copy(&substream->latency_pm_qos_req.cpus_affine, &mask);
132
133 substream->latency_pm_qos_req.type = PM_QOS_REQ_AFFINE_CORES;
134
135 pm_qos_add_request(&substream->latency_pm_qos_req,
136 PM_QOS_CPU_DMA_LATENCY,
137 MSM_LL_QOS_VALUE);
138 return 0;
139}
140
141static struct snd_soc_ops msm_fe_qos_ops = {
142 .prepare = msm_fe_qos_prepare,
143};
144
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530145static struct snd_soc_dai_link msm_ext_tasha_fe_dai[] = {
146 /* tasha_vifeedback for speaker protection */
147 {
148 .name = LPASS_BE_SLIMBUS_4_TX,
149 .stream_name = "Slimbus4 Capture",
150 .cpu_dai_name = "msm-dai-q6-dev.16393",
151 .platform_name = "msm-pcm-hostless",
152 .codec_name = "tasha_codec",
153 .codec_dai_name = "tasha_vifeedback",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530154 .id = MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530155 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
156 .ops = &msm_ext_slimbus_be_ops,
157 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
158 .ignore_suspend = 1,
159 },
160 /* Ultrasound RX DAI Link */
161 {
162 .name = "SLIMBUS_2 Hostless Playback",
163 .stream_name = "SLIMBUS_2 Hostless Playback",
164 .cpu_dai_name = "msm-dai-q6-dev.16388",
165 .platform_name = "msm-pcm-hostless",
166 .codec_name = "tasha_codec",
167 .codec_dai_name = "tasha_rx2",
168 .ignore_suspend = 1,
169 .dpcm_playback = 1,
170 .dpcm_capture = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +0530171 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530172 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
173 .ops = &msm_ext_slimbus_2_be_ops,
174 },
175 /* Ultrasound TX DAI Link */
176 {
177 .name = "SLIMBUS_2 Hostless Capture",
178 .stream_name = "SLIMBUS_2 Hostless Capture",
179 .cpu_dai_name = "msm-dai-q6-dev.16389",
180 .platform_name = "msm-pcm-hostless",
181 .codec_name = "tasha_codec",
182 .codec_dai_name = "tasha_tx2",
183 .ignore_suspend = 1,
184 .dpcm_capture = 1,
185 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
186 .ops = &msm_ext_slimbus_2_be_ops,
187 },
188 /* CPE LSM direct dai-link */
189 {
190 .name = "CPE Listen service",
191 .stream_name = "CPE Listen Audio Service",
192 .cpu_dai_name = "msm-dai-slim",
193 .platform_name = "msm-cpe-lsm",
194 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
195 SND_SOC_DPCM_TRIGGER_POST},
196 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
197 .ignore_suspend = 1,
198 .dpcm_capture = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530199 .codec_dai_name = "tasha_mad1",
200 .codec_name = "tasha_codec",
201 .ops = &msm_ext_cpe_ops,
202 },
203 {
204 .name = "SLIMBUS_6 Hostless Playback",
205 .stream_name = "SLIMBUS_6 Hostless",
206 .cpu_dai_name = "SLIMBUS6_HOSTLESS",
207 .platform_name = "msm-pcm-hostless",
208 .dynamic = 1,
209 .dpcm_playback = 1,
210 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
211 SND_SOC_DPCM_TRIGGER_POST},
212 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
213 .ignore_suspend = 1,
214 /* this dailink has playback support */
215 .ignore_pmdown_time = 1,
216 .codec_dai_name = "snd-soc-dummy-dai",
217 .codec_name = "snd-soc-dummy",
218 },
219 /* CPE LSM EC PP direct dai-link */
220 {
221 .name = "CPE Listen service ECPP",
222 .stream_name = "CPE Listen Audio Service ECPP",
223 .cpu_dai_name = "CPE_LSM_NOHOST",
224 .platform_name = "msm-cpe-lsm.3",
225 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
226 SND_SOC_DPCM_TRIGGER_POST},
227 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
228 .ignore_suspend = 1,
229 .ignore_pmdown_time = 1,
230 .codec_dai_name = "tasha_cpe",
231 .codec_name = "tasha_codec",
232 },
233};
234
235static struct snd_soc_dai_link msm_ext_tavil_fe_dai[] = {
236 {
237 .name = LPASS_BE_SLIMBUS_4_TX,
238 .stream_name = "Slimbus4 Capture",
239 .cpu_dai_name = "msm-dai-q6-dev.16393",
240 .platform_name = "msm-pcm-hostless",
241 .codec_name = "tavil_codec",
242 .codec_dai_name = "tavil_vifeedback",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530243 .id = MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530244 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
245 .ops = &msm_ext_slimbus_be_ops,
246 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
247 .ignore_suspend = 1,
248 },
249 /* Ultrasound RX DAI Link */
250 {
251 .name = "SLIMBUS_2 Hostless Playback",
252 .stream_name = "SLIMBUS_2 Hostless Playback",
253 .cpu_dai_name = "msm-dai-q6-dev.16388",
254 .platform_name = "msm-pcm-hostless",
255 .codec_name = "tavil_codec",
256 .codec_dai_name = "tavil_rx2",
257 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +0530258 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530259 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
260 .ops = &msm_ext_slimbus_2_be_ops,
261 },
262 /* Ultrasound TX DAI Link */
263 {
264 .name = "SLIMBUS_2 Hostless Capture",
265 .stream_name = "SLIMBUS_2 Hostless Capture",
266 .cpu_dai_name = "msm-dai-q6-dev.16389",
267 .platform_name = "msm-pcm-hostless",
268 .codec_name = "tavil_codec",
269 .codec_dai_name = "tavil_tx2",
270 .ignore_suspend = 1,
271 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
272 .ops = &msm_ext_slimbus_2_be_ops,
273 },
274};
275
276static struct snd_soc_dai_link msm_ext_tasha_be_dai[] = {
277 /* Backend DAI Links */
278 {
279 .name = LPASS_BE_SLIMBUS_0_RX,
280 .stream_name = "Slimbus Playback",
281 .cpu_dai_name = "msm-dai-q6-dev.16384",
282 .platform_name = "msm-pcm-routing",
283 .codec_name = "tasha_codec",
284 .codec_dai_name = "tasha_mix_rx1",
285 .no_pcm = 1,
286 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530287 .id = MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530288 .init = &msm_audrx_init,
289 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
290 /* this dainlink has playback support */
291 .ignore_pmdown_time = 1,
292 .ignore_suspend = 1,
293 .ops = &msm_ext_slimbus_be_ops,
294 },
295 {
296 .name = LPASS_BE_SLIMBUS_0_TX,
297 .stream_name = "Slimbus Capture",
298 .cpu_dai_name = "msm-dai-q6-dev.16385",
299 .platform_name = "msm-pcm-routing",
300 .codec_name = "tasha_codec",
301 .codec_dai_name = "tasha_tx1",
302 .no_pcm = 1,
303 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530304 .id = MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530305 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
306 .ignore_suspend = 1,
307 .ops = &msm_ext_slimbus_be_ops,
308 },
309 {
310 .name = LPASS_BE_SLIMBUS_1_RX,
311 .stream_name = "Slimbus1 Playback",
312 .cpu_dai_name = "msm-dai-q6-dev.16386",
313 .platform_name = "msm-pcm-routing",
314 .codec_name = "tasha_codec",
315 .codec_dai_name = "tasha_mix_rx1",
316 .no_pcm = 1,
317 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530318 .id = MSM_BACKEND_DAI_SLIMBUS_1_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530319 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
320 .ops = &msm_ext_slimbus_be_ops,
321 /* dai link has playback support */
322 .ignore_pmdown_time = 1,
323 .ignore_suspend = 1,
324 },
325 {
326 .name = LPASS_BE_SLIMBUS_1_TX,
327 .stream_name = "Slimbus1 Capture",
328 .cpu_dai_name = "msm-dai-q6-dev.16387",
329 .platform_name = "msm-pcm-routing",
330 .codec_name = "tasha_codec",
331 .codec_dai_name = "tasha_tx3",
332 .no_pcm = 1,
333 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530334 .id = MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530335 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
336 .ops = &msm_ext_slimbus_be_ops,
337 .ignore_suspend = 1,
338 },
339 {
340 .name = LPASS_BE_SLIMBUS_3_RX,
341 .stream_name = "Slimbus3 Playback",
342 .cpu_dai_name = "msm-dai-q6-dev.16390",
343 .platform_name = "msm-pcm-routing",
344 .codec_name = "tasha_codec",
345 .codec_dai_name = "tasha_mix_rx1",
346 .no_pcm = 1,
347 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530348 .id = MSM_BACKEND_DAI_SLIMBUS_3_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530349 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
350 .ops = &msm_ext_slimbus_be_ops,
351 /* dai link has playback support */
352 .ignore_pmdown_time = 1,
353 .ignore_suspend = 1,
354 },
355 {
356 .name = LPASS_BE_SLIMBUS_3_TX,
357 .stream_name = "Slimbus3 Capture",
358 .cpu_dai_name = "msm-dai-q6-dev.16391",
359 .platform_name = "msm-pcm-routing",
360 .codec_name = "tasha_codec",
361 .codec_dai_name = "tasha_tx1",
362 .no_pcm = 1,
363 .dpcm_capture = 1,
364 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530365 .id = MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530366 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
367 .ops = &msm_ext_slimbus_be_ops,
368 .ignore_suspend = 1,
369 },
370 {
371 .name = LPASS_BE_SLIMBUS_4_RX,
372 .stream_name = "Slimbus4 Playback",
373 .cpu_dai_name = "msm-dai-q6-dev.16392",
374 .platform_name = "msm-pcm-routing",
375 .codec_name = "tasha_codec",
376 .codec_dai_name = "tasha_mix_rx1",
377 .no_pcm = 1,
378 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530379 .id = MSM_BACKEND_DAI_SLIMBUS_4_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530380 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
381 .ops = &msm_ext_slimbus_be_ops,
382 /* dai link has playback support */
383 .ignore_pmdown_time = 1,
384 .ignore_suspend = 1,
385 },
386 {
387 .name = LPASS_BE_SLIMBUS_5_RX,
388 .stream_name = "Slimbus5 Playback",
389 .cpu_dai_name = "msm-dai-q6-dev.16394",
390 .platform_name = "msm-pcm-routing",
391 .codec_name = "tasha_codec",
392 .codec_dai_name = "tasha_rx3",
393 .no_pcm = 1,
394 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530395 .id = MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530396 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
397 .ops = &msm_ext_slimbus_be_ops,
398 /* dai link has playback support */
399 .ignore_pmdown_time = 1,
400 .ignore_suspend = 1,
401 },
402 /* MAD BE */
403 {
404 .name = LPASS_BE_SLIMBUS_5_TX,
405 .stream_name = "Slimbus5 Capture",
406 .cpu_dai_name = "msm-dai-q6-dev.16395",
407 .platform_name = "msm-pcm-routing",
408 .codec_name = "tasha_codec",
409 .codec_dai_name = "tasha_mad1",
410 .no_pcm = 1,
411 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530412 .id = MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530413 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
414 .ops = &msm_ext_slimbus_be_ops,
415 .ignore_suspend = 1,
416 },
417 {
418 .name = LPASS_BE_SLIMBUS_6_RX,
419 .stream_name = "Slimbus6 Playback",
420 .cpu_dai_name = "msm-dai-q6-dev.16396",
421 .platform_name = "msm-pcm-routing",
422 .codec_name = "tasha_codec",
423 .codec_dai_name = "tasha_rx4",
424 .no_pcm = 1,
425 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530426 .id = MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530427 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
428 .ops = &msm_ext_slimbus_be_ops,
429 /* dai link has playback support */
430 .ignore_pmdown_time = 1,
431 .ignore_suspend = 1,
432 },
433};
434
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530435static struct snd_soc_dai_link msm_ext_compress_capture_dai[] = {
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530436 {/* hw:x,37 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530437 .name = "Compress9",
438 .stream_name = "Compress9",
439 .cpu_dai_name = "MultiMedia17",
440 .platform_name = "msm-compress-dsp",
441 .dynamic = 1,
442 .dpcm_capture = 1,
443 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
444 SND_SOC_DPCM_TRIGGER_POST},
445 .codec_dai_name = "snd-soc-dummy-dai",
446 .codec_name = "snd-soc-dummy",
447 .ignore_suspend = 1,
448 .id = MSM_FRONTEND_DAI_MULTIMEDIA17,
449 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530450 {/* hw:x,38 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530451 .name = "Compress10",
452 .stream_name = "Compress10",
453 .cpu_dai_name = "MultiMedia18",
454 .platform_name = "msm-compress-dsp",
455 .dynamic = 1,
456 .dpcm_capture = 1,
457 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
458 SND_SOC_DPCM_TRIGGER_POST},
459 .codec_dai_name = "snd-soc-dummy-dai",
460 .codec_name = "snd-soc-dummy",
461 .ignore_suspend = 1,
462 .id = MSM_FRONTEND_DAI_MULTIMEDIA18,
463 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530464 {/* hw:x,39 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530465 .name = "Compress11",
466 .stream_name = "Compress11",
467 .cpu_dai_name = "MultiMedia19",
468 .platform_name = "msm-compress-dsp",
469 .dynamic = 1,
470 .dpcm_capture = 1,
471 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
472 SND_SOC_DPCM_TRIGGER_POST},
473 .codec_dai_name = "snd-soc-dummy-dai",
474 .codec_name = "snd-soc-dummy",
475 .ignore_suspend = 1,
476 .id = MSM_FRONTEND_DAI_MULTIMEDIA19,
477 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530478 {/* hw:x,40 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530479 .name = "Compress12",
480 .stream_name = "Compress12",
481 .cpu_dai_name = "MultiMedia28",
482 .platform_name = "msm-compress-dsp",
483 .dynamic = 1,
484 .dpcm_capture = 1,
485 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
486 SND_SOC_DPCM_TRIGGER_POST},
487 .codec_dai_name = "snd-soc-dummy-dai",
488 .codec_name = "snd-soc-dummy",
489 .ignore_suspend = 1,
490 .id = MSM_FRONTEND_DAI_MULTIMEDIA28,
491 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530492 {/* hw:x,41 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530493 .name = "Compress13",
494 .stream_name = "Compress13",
495 .cpu_dai_name = "MultiMedia29",
496 .platform_name = "msm-compress-dsp",
497 .dynamic = 1,
498 .dpcm_capture = 1,
499 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
500 SND_SOC_DPCM_TRIGGER_POST},
501 .codec_dai_name = "snd-soc-dummy-dai",
502 .codec_name = "snd-soc-dummy",
503 .ignore_suspend = 1,
504 .id = MSM_FRONTEND_DAI_MULTIMEDIA29,
505 },
506};
507
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530508static struct snd_soc_dai_link msm_ext_tavil_be_dai[] = {
509 {
510 .name = LPASS_BE_SLIMBUS_0_RX,
511 .stream_name = "Slimbus Playback",
512 .cpu_dai_name = "msm-dai-q6-dev.16384",
513 .platform_name = "msm-pcm-routing",
514 .codec_name = "tavil_codec",
515 .codec_dai_name = "tavil_rx1",
516 .no_pcm = 1,
517 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530518 .id = MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530519 .init = &msm_audrx_init,
520 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
521 /* this dainlink has playback support */
522 .ignore_pmdown_time = 1,
523 .ignore_suspend = 1,
524 .ops = &msm_ext_slimbus_be_ops,
525 },
526 {
527 .name = LPASS_BE_SLIMBUS_0_TX,
528 .stream_name = "Slimbus Capture",
529 .cpu_dai_name = "msm-dai-q6-dev.16385",
530 .platform_name = "msm-pcm-routing",
531 .codec_name = "tavil_codec",
532 .codec_dai_name = "tavil_tx1",
533 .no_pcm = 1,
534 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530535 .id = MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530536 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
537 .ignore_suspend = 1,
538 .ops = &msm_ext_slimbus_be_ops,
539 },
540 {
541 .name = LPASS_BE_SLIMBUS_1_RX,
542 .stream_name = "Slimbus1 Playback",
543 .cpu_dai_name = "msm-dai-q6-dev.16386",
544 .platform_name = "msm-pcm-routing",
545 .codec_name = "tavil_codec",
546 .codec_dai_name = "tavil_rx1",
547 .no_pcm = 1,
548 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530549 .id = MSM_BACKEND_DAI_SLIMBUS_1_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530550 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
551 .ops = &msm_ext_slimbus_be_ops,
552 /* dai link has playback support */
553 .ignore_pmdown_time = 1,
554 .ignore_suspend = 1,
555 },
556 {
557 .name = LPASS_BE_SLIMBUS_1_TX,
558 .stream_name = "Slimbus1 Capture",
559 .cpu_dai_name = "msm-dai-q6-dev.16387",
560 .platform_name = "msm-pcm-routing",
561 .codec_name = "tavil_codec",
562 .codec_dai_name = "tavil_tx3",
563 .no_pcm = 1,
564 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530565 .id = MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530566 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
567 .ops = &msm_ext_slimbus_be_ops,
568 .ignore_suspend = 1,
569 },
570 {
571 .name = LPASS_BE_SLIMBUS_2_RX,
572 .stream_name = "Slimbus2 Playback",
573 .cpu_dai_name = "msm-dai-q6-dev.16388",
574 .platform_name = "msm-pcm-routing",
575 .codec_name = "tavil_codec",
576 .codec_dai_name = "tavil_rx2",
577 .no_pcm = 1,
578 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530579 .id = MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530580 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
581 .ops = &msm_ext_slimbus_be_ops,
582 .ignore_pmdown_time = 1,
583 .ignore_suspend = 1,
584 },
585 {
586 .name = LPASS_BE_SLIMBUS_3_RX,
587 .stream_name = "Slimbus3 Playback",
588 .cpu_dai_name = "msm-dai-q6-dev.16390",
589 .platform_name = "msm-pcm-routing",
590 .codec_name = "tavil_codec",
591 .codec_dai_name = "tavil_rx1",
592 .no_pcm = 1,
593 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530594 .id = MSM_BACKEND_DAI_SLIMBUS_3_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530595 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
596 .ops = &msm_ext_slimbus_be_ops,
597 /* dai link has playback support */
598 .ignore_pmdown_time = 1,
599 .ignore_suspend = 1,
600 },
601 {
602 .name = LPASS_BE_SLIMBUS_3_TX,
603 .stream_name = "Slimbus3 Capture",
604 .cpu_dai_name = "msm-dai-q6-dev.16391",
605 .platform_name = "msm-pcm-routing",
606 .codec_name = "tavil_codec",
607 .codec_dai_name = "tavil_tx1",
608 .no_pcm = 1,
609 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530610 .id = MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530611 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
612 .ops = &msm_ext_slimbus_be_ops,
613 .ignore_suspend = 1,
614 },
615 {
616 .name = LPASS_BE_SLIMBUS_4_RX,
617 .stream_name = "Slimbus4 Playback",
618 .cpu_dai_name = "msm-dai-q6-dev.16392",
619 .platform_name = "msm-pcm-routing",
620 .codec_name = "tavil_codec",
621 .codec_dai_name = "tavil_rx1",
622 .no_pcm = 1,
623 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530624 .id = MSM_BACKEND_DAI_SLIMBUS_4_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530625 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
626 .ops = &msm_ext_slimbus_be_ops,
627 /* dai link has playback support */
628 .ignore_pmdown_time = 1,
629 .ignore_suspend = 1,
630 },
631 {
632 .name = LPASS_BE_SLIMBUS_5_RX,
633 .stream_name = "Slimbus5 Playback",
634 .cpu_dai_name = "msm-dai-q6-dev.16394",
635 .platform_name = "msm-pcm-routing",
636 .codec_name = "tavil_codec",
637 .codec_dai_name = "tavil_rx3",
638 .no_pcm = 1,
639 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530640 .id = MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530641 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
642 .ops = &msm_ext_slimbus_be_ops,
643 /* dai link has playback support */
644 .ignore_pmdown_time = 1,
645 .ignore_suspend = 1,
646 },
647 /* MAD BE */
648 {
649 .name = LPASS_BE_SLIMBUS_5_TX,
650 .stream_name = "Slimbus5 Capture",
651 .cpu_dai_name = "msm-dai-q6-dev.16395",
652 .platform_name = "msm-pcm-routing",
653 .codec_name = "tavil_codec",
654 .codec_dai_name = "tavil_mad1",
655 .no_pcm = 1,
656 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530657 .id = MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530658 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
659 .ops = &msm_ext_slimbus_be_ops,
660 .ignore_suspend = 1,
661 },
662 {
663 .name = LPASS_BE_SLIMBUS_6_RX,
664 .stream_name = "Slimbus6 Playback",
665 .cpu_dai_name = "msm-dai-q6-dev.16396",
666 .platform_name = "msm-pcm-routing",
667 .codec_name = "tavil_codec",
668 .codec_dai_name = "tavil_rx4",
669 .no_pcm = 1,
670 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530671 .id = MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530672 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
673 .ops = &msm_ext_slimbus_be_ops,
674 /* dai link has playback support */
675 .ignore_pmdown_time = 1,
676 .ignore_suspend = 1,
677 },
678};
679
680static struct snd_soc_dai_link msm_ext_common_fe_dai[] = {
681 /* FrontEnd DAI Links */
682 {/* hw:x,0 */
683 .name = MSM_DAILINK_NAME(Media1),
684 .stream_name = "MultiMedia1",
685 .cpu_dai_name = "MultiMedia1",
686 .platform_name = "msm-pcm-dsp.0",
687 .dynamic = 1,
688 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
689 SND_SOC_DPCM_TRIGGER_POST},
690 .codec_dai_name = "snd-soc-dummy-dai",
691 .codec_name = "snd-soc-dummy",
692 .ignore_suspend = 1,
693 .dpcm_playback = 1,
694 .dpcm_capture = 1,
695 /* this dai link has playback support */
696 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530697 .id = MSM_FRONTEND_DAI_MULTIMEDIA1
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530698 },
699 {/* hw:x,1 */
700 .name = MSM_DAILINK_NAME(Media2),
701 .stream_name = "MultiMedia2",
702 .cpu_dai_name = "MultiMedia2",
703 .platform_name = "msm-pcm-dsp.0",
704 .dynamic = 1,
705 .dpcm_playback = 1,
706 .dpcm_capture = 1,
707 .codec_dai_name = "snd-soc-dummy-dai",
708 .codec_name = "snd-soc-dummy",
709 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
710 SND_SOC_DPCM_TRIGGER_POST},
711 .ignore_suspend = 1,
712 /* this dai link has playback support */
713 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530714 .id = MSM_FRONTEND_DAI_MULTIMEDIA2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530715 },
716 {/* hw:x,2 */
717 .name = "VoiceMMode1",
718 .stream_name = "VoiceMMode1",
719 .cpu_dai_name = "VoiceMMode1",
720 .platform_name = "msm-pcm-voice",
721 .dynamic = 1,
722 .dpcm_capture = 1,
723 .dpcm_playback = 1,
724 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
725 SND_SOC_DPCM_TRIGGER_POST},
726 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
727 .ignore_suspend = 1,
728 .ignore_pmdown_time = 1,
729 .codec_dai_name = "snd-soc-dummy-dai",
730 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530731 .id = MSM_FRONTEND_DAI_VOICEMMODE1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530732 },
733 {/* hw:x,3 */
734 .name = "MSM VoIP",
735 .stream_name = "VoIP",
736 .cpu_dai_name = "VoIP",
737 .platform_name = "msm-voip-dsp",
738 .dynamic = 1,
739 .dpcm_playback = 1,
740 .dpcm_capture = 1,
741 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
742 SND_SOC_DPCM_TRIGGER_POST},
743 .codec_dai_name = "snd-soc-dummy-dai",
744 .codec_name = "snd-soc-dummy",
745 .ignore_suspend = 1,
746 /* this dai link has playback support */
747 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530748 .id = MSM_FRONTEND_DAI_VOIP,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530749 },
750 {/* hw:x,4 */
751 .name = MSM_DAILINK_NAME(ULL),
752 .stream_name = "ULL",
753 .cpu_dai_name = "MultiMedia3",
754 .platform_name = "msm-pcm-dsp.2",
755 .dynamic = 1,
756 .dpcm_playback = 1,
757 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
758 SND_SOC_DPCM_TRIGGER_POST},
759 .codec_dai_name = "snd-soc-dummy-dai",
760 .codec_name = "snd-soc-dummy",
761 .ignore_suspend = 1,
762 /* this dai link has playback support */
763 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530764 .id = MSM_FRONTEND_DAI_MULTIMEDIA3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530765 },
766 /* Hostless PCM purpose */
767 {/* hw:x,5 */
768 .name = "SLIMBUS_0 Hostless",
769 .stream_name = "SLIMBUS_0 Hostless",
770 .cpu_dai_name = "SLIMBUS0_HOSTLESS",
771 .platform_name = "msm-pcm-hostless",
772 .dynamic = 1,
773 .dpcm_capture = 1,
774 .dpcm_playback = 1,
775 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
776 SND_SOC_DPCM_TRIGGER_POST},
777 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
778 .ignore_suspend = 1,
779 .ignore_pmdown_time = 1,
780 /* This dai link has MI2S support */
781 .codec_dai_name = "snd-soc-dummy-dai",
782 .codec_name = "snd-soc-dummy",
783 },
784 {/* hw:x,6 */
785 .name = "MSM AFE-PCM RX",
786 .stream_name = "AFE-PROXY RX",
787 .cpu_dai_name = "msm-dai-q6-dev.241",
788 .codec_name = "msm-stub-codec.1",
789 .codec_dai_name = "msm-stub-rx",
790 .platform_name = "msm-pcm-afe",
791 .ignore_suspend = 1,
792 /* this dai link has playback support */
793 .ignore_pmdown_time = 1,
794 },
795 {/* hw:x,7 */
796 .name = "MSM AFE-PCM TX",
797 .stream_name = "AFE-PROXY TX",
798 .cpu_dai_name = "msm-dai-q6-dev.240",
799 .codec_name = "msm-stub-codec.1",
800 .codec_dai_name = "msm-stub-tx",
801 .platform_name = "msm-pcm-afe",
802 .ignore_suspend = 1,
803 },
804 {/* hw:x,8 */
805 .name = MSM_DAILINK_NAME(Compress1),
806 .stream_name = "Compress1",
807 .cpu_dai_name = "MultiMedia4",
808 .platform_name = "msm-compress-dsp",
809 .async_ops = ASYNC_DPCM_SND_SOC_HW_PARAMS,
810 .dynamic = 1,
811 .dpcm_capture = 1,
812 .dpcm_playback = 1,
813 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
814 SND_SOC_DPCM_TRIGGER_POST},
815 .codec_dai_name = "snd-soc-dummy-dai",
816 .codec_name = "snd-soc-dummy",
817 .ignore_suspend = 1,
818 .ignore_pmdown_time = 1,
819 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530820 .id = MSM_FRONTEND_DAI_MULTIMEDIA4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530821 },
822 {/* hw:x,9*/
823 .name = "AUXPCM Hostless",
824 .stream_name = "AUXPCM Hostless",
825 .cpu_dai_name = "AUXPCM_HOSTLESS",
826 .platform_name = "msm-pcm-hostless",
827 .dynamic = 1,
828 .dpcm_capture = 1,
829 .dpcm_playback = 1,
830 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
831 SND_SOC_DPCM_TRIGGER_POST},
832 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
833 .ignore_suspend = 1,
834 /* this dai link has playback support */
835 .ignore_pmdown_time = 1,
836 .codec_dai_name = "snd-soc-dummy-dai",
837 .codec_name = "snd-soc-dummy",
838 },
839 {/* hw:x,10 */
840 .name = "SLIMBUS_1 Hostless",
841 .stream_name = "SLIMBUS_1 Hostless",
842 .cpu_dai_name = "SLIMBUS1_HOSTLESS",
843 .platform_name = "msm-pcm-hostless",
844 .dynamic = 1,
845 .dpcm_capture = 1,
846 .dpcm_playback = 1,
847 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
848 SND_SOC_DPCM_TRIGGER_POST},
849 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
850 .ignore_suspend = 1,
851 .ignore_pmdown_time = 1, /* dai link has playback support */
852 .codec_dai_name = "snd-soc-dummy-dai",
853 .codec_name = "snd-soc-dummy",
854 },
855 {/* hw:x,11 */
856 .name = "SLIMBUS_3 Hostless",
857 .stream_name = "SLIMBUS_3 Hostless",
858 .cpu_dai_name = "SLIMBUS3_HOSTLESS",
859 .platform_name = "msm-pcm-hostless",
860 .dynamic = 1,
861 .dpcm_capture = 1,
862 .dpcm_playback = 1,
863 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
864 SND_SOC_DPCM_TRIGGER_POST},
865 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
866 .ignore_suspend = 1,
867 .ignore_pmdown_time = 1, /* dai link has playback support */
868 .codec_dai_name = "snd-soc-dummy-dai",
869 .codec_name = "snd-soc-dummy",
870 },
871 {/* hw:x,12 */
872 .name = "SLIMBUS_4 Hostless",
873 .stream_name = "SLIMBUS_4 Hostless",
874 .cpu_dai_name = "SLIMBUS4_HOSTLESS",
875 .platform_name = "msm-pcm-hostless",
876 .dynamic = 1,
877 .dpcm_capture = 1,
878 .dpcm_playback = 1,
879 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
880 SND_SOC_DPCM_TRIGGER_POST},
881 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
882 .ignore_suspend = 1,
883 .ignore_pmdown_time = 1, /* dai link has playback support */
884 .codec_dai_name = "snd-soc-dummy-dai",
885 .codec_name = "snd-soc-dummy",
886 },
887 {/* hw:x,13 */
888 .name = MSM_DAILINK_NAME(LowLatency),
889 .stream_name = "MultiMedia5",
890 .cpu_dai_name = "MultiMedia5",
891 .platform_name = "msm-pcm-dsp.1",
892 .dynamic = 1,
893 .dpcm_capture = 1,
894 .dpcm_playback = 1,
895 .codec_dai_name = "snd-soc-dummy-dai",
896 .codec_name = "snd-soc-dummy",
897 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
898 SND_SOC_DPCM_TRIGGER_POST},
899 .ignore_suspend = 1,
900 /* this dai link has playback support */
901 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530902 .id = MSM_FRONTEND_DAI_MULTIMEDIA5,
Revathi Uddaraju30feb0d2017-11-21 15:30:19 +0530903 .ops = &msm_fe_qos_ops,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530904 },
905 /* LSM FE */
906 {/* hw:x,14 */
907 .name = "Listen 1 Audio Service",
908 .stream_name = "Listen 1 Audio Service",
909 .cpu_dai_name = "LSM1",
910 .platform_name = "msm-lsm-client",
911 .dynamic = 1,
912 .dpcm_capture = 1,
913 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
914 SND_SOC_DPCM_TRIGGER_POST },
915 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
916 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530917 .codec_dai_name = "snd-soc-dummy-dai",
918 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530919 .id = MSM_FRONTEND_DAI_LSM1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530920 },
921 {/* hw:x,15 */
922 .name = MSM_DAILINK_NAME(Compress2),
923 .stream_name = "Compress2",
924 .cpu_dai_name = "MultiMedia7",
925 .platform_name = "msm-compress-dsp",
926 .dynamic = 1,
927 .dpcm_capture = 1,
928 .dpcm_playback = 1,
929 .codec_dai_name = "snd-soc-dummy-dai",
930 .codec_name = "snd-soc-dummy",
931 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
932 SND_SOC_DPCM_TRIGGER_POST},
933 .ignore_suspend = 1,
934 /* this dai link has playback support */
935 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530936 .id = MSM_FRONTEND_DAI_MULTIMEDIA7,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530937 },
938 {/* hw:x,16 */
Laxminath Kasam38070be2017-08-17 18:21:59 +0530939 .name = MSM_DAILINK_NAME(MultiMedia10),
940 .stream_name = "MultiMedia10",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530941 .cpu_dai_name = "MultiMedia10",
Laxminath Kasam38070be2017-08-17 18:21:59 +0530942 .platform_name = "msm-pcm-dsp.1",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530943 .dynamic = 1,
944 .dpcm_capture = 1,
945 .dpcm_playback = 1,
946 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
947 SND_SOC_DPCM_TRIGGER_POST},
948 .codec_dai_name = "snd-soc-dummy-dai",
949 .codec_name = "snd-soc-dummy",
950 .ignore_suspend = 1,
951 .ignore_pmdown_time = 1,
952 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530953 .id = MSM_FRONTEND_DAI_MULTIMEDIA10,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530954 },
955 {/* hw:x,17 */
956 .name = MSM_DAILINK_NAME(ULL_NOIRQ),
957 .stream_name = "MM_NOIRQ",
958 .cpu_dai_name = "MultiMedia8",
959 .platform_name = "msm-pcm-dsp-noirq",
960 .dynamic = 1,
961 .dpcm_capture = 1,
962 .dpcm_playback = 1,
963 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
964 SND_SOC_DPCM_TRIGGER_POST},
965 .codec_dai_name = "snd-soc-dummy-dai",
966 .codec_name = "snd-soc-dummy",
967 .ignore_suspend = 1,
968 .ignore_pmdown_time = 1,
969 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530970 .id = MSM_FRONTEND_DAI_MULTIMEDIA8,
Revathi Uddaraju30feb0d2017-11-21 15:30:19 +0530971 .ops = &msm_fe_qos_ops,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530972 },
973 {/* hw:x,18 */
974 .name = "HDMI_RX_HOSTLESS",
975 .stream_name = "HDMI_RX_HOSTLESS",
976 .cpu_dai_name = "HDMI_HOSTLESS",
977 .platform_name = "msm-pcm-hostless",
978 .dynamic = 1,
979 .dpcm_playback = 1,
980 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
981 SND_SOC_DPCM_TRIGGER_POST},
982 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
983 .ignore_suspend = 1,
984 .ignore_pmdown_time = 1,
985 .codec_dai_name = "snd-soc-dummy-dai",
986 .codec_name = "snd-soc-dummy",
987 },
988 {/* hw:x,19 */
989 .name = "VoiceMMode2",
990 .stream_name = "VoiceMMode2",
991 .cpu_dai_name = "VoiceMMode2",
992 .platform_name = "msm-pcm-voice",
993 .dynamic = 1,
994 .dpcm_capture = 1,
995 .dpcm_playback = 1,
996 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
997 SND_SOC_DPCM_TRIGGER_POST},
998 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
999 .ignore_suspend = 1,
1000 .ignore_pmdown_time = 1,
1001 .codec_dai_name = "snd-soc-dummy-dai",
1002 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301003 .id = MSM_FRONTEND_DAI_VOICEMMODE2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301004 },
1005 {/* hw:x,20 */
1006 .name = "Listen 2 Audio Service",
1007 .stream_name = "Listen 2 Audio Service",
1008 .cpu_dai_name = "LSM2",
1009 .platform_name = "msm-lsm-client",
1010 .dynamic = 1,
1011 .dpcm_capture = 1,
1012 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1013 SND_SOC_DPCM_TRIGGER_POST },
1014 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1015 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301016 .codec_dai_name = "snd-soc-dummy-dai",
1017 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301018 .id = MSM_FRONTEND_DAI_LSM2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301019 },
1020 {/* hw:x,21 */
1021 .name = "Listen 3 Audio Service",
1022 .stream_name = "Listen 3 Audio Service",
1023 .cpu_dai_name = "LSM3",
1024 .platform_name = "msm-lsm-client",
1025 .dynamic = 1,
1026 .dpcm_capture = 1,
1027 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1028 SND_SOC_DPCM_TRIGGER_POST },
1029 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1030 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301031 .codec_dai_name = "snd-soc-dummy-dai",
1032 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301033 .id = MSM_FRONTEND_DAI_LSM3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301034 },
1035 {/* hw:x,22 */
1036 .name = "Listen 4 Audio Service",
1037 .stream_name = "Listen 4 Audio Service",
1038 .cpu_dai_name = "LSM4",
1039 .platform_name = "msm-lsm-client",
1040 .dynamic = 1,
1041 .dpcm_capture = 1,
1042 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1043 SND_SOC_DPCM_TRIGGER_POST },
1044 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1045 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301046 .codec_dai_name = "snd-soc-dummy-dai",
1047 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301048 .id = MSM_FRONTEND_DAI_LSM4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301049 },
1050 {/* hw:x,23 */
1051 .name = "Listen 5 Audio Service",
1052 .stream_name = "Listen 5 Audio Service",
1053 .cpu_dai_name = "LSM5",
1054 .platform_name = "msm-lsm-client",
1055 .dynamic = 1,
1056 .dpcm_capture = 1,
1057 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1058 SND_SOC_DPCM_TRIGGER_POST },
1059 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1060 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301061 .codec_dai_name = "snd-soc-dummy-dai",
1062 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301063 .id = MSM_FRONTEND_DAI_LSM5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301064 },
1065 {/* hw:x,24 */
1066 .name = "Listen 6 Audio Service",
1067 .stream_name = "Listen 6 Audio Service",
1068 .cpu_dai_name = "LSM6",
1069 .platform_name = "msm-lsm-client",
1070 .dynamic = 1,
1071 .dpcm_capture = 1,
1072 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1073 SND_SOC_DPCM_TRIGGER_POST },
1074 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1075 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301076 .codec_dai_name = "snd-soc-dummy-dai",
1077 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301078 .id = MSM_FRONTEND_DAI_LSM6
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301079 },
1080 {/* hw:x,25 */
1081 .name = "Listen 7 Audio Service",
1082 .stream_name = "Listen 7 Audio Service",
1083 .cpu_dai_name = "LSM7",
1084 .platform_name = "msm-lsm-client",
1085 .dynamic = 1,
1086 .dpcm_capture = 1,
1087 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1088 SND_SOC_DPCM_TRIGGER_POST },
1089 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1090 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301091 .codec_dai_name = "snd-soc-dummy-dai",
1092 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301093 .id = MSM_FRONTEND_DAI_LSM7,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301094 },
1095 {/* hw:x,26 */
1096 .name = "Listen 8 Audio Service",
1097 .stream_name = "Listen 8 Audio Service",
1098 .cpu_dai_name = "LSM8",
1099 .platform_name = "msm-lsm-client",
1100 .dynamic = 1,
1101 .dpcm_capture = 1,
1102 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1103 SND_SOC_DPCM_TRIGGER_POST },
1104 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1105 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301106 .codec_dai_name = "snd-soc-dummy-dai",
1107 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301108 .id = MSM_FRONTEND_DAI_LSM8,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301109 },
1110 {/* hw:x,27 */
1111 .name = MSM_DAILINK_NAME(Media9),
1112 .stream_name = "MultiMedia9",
1113 .cpu_dai_name = "MultiMedia9",
1114 .platform_name = "msm-pcm-dsp.0",
1115 .dynamic = 1,
1116 .dpcm_capture = 1,
1117 .dpcm_playback = 1,
1118 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1119 SND_SOC_DPCM_TRIGGER_POST},
1120 .codec_dai_name = "snd-soc-dummy-dai",
1121 .codec_name = "snd-soc-dummy",
1122 .ignore_suspend = 1,
1123 .ignore_pmdown_time = 1,
1124 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301125 .id = MSM_FRONTEND_DAI_MULTIMEDIA9,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301126 },
1127 {/* hw:x,28 */
1128 .name = MSM_DAILINK_NAME(Compress4),
1129 .stream_name = "Compress4",
1130 .cpu_dai_name = "MultiMedia11",
1131 .platform_name = "msm-compress-dsp",
1132 .dynamic = 1,
1133 .dpcm_capture = 1,
1134 .dpcm_playback = 1,
1135 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1136 SND_SOC_DPCM_TRIGGER_POST},
1137 .codec_dai_name = "snd-soc-dummy-dai",
1138 .codec_name = "snd-soc-dummy",
1139 .ignore_suspend = 1,
1140 .ignore_pmdown_time = 1,
1141 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301142 .id = MSM_FRONTEND_DAI_MULTIMEDIA11,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301143 },
1144 {/* hw:x,29 */
1145 .name = MSM_DAILINK_NAME(Compress5),
1146 .stream_name = "Compress5",
1147 .cpu_dai_name = "MultiMedia12",
1148 .platform_name = "msm-compress-dsp",
1149 .dynamic = 1,
1150 .dpcm_capture = 1,
1151 .dpcm_playback = 1,
1152 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1153 SND_SOC_DPCM_TRIGGER_POST},
1154 .codec_dai_name = "snd-soc-dummy-dai",
1155 .codec_name = "snd-soc-dummy",
1156 .ignore_suspend = 1,
1157 .ignore_pmdown_time = 1,
1158 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301159 .id = MSM_FRONTEND_DAI_MULTIMEDIA12,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301160 },
1161 {/* hw:x,30 */
1162 .name = MSM_DAILINK_NAME(Compress6),
1163 .stream_name = "Compress6",
1164 .cpu_dai_name = "MultiMedia13",
1165 .platform_name = "msm-compress-dsp",
1166 .dynamic = 1,
1167 .dpcm_capture = 1,
1168 .dpcm_playback = 1,
1169 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1170 SND_SOC_DPCM_TRIGGER_POST},
1171 .codec_dai_name = "snd-soc-dummy-dai",
1172 .codec_name = "snd-soc-dummy",
1173 .ignore_suspend = 1,
1174 .ignore_pmdown_time = 1,
1175 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301176 .id = MSM_FRONTEND_DAI_MULTIMEDIA13,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301177 },
1178 {/* hw:x,31 */
1179 .name = MSM_DAILINK_NAME(Compress7),
1180 .stream_name = "Compress7",
1181 .cpu_dai_name = "MultiMedia14",
1182 .platform_name = "msm-compress-dsp",
1183 .dynamic = 1,
1184 .dpcm_capture = 1,
1185 .dpcm_playback = 1,
1186 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1187 SND_SOC_DPCM_TRIGGER_POST},
1188 .codec_dai_name = "snd-soc-dummy-dai",
1189 .codec_name = "snd-soc-dummy",
1190 .ignore_suspend = 1,
1191 .ignore_pmdown_time = 1,
1192 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301193 .id = MSM_FRONTEND_DAI_MULTIMEDIA14,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301194 },
1195 {/* hw:x,32 */
1196 .name = MSM_DAILINK_NAME(Compress8),
1197 .stream_name = "Compress8",
1198 .cpu_dai_name = "MultiMedia15",
1199 .platform_name = "msm-compress-dsp",
1200 .dynamic = 1,
1201 .dpcm_capture = 1,
1202 .dpcm_playback = 1,
1203 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1204 SND_SOC_DPCM_TRIGGER_POST},
1205 .codec_dai_name = "snd-soc-dummy-dai",
1206 .codec_name = "snd-soc-dummy",
1207 .ignore_suspend = 1,
1208 .ignore_pmdown_time = 1,
1209 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301210 .id = MSM_FRONTEND_DAI_MULTIMEDIA15,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301211 },
1212 {/* hw:x,33 */
Asish Bhattacharya34504582017-08-08 12:55:01 +05301213 .name = MSM_DAILINK_NAME(ULL_NOIRQ_2),
1214 .stream_name = "MM_NOIRQ_2",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301215 .cpu_dai_name = "MultiMedia16",
Asish Bhattacharya34504582017-08-08 12:55:01 +05301216 .platform_name = "msm-pcm-dsp-noirq",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301217 .dynamic = 1,
1218 .dpcm_capture = 1,
1219 .dpcm_playback = 1,
1220 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1221 SND_SOC_DPCM_TRIGGER_POST},
1222 .codec_dai_name = "snd-soc-dummy-dai",
1223 .codec_name = "snd-soc-dummy",
1224 .ignore_suspend = 1,
1225 .ignore_pmdown_time = 1,
1226 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301227 .id = MSM_FRONTEND_DAI_MULTIMEDIA16,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301228 },
1229 {/* hw:x,34 */
1230 .name = "SLIMBUS_8 Hostless",
1231 .stream_name = "SLIMBUS8_HOSTLESS Capture",
1232 .cpu_dai_name = "SLIMBUS8_HOSTLESS",
1233 .platform_name = "msm-pcm-hostless",
1234 .dynamic = 1,
1235 .dpcm_capture = 1,
1236 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1237 SND_SOC_DPCM_TRIGGER_POST},
1238 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1239 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301240 .codec_dai_name = "snd-soc-dummy-dai",
1241 .codec_name = "snd-soc-dummy",
1242 },
1243 {/* hw:x,35 */
1244 .name = "SLIMBUS7 Hostless",
1245 .stream_name = "SLIMBUS7 Hostless",
1246 .cpu_dai_name = "SLIMBUS7_HOSTLESS",
1247 .platform_name = "msm-pcm-hostless",
1248 .dynamic = 1,
1249 .dpcm_playback = 1,
1250 .dpcm_capture = 1,
1251 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1252 SND_SOC_DPCM_TRIGGER_POST},
1253 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1254 .ignore_suspend = 1,
1255 .ignore_pmdown_time = 1,
1256 .codec_dai_name = "snd-soc-dummy-dai",
1257 .codec_name = "snd-soc-dummy",
1258 },
1259 {/* hw:x,36 */
1260 .name = "SDM660 HFP TX",
1261 .stream_name = "MultiMedia6",
1262 .cpu_dai_name = "MultiMedia6",
1263 .platform_name = "msm-pcm-loopback",
1264 .dynamic = 1,
1265 .dpcm_playback = 1,
1266 .dpcm_capture = 1,
1267 .codec_dai_name = "snd-soc-dummy-dai",
1268 .codec_name = "snd-soc-dummy",
1269 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1270 SND_SOC_DPCM_TRIGGER_POST},
1271 .ignore_suspend = 1,
1272 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1273 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301274 .id = MSM_FRONTEND_DAI_MULTIMEDIA6,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301275 },
1276};
1277
1278static struct snd_soc_dai_link msm_ext_common_be_dai[] = {
1279 {
1280 .name = LPASS_BE_AFE_PCM_RX,
1281 .stream_name = "AFE Playback",
1282 .cpu_dai_name = "msm-dai-q6-dev.224",
1283 .platform_name = "msm-pcm-routing",
1284 .codec_name = "msm-stub-codec.1",
1285 .codec_dai_name = "msm-stub-rx",
1286 .no_pcm = 1,
1287 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301288 .id = MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301289 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1290 /* this dai link has playback support */
1291 .ignore_pmdown_time = 1,
1292 .ignore_suspend = 1,
1293 },
1294 {
1295 .name = LPASS_BE_AFE_PCM_TX,
1296 .stream_name = "AFE Capture",
1297 .cpu_dai_name = "msm-dai-q6-dev.225",
1298 .platform_name = "msm-pcm-routing",
1299 .codec_name = "msm-stub-codec.1",
1300 .codec_dai_name = "msm-stub-tx",
1301 .no_pcm = 1,
1302 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301303 .id = MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301304 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1305 .ignore_suspend = 1,
1306 },
1307 /* Incall Record Uplink BACK END DAI Link */
1308 {
1309 .name = LPASS_BE_INCALL_RECORD_TX,
1310 .stream_name = "Voice Uplink Capture",
1311 .cpu_dai_name = "msm-dai-q6-dev.32772",
1312 .platform_name = "msm-pcm-routing",
1313 .codec_name = "msm-stub-codec.1",
1314 .codec_dai_name = "msm-stub-tx",
1315 .no_pcm = 1,
1316 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301317 .id = MSM_BACKEND_DAI_INCALL_RECORD_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301318 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1319 .ignore_suspend = 1,
1320 },
1321 /* Incall Record Downlink BACK END DAI Link */
1322 {
1323 .name = LPASS_BE_INCALL_RECORD_RX,
1324 .stream_name = "Voice Downlink Capture",
1325 .cpu_dai_name = "msm-dai-q6-dev.32771",
1326 .platform_name = "msm-pcm-routing",
1327 .codec_name = "msm-stub-codec.1",
1328 .codec_dai_name = "msm-stub-tx",
1329 .no_pcm = 1,
1330 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301331 .id = MSM_BACKEND_DAI_INCALL_RECORD_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301332 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1333 .ignore_suspend = 1,
1334 },
1335 /* Incall Music BACK END DAI Link */
1336 {
1337 .name = LPASS_BE_VOICE_PLAYBACK_TX,
1338 .stream_name = "Voice Farend Playback",
1339 .cpu_dai_name = "msm-dai-q6-dev.32773",
1340 .platform_name = "msm-pcm-routing",
1341 .codec_name = "msm-stub-codec.1",
1342 .codec_dai_name = "msm-stub-rx",
1343 .no_pcm = 1,
1344 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301345 .id = MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301346 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1347 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301348 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301349 },
1350 /* Incall Music 2 BACK END DAI Link */
1351 {
1352 .name = LPASS_BE_VOICE2_PLAYBACK_TX,
1353 .stream_name = "Voice2 Farend Playback",
1354 .cpu_dai_name = "msm-dai-q6-dev.32770",
1355 .platform_name = "msm-pcm-routing",
1356 .codec_name = "msm-stub-codec.1",
1357 .codec_dai_name = "msm-stub-rx",
1358 .no_pcm = 1,
1359 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301360 .id = MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301361 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1362 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301363 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301364 },
1365 {
1366 .name = LPASS_BE_USB_AUDIO_RX,
1367 .stream_name = "USB Audio Playback",
1368 .cpu_dai_name = "msm-dai-q6-dev.28672",
1369 .platform_name = "msm-pcm-routing",
1370 .codec_name = "msm-stub-codec.1",
1371 .codec_dai_name = "msm-stub-rx",
1372 .no_pcm = 1,
1373 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301374 .id = MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301375 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1376 .ignore_pmdown_time = 1,
1377 .ignore_suspend = 1,
1378 },
1379 {
1380 .name = LPASS_BE_USB_AUDIO_TX,
1381 .stream_name = "USB Audio Capture",
1382 .cpu_dai_name = "msm-dai-q6-dev.28673",
1383 .platform_name = "msm-pcm-routing",
1384 .codec_name = "msm-stub-codec.1",
1385 .codec_dai_name = "msm-stub-tx",
1386 .no_pcm = 1,
1387 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301388 .id = MSM_BACKEND_DAI_USB_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301389 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1390 .ignore_suspend = 1,
1391 },
1392 {
1393 .name = LPASS_BE_PRI_TDM_RX_0,
1394 .stream_name = "Primary TDM0 Playback",
1395 .cpu_dai_name = "msm-dai-q6-tdm.36864",
1396 .platform_name = "msm-pcm-routing",
1397 .codec_name = "msm-stub-codec.1",
1398 .codec_dai_name = "msm-stub-rx",
1399 .no_pcm = 1,
1400 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301401 .id = MSM_BACKEND_DAI_PRI_TDM_RX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301402 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301403 .ops = &msm_tdm_be_ops,
1404 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301405 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301406 },
1407 {
1408 .name = LPASS_BE_PRI_TDM_TX_0,
1409 .stream_name = "Primary TDM0 Capture",
1410 .cpu_dai_name = "msm-dai-q6-tdm.36865",
1411 .platform_name = "msm-pcm-routing",
1412 .codec_name = "msm-stub-codec.1",
1413 .codec_dai_name = "msm-stub-tx",
1414 .no_pcm = 1,
1415 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301416 .id = MSM_BACKEND_DAI_PRI_TDM_TX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301417 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301418 .ops = &msm_tdm_be_ops,
1419 .ignore_suspend = 1,
1420 },
1421 {
Gangadhar Sc1a5a502020-03-03 13:23:43 +05301422 .name = LPASS_BE_PRI_TDM_TX_1,
1423 .stream_name = "Primary TDM1 Capture",
1424 .cpu_dai_name = "msm-dai-q6-tdm.36867",
1425 .platform_name = "msm-pcm-routing",
1426 .codec_name = "msm-stub-codec.1",
1427 .codec_dai_name = "msm-stub-tx1",
1428 .no_pcm = 1,
1429 .dpcm_capture = 1,
1430 .id = MSM_BACKEND_DAI_PRI_TDM_TX_1,
1431 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
1432 .ops = &msm_tdm_be_ops,
1433 .ignore_suspend = 1,
1434 },
1435 {
1436 .name = LPASS_BE_PRI_TDM_TX_2,
1437 .stream_name = "Primary TDM2 Capture",
1438 .cpu_dai_name = "msm-dai-q6-tdm.36869",
1439 .platform_name = "msm-pcm-routing",
1440 .codec_name = "msm-stub-codec.1",
1441 .codec_dai_name = "msm-stub-tx2",
1442 .no_pcm = 1,
1443 .dpcm_capture = 1,
1444 .id = MSM_BACKEND_DAI_PRI_TDM_TX_2,
1445 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
1446 .ops = &msm_tdm_be_ops,
1447 .ignore_suspend = 1,
1448 },
1449 {
1450 .name = LPASS_BE_PRI_TDM_TX_3,
1451 .stream_name = "Primary TDM3 Capture",
1452 .cpu_dai_name = "msm-dai-q6-tdm.36871",
1453 .platform_name = "msm-pcm-routing",
1454 .codec_name = "msm-stub-codec.1",
1455 .codec_dai_name = "msm-stub-tx3",
1456 .no_pcm = 1,
1457 .dpcm_capture = 1,
1458 .id = MSM_BACKEND_DAI_PRI_TDM_TX_3,
1459 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
1460 .ops = &msm_tdm_be_ops,
1461 .ignore_suspend = 1,
1462 },
1463 {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301464 .name = LPASS_BE_SEC_TDM_RX_0,
1465 .stream_name = "Secondary TDM0 Playback",
1466 .cpu_dai_name = "msm-dai-q6-tdm.36880",
1467 .platform_name = "msm-pcm-routing",
1468 .codec_name = "msm-stub-codec.1",
1469 .codec_dai_name = "msm-stub-rx",
1470 .no_pcm = 1,
1471 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301472 .id = MSM_BACKEND_DAI_SEC_TDM_RX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301473 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301474 .ops = &msm_tdm_be_ops,
1475 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301476 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301477 },
1478 {
1479 .name = LPASS_BE_SEC_TDM_TX_0,
1480 .stream_name = "Secondary TDM0 Capture",
1481 .cpu_dai_name = "msm-dai-q6-tdm.36881",
1482 .platform_name = "msm-pcm-routing",
1483 .codec_name = "msm-stub-codec.1",
1484 .codec_dai_name = "msm-stub-tx",
1485 .no_pcm = 1,
1486 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301487 .id = MSM_BACKEND_DAI_SEC_TDM_TX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301488 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301489 .ops = &msm_tdm_be_ops,
1490 .ignore_suspend = 1,
1491 },
1492 {
1493 .name = LPASS_BE_TERT_TDM_RX_0,
1494 .stream_name = "Tertiary TDM0 Playback",
1495 .cpu_dai_name = "msm-dai-q6-tdm.36896",
1496 .platform_name = "msm-pcm-routing",
1497 .codec_name = "msm-stub-codec.1",
1498 .codec_dai_name = "msm-stub-rx",
1499 .no_pcm = 1,
1500 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301501 .id = MSM_BACKEND_DAI_TERT_TDM_RX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301502 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301503 .ops = &msm_tdm_be_ops,
1504 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301505 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301506 },
1507 {
1508 .name = LPASS_BE_TERT_TDM_TX_0,
1509 .stream_name = "Tertiary TDM0 Capture",
1510 .cpu_dai_name = "msm-dai-q6-tdm.36897",
1511 .platform_name = "msm-pcm-routing",
1512 .codec_name = "msm-stub-codec.1",
1513 .codec_dai_name = "msm-stub-tx",
1514 .no_pcm = 1,
1515 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301516 .id = MSM_BACKEND_DAI_TERT_TDM_TX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301517 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301518 .ops = &msm_tdm_be_ops,
1519 .ignore_suspend = 1,
1520 },
1521 {
1522 .name = LPASS_BE_QUAT_TDM_RX_0,
1523 .stream_name = "Quaternary TDM0 Playback",
1524 .cpu_dai_name = "msm-dai-q6-tdm.36912",
1525 .platform_name = "msm-pcm-routing",
1526 .codec_name = "msm-stub-codec.1",
1527 .codec_dai_name = "msm-stub-rx",
1528 .no_pcm = 1,
1529 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301530 .id = MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301531 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301532 .ops = &msm_tdm_be_ops,
1533 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301534 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301535 },
1536 {
1537 .name = LPASS_BE_QUAT_TDM_TX_0,
1538 .stream_name = "Quaternary TDM0 Capture",
1539 .cpu_dai_name = "msm-dai-q6-tdm.36913",
1540 .platform_name = "msm-pcm-routing",
1541 .codec_name = "msm-stub-codec.1",
1542 .codec_dai_name = "msm-stub-tx",
1543 .no_pcm = 1,
1544 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301545 .id = MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301546 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301547 .ops = &msm_tdm_be_ops,
1548 .ignore_suspend = 1,
1549 },
Rohit Kumard1754482017-09-10 22:57:39 +05301550 {
1551 .name = LPASS_BE_QUIN_TDM_RX_0,
1552 .stream_name = "Quinary TDM0 Playback",
Rohit kumar091ff792017-10-11 18:35:07 +05301553 .cpu_dai_name = "msm-dai-q6-tdm.36928",
Rohit Kumard1754482017-09-10 22:57:39 +05301554 .platform_name = "msm-pcm-routing",
1555 .codec_name = "msm-stub-codec.1",
1556 .codec_dai_name = "msm-stub-rx",
1557 .no_pcm = 1,
1558 .dpcm_playback = 1,
1559 .id = MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301560 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Rohit Kumard1754482017-09-10 22:57:39 +05301561 .ops = &msm_tdm_be_ops,
1562 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301563 .ignore_pmdown_time = 1,
Rohit Kumard1754482017-09-10 22:57:39 +05301564 },
1565 {
1566 .name = LPASS_BE_QUIN_TDM_TX_0,
1567 .stream_name = "Quinary TDM0 Capture",
Rohit kumar091ff792017-10-11 18:35:07 +05301568 .cpu_dai_name = "msm-dai-q6-tdm.36929",
Rohit Kumard1754482017-09-10 22:57:39 +05301569 .platform_name = "msm-pcm-routing",
1570 .codec_name = "msm-stub-codec.1",
1571 .codec_dai_name = "msm-stub-tx",
1572 .no_pcm = 1,
1573 .dpcm_capture = 1,
1574 .id = MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301575 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Rohit Kumard1754482017-09-10 22:57:39 +05301576 .ops = &msm_tdm_be_ops,
1577 .ignore_suspend = 1,
1578 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301579};
1580
1581static struct snd_soc_dai_link msm_mi2s_be_dai_links[] = {
1582 {
1583 .name = LPASS_BE_PRI_MI2S_RX,
1584 .stream_name = "Primary MI2S Playback",
1585 .cpu_dai_name = "msm-dai-q6-mi2s.0",
1586 .platform_name = "msm-pcm-routing",
1587 .codec_name = "msm-stub-codec.1",
1588 .codec_dai_name = "msm-stub-rx",
1589 .no_pcm = 1,
1590 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301591 .id = MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301592 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1593 .ops = &msm_mi2s_be_ops,
1594 .ignore_suspend = 1,
1595 .ignore_pmdown_time = 1,
1596 },
1597 {
1598 .name = LPASS_BE_PRI_MI2S_TX,
1599 .stream_name = "Primary MI2S Capture",
1600 .cpu_dai_name = "msm-dai-q6-mi2s.0",
1601 .platform_name = "msm-pcm-routing",
1602 .codec_name = "msm-stub-codec.1",
1603 .codec_dai_name = "msm-stub-tx",
1604 .no_pcm = 1,
1605 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301606 .id = MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301607 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1608 .ops = &msm_mi2s_be_ops,
1609 .ignore_suspend = 1,
1610 },
1611 {
1612 .name = LPASS_BE_SEC_MI2S_RX,
1613 .stream_name = "Secondary MI2S Playback",
1614 .cpu_dai_name = "msm-dai-q6-mi2s.1",
1615 .platform_name = "msm-pcm-routing",
1616 .codec_name = "msm-stub-codec.1",
1617 .codec_dai_name = "msm-stub-rx",
1618 .no_pcm = 1,
1619 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301620 .id = MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301621 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1622 .ops = &msm_mi2s_be_ops,
1623 .ignore_suspend = 1,
1624 .ignore_pmdown_time = 1,
1625 },
1626 {
1627 .name = LPASS_BE_SEC_MI2S_TX,
1628 .stream_name = "Secondary MI2S Capture",
1629 .cpu_dai_name = "msm-dai-q6-mi2s.1",
1630 .platform_name = "msm-pcm-routing",
1631 .codec_name = "msm-stub-codec.1",
1632 .codec_dai_name = "msm-stub-tx",
1633 .no_pcm = 1,
1634 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301635 .id = MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301636 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1637 .ops = &msm_mi2s_be_ops,
1638 .ignore_suspend = 1,
1639 },
1640 {
1641 .name = LPASS_BE_TERT_MI2S_RX,
1642 .stream_name = "Tertiary MI2S Playback",
1643 .cpu_dai_name = "msm-dai-q6-mi2s.2",
1644 .platform_name = "msm-pcm-routing",
1645 .codec_name = "msm-stub-codec.1",
1646 .codec_dai_name = "msm-stub-rx",
1647 .no_pcm = 1,
1648 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301649 .id = MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301650 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1651 .ops = &msm_mi2s_be_ops,
1652 .ignore_suspend = 1,
1653 .ignore_pmdown_time = 1,
1654 },
1655 {
1656 .name = LPASS_BE_TERT_MI2S_TX,
1657 .stream_name = "Tertiary MI2S Capture",
1658 .cpu_dai_name = "msm-dai-q6-mi2s.2",
1659 .platform_name = "msm-pcm-routing",
1660 .codec_name = "msm-stub-codec.1",
1661 .codec_dai_name = "msm-stub-tx",
1662 .no_pcm = 1,
1663 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301664 .id = MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301665 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1666 .ops = &msm_mi2s_be_ops,
1667 .ignore_suspend = 1,
1668 },
1669 {
1670 .name = LPASS_BE_QUAT_MI2S_RX,
1671 .stream_name = "Quaternary MI2S Playback",
1672 .cpu_dai_name = "msm-dai-q6-mi2s.3",
1673 .platform_name = "msm-pcm-routing",
1674 .codec_name = "msm-stub-codec.1",
1675 .codec_dai_name = "msm-stub-rx",
1676 .no_pcm = 1,
1677 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301678 .id = MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301679 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1680 .ops = &msm_mi2s_be_ops,
1681 .ignore_suspend = 1,
1682 .ignore_pmdown_time = 1,
1683 },
1684 {
1685 .name = LPASS_BE_QUAT_MI2S_TX,
1686 .stream_name = "Quaternary MI2S Capture",
1687 .cpu_dai_name = "msm-dai-q6-mi2s.3",
1688 .platform_name = "msm-pcm-routing",
1689 .codec_name = "msm-stub-codec.1",
1690 .codec_dai_name = "msm-stub-tx",
1691 .no_pcm = 1,
1692 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301693 .id = MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301694 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1695 .ops = &msm_mi2s_be_ops,
1696 .ignore_suspend = 1,
1697 },
Rohit Kumard1754482017-09-10 22:57:39 +05301698 {
1699 .name = LPASS_BE_QUIN_MI2S_RX,
1700 .stream_name = "Quinary MI2S Playback",
Rohit kumar20df5452017-10-16 15:35:56 +05301701 .cpu_dai_name = "msm-dai-q6-mi2s.4",
Rohit Kumard1754482017-09-10 22:57:39 +05301702 .platform_name = "msm-pcm-routing",
1703 .codec_name = "msm-stub-codec.1",
1704 .codec_dai_name = "msm-stub-rx",
1705 .no_pcm = 1,
1706 .dpcm_playback = 1,
1707 .id = MSM_BACKEND_DAI_QUINARY_MI2S_RX,
1708 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1709 .ops = &msm_mi2s_be_ops,
1710 .ignore_suspend = 1,
1711 .ignore_pmdown_time = 1,
1712 },
1713 {
1714 .name = LPASS_BE_QUIN_MI2S_TX,
1715 .stream_name = "Quinary MI2S Capture",
Rohit kumar20df5452017-10-16 15:35:56 +05301716 .cpu_dai_name = "msm-dai-q6-mi2s.4",
Rohit Kumard1754482017-09-10 22:57:39 +05301717 .platform_name = "msm-pcm-routing",
1718 .codec_name = "msm-stub-codec.1",
1719 .codec_dai_name = "msm-stub-tx",
1720 .no_pcm = 1,
1721 .dpcm_capture = 1,
1722 .id = MSM_BACKEND_DAI_QUINARY_MI2S_TX,
1723 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1724 .ops = &msm_mi2s_be_ops,
1725 .ignore_suspend = 1,
1726 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301727};
1728
1729static struct snd_soc_dai_link msm_auxpcm_be_dai_links[] = {
1730 /* Primary AUX PCM Backend DAI Links */
1731 {
1732 .name = LPASS_BE_AUXPCM_RX,
1733 .stream_name = "AUX PCM Playback",
1734 .cpu_dai_name = "msm-dai-q6-auxpcm.1",
1735 .platform_name = "msm-pcm-routing",
1736 .codec_name = "msm-stub-codec.1",
1737 .codec_dai_name = "msm-stub-rx",
1738 .no_pcm = 1,
1739 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301740 .id = MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301741 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1742 .ignore_pmdown_time = 1,
1743 .ignore_suspend = 1,
1744 .ops = &msm_aux_pcm_be_ops,
1745 },
1746 {
1747 .name = LPASS_BE_AUXPCM_TX,
1748 .stream_name = "AUX PCM Capture",
1749 .cpu_dai_name = "msm-dai-q6-auxpcm.1",
1750 .platform_name = "msm-pcm-routing",
1751 .codec_name = "msm-stub-codec.1",
1752 .codec_dai_name = "msm-stub-tx",
1753 .no_pcm = 1,
1754 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301755 .id = MSM_BACKEND_DAI_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301756 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301757 .ignore_suspend = 1,
1758 .ops = &msm_aux_pcm_be_ops,
1759 },
1760 /* Secondary AUX PCM Backend DAI Links */
1761 {
1762 .name = LPASS_BE_SEC_AUXPCM_RX,
1763 .stream_name = "Sec AUX PCM Playback",
1764 .cpu_dai_name = "msm-dai-q6-auxpcm.2",
1765 .platform_name = "msm-pcm-routing",
1766 .codec_name = "msm-stub-codec.1",
1767 .codec_dai_name = "msm-stub-rx",
1768 .no_pcm = 1,
1769 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301770 .id = MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301771 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1772 .ignore_pmdown_time = 1,
1773 .ignore_suspend = 1,
1774 .ops = &msm_aux_pcm_be_ops,
1775 },
1776 {
1777 .name = LPASS_BE_SEC_AUXPCM_TX,
1778 .stream_name = "Sec AUX PCM Capture",
1779 .cpu_dai_name = "msm-dai-q6-auxpcm.2",
1780 .platform_name = "msm-pcm-routing",
1781 .codec_name = "msm-stub-codec.1",
1782 .codec_dai_name = "msm-stub-tx",
1783 .no_pcm = 1,
1784 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301785 .id = MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301786 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1787 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301788 .ops = &msm_aux_pcm_be_ops,
1789 },
1790 /* Tertiary AUX PCM Backend DAI Links */
1791 {
1792 .name = LPASS_BE_TERT_AUXPCM_RX,
1793 .stream_name = "Tert AUX PCM Playback",
1794 .cpu_dai_name = "msm-dai-q6-auxpcm.3",
1795 .platform_name = "msm-pcm-routing",
1796 .codec_name = "msm-stub-codec.1",
1797 .codec_dai_name = "msm-stub-rx",
1798 .no_pcm = 1,
1799 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301800 .id = MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301801 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1802 .ignore_pmdown_time = 1,
1803 .ignore_suspend = 1,
1804 .ops = &msm_aux_pcm_be_ops,
1805 },
1806 {
1807 .name = LPASS_BE_TERT_AUXPCM_TX,
1808 .stream_name = "Tert AUX PCM Capture",
1809 .cpu_dai_name = "msm-dai-q6-auxpcm.3",
1810 .platform_name = "msm-pcm-routing",
1811 .codec_name = "msm-stub-codec.1",
1812 .codec_dai_name = "msm-stub-tx",
1813 .no_pcm = 1,
1814 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301815 .id = MSM_BACKEND_DAI_TERT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301816 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1817 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301818 .ops = &msm_aux_pcm_be_ops,
1819 },
1820 /* Quaternary AUX PCM Backend DAI Links */
1821 {
1822 .name = LPASS_BE_QUAT_AUXPCM_RX,
1823 .stream_name = "Quat AUX PCM Playback",
1824 .cpu_dai_name = "msm-dai-q6-auxpcm.4",
1825 .platform_name = "msm-pcm-routing",
1826 .codec_name = "msm-stub-codec.1",
1827 .codec_dai_name = "msm-stub-rx",
1828 .no_pcm = 1,
1829 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301830 .id = MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301831 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1832 .ignore_pmdown_time = 1,
1833 .ignore_suspend = 1,
1834 .ops = &msm_aux_pcm_be_ops,
1835 },
1836 {
1837 .name = LPASS_BE_QUAT_AUXPCM_TX,
1838 .stream_name = "Quat AUX PCM Capture",
1839 .cpu_dai_name = "msm-dai-q6-auxpcm.4",
1840 .platform_name = "msm-pcm-routing",
1841 .codec_name = "msm-stub-codec.1",
1842 .codec_dai_name = "msm-stub-tx",
1843 .no_pcm = 1,
1844 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301845 .id = MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301846 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1847 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301848 .ops = &msm_aux_pcm_be_ops,
1849 },
Rohit Kumard1754482017-09-10 22:57:39 +05301850 /* Quinary AUX PCM Backend DAI Links */
1851 {
1852 .name = LPASS_BE_QUIN_AUXPCM_RX,
1853 .stream_name = "Quin AUX PCM Playback",
1854 .cpu_dai_name = "msm-dai-q6-auxpcm.5",
1855 .platform_name = "msm-pcm-routing",
1856 .codec_name = "msm-stub-codec.1",
1857 .codec_dai_name = "msm-stub-rx",
1858 .no_pcm = 1,
1859 .dpcm_playback = 1,
1860 .id = MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
1861 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1862 .ignore_pmdown_time = 1,
1863 .ignore_suspend = 1,
1864 .ops = &msm_aux_pcm_be_ops,
1865 },
1866 {
1867 .name = LPASS_BE_QUIN_AUXPCM_TX,
1868 .stream_name = "Quin AUX PCM Capture",
1869 .cpu_dai_name = "msm-dai-q6-auxpcm.5",
1870 .platform_name = "msm-pcm-routing",
1871 .codec_name = "msm-stub-codec.1",
1872 .codec_dai_name = "msm-stub-tx",
1873 .no_pcm = 1,
1874 .dpcm_capture = 1,
1875 .id = MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
1876 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1877 .ignore_suspend = 1,
Rohit Kumard1754482017-09-10 22:57:39 +05301878 .ops = &msm_aux_pcm_be_ops,
1879 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301880};
1881
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05301882static struct snd_soc_dai_link msm_afe_rxtx_lb_be_dai_link[] = {
1883 {
1884 .name = LPASS_BE_AFE_LOOPBACK_TX,
1885 .stream_name = "AFE Loopback Capture",
1886 .cpu_dai_name = "msm-dai-q6-dev.24577",
1887 .platform_name = "msm-pcm-routing",
1888 .codec_name = "msm-stub-codec.1",
1889 .codec_dai_name = "msm-stub-tx",
1890 .no_pcm = 1,
1891 .dpcm_capture = 1,
1892 .id = MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
1893 .ignore_pmdown_time = 1,
1894 .ignore_suspend = 1,
1895 },
1896};
1897
1898
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301899static struct snd_soc_dai_link msm_wcn_be_dai_links[] = {
1900 {
1901 .name = LPASS_BE_SLIMBUS_7_RX,
1902 .stream_name = "Slimbus7 Playback",
1903 .cpu_dai_name = "msm-dai-q6-dev.16398",
1904 .platform_name = "msm-pcm-routing",
1905 .codec_name = "btfmslim_slave",
1906 /* BT codec driver determines capabilities based on
1907 * dai name, bt codecdai name should always contains
1908 * supported usecase information
1909 */
1910 .codec_dai_name = "btfm_bt_sco_a2dp_slim_rx",
1911 .no_pcm = 1,
1912 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301913 .id = MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301914 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1915 .ops = &msm_wcn_ops,
1916 /* dai link has playback support */
1917 .ignore_pmdown_time = 1,
1918 .ignore_suspend = 1,
1919 },
1920 {
1921 .name = LPASS_BE_SLIMBUS_7_TX,
1922 .stream_name = "Slimbus7 Capture",
1923 .cpu_dai_name = "msm-dai-q6-dev.16399",
1924 .platform_name = "msm-pcm-routing",
1925 .codec_name = "btfmslim_slave",
1926 .codec_dai_name = "btfm_bt_sco_slim_tx",
1927 .no_pcm = 1,
1928 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301929 .id = MSM_BACKEND_DAI_SLIMBUS_7_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301930 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1931 .ops = &msm_wcn_ops,
1932 .ignore_suspend = 1,
1933 },
1934 {
1935 .name = LPASS_BE_SLIMBUS_8_TX,
1936 .stream_name = "Slimbus8 Capture",
1937 .cpu_dai_name = "msm-dai-q6-dev.16401",
1938 .platform_name = "msm-pcm-routing",
1939 .codec_name = "btfmslim_slave",
1940 .codec_dai_name = "btfm_fm_slim_tx",
1941 .no_pcm = 1,
1942 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301943 .id = MSM_BACKEND_DAI_SLIMBUS_8_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301944 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1945 .init = &msm_wcn_init,
1946 .ops = &msm_wcn_ops,
1947 .ignore_suspend = 1,
1948 },
1949};
1950
1951static struct snd_soc_dai_link ext_disp_be_dai_link[] = {
1952 /* DISP PORT BACK END DAI Link */
1953 {
1954 .name = LPASS_BE_DISPLAY_PORT,
1955 .stream_name = "Display Port Playback",
1956 .cpu_dai_name = "msm-dai-q6-dp.24608",
1957 .platform_name = "msm-pcm-routing",
1958 .codec_name = "msm-ext-disp-audio-codec-rx",
1959 .codec_dai_name = "msm_dp_audio_codec_rx_dai",
1960 .no_pcm = 1,
1961 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301962 .id = MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301963 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1964 .ignore_pmdown_time = 1,
1965 .ignore_suspend = 1,
1966 },
1967};
1968
1969static struct snd_soc_dai_link msm_ext_tasha_dai_links[
1970ARRAY_SIZE(msm_ext_common_fe_dai) +
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05301971ARRAY_SIZE(msm_ext_compress_capture_dai) +
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301972ARRAY_SIZE(msm_ext_tasha_fe_dai) +
1973ARRAY_SIZE(msm_ext_common_be_dai) +
1974ARRAY_SIZE(msm_ext_tasha_be_dai) +
1975ARRAY_SIZE(msm_mi2s_be_dai_links) +
1976ARRAY_SIZE(msm_auxpcm_be_dai_links) +
1977ARRAY_SIZE(msm_wcn_be_dai_links) +
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05301978ARRAY_SIZE(ext_disp_be_dai_link) +
1979ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link)];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301980
1981static struct snd_soc_dai_link msm_ext_tavil_dai_links[
1982ARRAY_SIZE(msm_ext_common_fe_dai) +
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05301983ARRAY_SIZE(msm_ext_compress_capture_dai) +
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05301984ARRAY_SIZE(msm_ext_tavil_fe_dai) +
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301985ARRAY_SIZE(msm_ext_common_be_dai) +
1986ARRAY_SIZE(msm_ext_tavil_be_dai) +
1987ARRAY_SIZE(msm_mi2s_be_dai_links) +
1988ARRAY_SIZE(msm_auxpcm_be_dai_links) +
1989ARRAY_SIZE(msm_wcn_be_dai_links) +
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05301990ARRAY_SIZE(ext_disp_be_dai_link) +
1991ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link)];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301992
1993/**
1994 * populate_snd_card_dailinks - prepares dailink array and initializes card.
1995 *
1996 * @dev: device handle
1997 *
1998 * Returns card on success or NULL on failure.
1999 */
2000struct snd_soc_card *populate_snd_card_dailinks(struct device *dev,
2001 int snd_card_val)
2002{
2003 struct snd_soc_card *card;
2004 struct snd_soc_dai_link *msm_ext_dai_links = NULL;
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302005 int ret, len1, len2, len3, len4, len5;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302006 enum codec_variant codec_ver = 0;
2007
2008 if (snd_card_val == EXT_SND_CARD_TASHA) {
2009 card = &snd_soc_card_msm_card_tasha;
2010 } else if (snd_card_val == EXT_SND_CARD_TAVIL) {
2011 card = &snd_soc_card_msm_card_tavil;
2012 } else {
2013 dev_err(dev, "%s: failing as no matching card name\n",
2014 __func__);
2015 return NULL;
2016 }
2017
2018 card->dev = dev;
2019 ret = snd_soc_of_parse_card_name(card, "qcom,model");
2020 if (ret) {
2021 dev_err(dev, "%s: parse card name failed, err:%d\n",
2022 __func__, ret);
2023 return NULL;
2024 }
2025
2026 if (strnstr(card->name, "tasha", strlen(card->name))) {
2027 codec_ver = tasha_codec_ver();
Rohit kumarf700c862017-12-15 15:33:57 +05302028 if (codec_ver == WCD9326) {
2029 card->name = "sdm670-tashalite-snd-card";
2030 } else if (codec_ver == WCD9XXX) {
2031 dev_err(dev, "%s: Invalid codec version %d\n",
2032 __func__, codec_ver);
2033 return NULL;
2034 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302035
2036 len1 = ARRAY_SIZE(msm_ext_common_fe_dai);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302037 len2 = len1 + ARRAY_SIZE(msm_ext_compress_capture_dai);
2038 len3 = len2 + ARRAY_SIZE(msm_ext_tasha_fe_dai);
2039 len4 = len3 + ARRAY_SIZE(msm_ext_common_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302040 memcpy(msm_ext_tasha_dai_links, msm_ext_common_fe_dai,
2041 sizeof(msm_ext_common_fe_dai));
2042 memcpy(msm_ext_tasha_dai_links + len1,
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302043 msm_ext_compress_capture_dai,
2044 sizeof(msm_ext_compress_capture_dai));
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302045 memcpy(msm_ext_tasha_dai_links + len2,
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302046 msm_ext_tasha_fe_dai, sizeof(msm_ext_tasha_fe_dai));
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302047 memcpy(msm_ext_tasha_dai_links + len3,
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302048 msm_ext_common_be_dai, sizeof(msm_ext_common_be_dai));
2049 memcpy(msm_ext_tasha_dai_links + len4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302050 msm_ext_tasha_be_dai, sizeof(msm_ext_tasha_be_dai));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302051 len5 = len4 + ARRAY_SIZE(msm_ext_tasha_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302052 if (of_property_read_bool(dev->of_node,
2053 "qcom,mi2s-audio-intf")) {
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302054 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302055 msm_mi2s_be_dai_links,
2056 sizeof(msm_mi2s_be_dai_links));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302057 len5 += ARRAY_SIZE(msm_mi2s_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302058 }
2059 if (of_property_read_bool(dev->of_node,
2060 "qcom,auxpcm-audio-intf")) {
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302061 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302062 msm_auxpcm_be_dai_links,
2063 sizeof(msm_auxpcm_be_dai_links));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302064 len5 += ARRAY_SIZE(msm_auxpcm_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302065 }
2066 if (of_property_read_bool(dev->of_node, "qcom,wcn-btfm")) {
2067 dev_dbg(dev, "%s(): WCN BTFM support present\n",
2068 __func__);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302069 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302070 msm_wcn_be_dai_links,
2071 sizeof(msm_wcn_be_dai_links));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302072 len5 += ARRAY_SIZE(msm_wcn_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302073 }
2074 if (of_property_read_bool(dev->of_node,
2075 "qcom,ext-disp-audio-rx")) {
2076 dev_dbg(dev, "%s(): ext disp audio support present\n",
2077 __func__);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302078 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302079 ext_disp_be_dai_link,
2080 sizeof(ext_disp_be_dai_link));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302081 len5 += ARRAY_SIZE(ext_disp_be_dai_link);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302082 }
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05302083 if (of_property_read_bool(dev->of_node, "qcom,afe-rxtx-lb")) {
2084 dev_dbg(dev, "%s(): AFE RX to TX loopback supported\n",
2085 __func__);
2086 memcpy(msm_ext_tasha_dai_links + len5,
2087 msm_afe_rxtx_lb_be_dai_link,
2088 sizeof(msm_afe_rxtx_lb_be_dai_link));
2089 len5 += ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link);
2090 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302091 msm_ext_dai_links = msm_ext_tasha_dai_links;
2092 } else if (strnstr(card->name, "tavil", strlen(card->name))) {
2093 len1 = ARRAY_SIZE(msm_ext_common_fe_dai);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302094 len2 = len1 + ARRAY_SIZE(msm_ext_compress_capture_dai);
2095 len3 = len2 + ARRAY_SIZE(msm_ext_tavil_fe_dai);
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302096 len4 = len3 + ARRAY_SIZE(msm_ext_common_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302097 memcpy(msm_ext_tavil_dai_links, msm_ext_common_fe_dai,
2098 sizeof(msm_ext_common_fe_dai));
2099 memcpy(msm_ext_tavil_dai_links + len1,
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302100 msm_ext_compress_capture_dai,
2101 sizeof(msm_ext_compress_capture_dai));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302102 memcpy(msm_ext_tavil_dai_links + len2,
2103 msm_ext_tavil_fe_dai, sizeof(msm_ext_tavil_fe_dai));
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302104 memcpy(msm_ext_tavil_dai_links + len3,
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302105 msm_ext_common_be_dai, sizeof(msm_ext_common_be_dai));
2106 memcpy(msm_ext_tavil_dai_links + len4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302107 msm_ext_tavil_be_dai, sizeof(msm_ext_tavil_be_dai));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302108 len5 = len4 + ARRAY_SIZE(msm_ext_tavil_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302109 if (of_property_read_bool(dev->of_node,
2110 "qcom,mi2s-audio-intf")) {
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302111 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302112 msm_mi2s_be_dai_links,
2113 sizeof(msm_mi2s_be_dai_links));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302114 len5 += ARRAY_SIZE(msm_mi2s_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302115 }
2116 if (of_property_read_bool(dev->of_node,
2117 "qcom,auxpcm-audio-intf")) {
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302118 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302119 msm_auxpcm_be_dai_links,
2120 sizeof(msm_auxpcm_be_dai_links));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302121 len5 += ARRAY_SIZE(msm_auxpcm_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302122 }
2123 if (of_property_read_bool(dev->of_node, "qcom,wcn-btfm")) {
2124 dev_dbg(dev, "%s(): WCN BTFM support present\n",
2125 __func__);
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302126 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302127 msm_wcn_be_dai_links,
2128 sizeof(msm_wcn_be_dai_links));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302129 len5 += ARRAY_SIZE(msm_wcn_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302130 }
2131 if (of_property_read_bool(dev->of_node,
2132 "qcom,ext-disp-audio-rx")) {
2133 dev_dbg(dev, "%s(): ext disp audio support present\n",
2134 __func__);
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302135 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302136 ext_disp_be_dai_link,
2137 sizeof(ext_disp_be_dai_link));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302138 len5 += ARRAY_SIZE(ext_disp_be_dai_link);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302139 }
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05302140 if (of_property_read_bool(dev->of_node, "qcom,afe-rxtx-lb")) {
2141 dev_dbg(dev, "%s(): AFE RX to TX loopback supported\n",
2142 __func__);
2143 memcpy(msm_ext_tavil_dai_links + len5,
2144 msm_afe_rxtx_lb_be_dai_link,
2145 sizeof(msm_afe_rxtx_lb_be_dai_link));
2146 len5 += ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link);
2147 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302148 msm_ext_dai_links = msm_ext_tavil_dai_links;
2149 } else {
2150 dev_err(dev, "%s: failing as no matching card name\n",
2151 __func__);
2152 return NULL;
2153 }
2154 card->dai_link = msm_ext_dai_links;
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302155 card->num_links = len5;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302156
2157 return card;
2158}
2159EXPORT_SYMBOL(populate_snd_card_dailinks);