blob: 3568ebb9c743ba88ec3834e25854084dd6d7f052 [file] [log] [blame]
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301/* Copyright (c) 2015-2018, 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
66static int msm_wcn_init(struct snd_soc_pcm_runtime *rtd)
67{
68 unsigned int rx_ch[WCN_CDC_SLIM_RX_CH_MAX] = {157, 158};
69 unsigned int tx_ch[WCN_CDC_SLIM_TX_CH_MAX] = {159, 160, 161};
70 struct snd_soc_dai *codec_dai = rtd->codec_dai;
71
72 return snd_soc_dai_set_channel_map(codec_dai, ARRAY_SIZE(tx_ch),
73 tx_ch, ARRAY_SIZE(rx_ch), rx_ch);
74}
75
76static int msm_wcn_hw_params(struct snd_pcm_substream *substream,
77 struct snd_pcm_hw_params *params)
78{
79 struct snd_soc_pcm_runtime *rtd = substream->private_data;
80 struct snd_soc_dai *codec_dai = rtd->codec_dai;
81 struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
82 struct snd_soc_dai_link *dai_link = rtd->dai_link;
83 u32 rx_ch[WCN_CDC_SLIM_RX_CH_MAX], tx_ch[WCN_CDC_SLIM_TX_CH_MAX];
84 u32 rx_ch_cnt = 0, tx_ch_cnt = 0;
85 int ret;
86
87 dev_dbg(rtd->dev, "%s: %s_tx_dai_id_%d\n", __func__,
88 codec_dai->name, codec_dai->id);
89 ret = snd_soc_dai_get_channel_map(codec_dai,
90 &tx_ch_cnt, tx_ch, &rx_ch_cnt, rx_ch);
91 if (ret) {
92 dev_err(rtd->dev,
93 "%s: failed to get BTFM codec chan map\n, err:%d\n",
94 __func__, ret);
95 goto exit;
96 }
97
Asish Bhattacharya84f7f732017-07-25 16:29:27 +053098 dev_dbg(rtd->dev, "%s: tx_ch_cnt(%d) id %d\n",
99 __func__, tx_ch_cnt, dai_link->id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530100
101 ret = snd_soc_dai_set_channel_map(cpu_dai,
102 tx_ch_cnt, tx_ch, rx_ch_cnt, rx_ch);
103 if (ret)
104 dev_err(rtd->dev, "%s: failed to set cpu chan map, err:%d\n",
105 __func__, ret);
106
107exit:
108 return ret;
109}
110
111static struct snd_soc_ops msm_wcn_ops = {
112 .hw_params = msm_wcn_hw_params,
113};
114
115/*TDM default offset currently only supporting TDM_RX_0 and TDM_TX_0 */
116static unsigned int tdm_slot_offset[TDM_PORT_MAX][TDM_SLOT_OFFSET_MAX] = {
117 {0, 4, 8, 12, 16, 20, 24, 28},/* TX_0 | RX_0 */
118 {AFE_SLOT_MAPPING_OFFSET_INVALID},/* TX_1 | RX_1 */
119 {AFE_SLOT_MAPPING_OFFSET_INVALID},/* TX_2 | RX_2 */
120 {AFE_SLOT_MAPPING_OFFSET_INVALID},/* TX_3 | RX_3 */
121 {AFE_SLOT_MAPPING_OFFSET_INVALID},/* TX_4 | RX_4 */
122 {AFE_SLOT_MAPPING_OFFSET_INVALID},/* TX_5 | RX_5 */
123 {AFE_SLOT_MAPPING_OFFSET_INVALID},/* TX_6 | RX_6 */
124 {AFE_SLOT_MAPPING_OFFSET_INVALID},/* TX_7 | RX_7 */
125};
126
127static unsigned int tdm_param_set_slot_mask(u16 port_id, int slot_width,
128 int slots)
129{
130 unsigned int slot_mask = 0;
131 int i, j;
132 unsigned int *slot_offset;
133
134 for (i = TDM_0; i < TDM_PORT_MAX; i++) {
135 slot_offset = tdm_slot_offset[i];
136
137 for (j = 0; j < TDM_SLOT_OFFSET_MAX; j++) {
138 if (slot_offset[j] != AFE_SLOT_MAPPING_OFFSET_INVALID)
139 slot_mask |=
140 (1 << ((slot_offset[j] * 8) / slot_width));
141 else
142 break;
143 }
144 }
145
146 return slot_mask;
147}
148
149static int msm_tdm_snd_hw_params(struct snd_pcm_substream *substream,
150 struct snd_pcm_hw_params *params)
151{
152 struct snd_soc_pcm_runtime *rtd = substream->private_data;
153 struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
154 int ret = 0;
155 int channels, slot_width, slots;
156 unsigned int slot_mask;
157 unsigned int *slot_offset;
158 int offset_channels = 0;
159 int i;
160
161 pr_debug("%s: dai id = 0x%x\n", __func__, cpu_dai->id);
162
163 channels = params_channels(params);
164 switch (channels) {
165 case 1:
166 case 2:
167 case 3:
168 case 4:
169 case 5:
170 case 6:
171 case 7:
172 case 8:
173 switch (params_format(params)) {
174 case SNDRV_PCM_FORMAT_S32_LE:
175 case SNDRV_PCM_FORMAT_S24_LE:
176 case SNDRV_PCM_FORMAT_S16_LE:
177 /*
178 * up to 8 channels HW config should
179 * use 32 bit slot width for max support of
180 * stream bit width. (slot_width > bit_width)
181 */
182 slot_width = 32;
183 break;
184 default:
185 pr_err("%s: invalid param format 0x%x\n",
186 __func__, params_format(params));
187 return -EINVAL;
188 }
189 slots = 8;
190 slot_mask = tdm_param_set_slot_mask(cpu_dai->id,
191 slot_width,
192 slots);
193 if (!slot_mask) {
194 pr_err("%s: invalid slot_mask 0x%x\n",
195 __func__, slot_mask);
196 return -EINVAL;
197 }
198 break;
199 default:
200 pr_err("%s: invalid param channels %d\n",
201 __func__, channels);
202 return -EINVAL;
203 }
204 /* currently only supporting TDM_RX_0 and TDM_TX_0 */
205 switch (cpu_dai->id) {
206 case AFE_PORT_ID_PRIMARY_TDM_RX:
207 case AFE_PORT_ID_SECONDARY_TDM_RX:
208 case AFE_PORT_ID_TERTIARY_TDM_RX:
209 case AFE_PORT_ID_QUATERNARY_TDM_RX:
Rohit Kumard1754482017-09-10 22:57:39 +0530210 case AFE_PORT_ID_QUINARY_TDM_RX:
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530211 case AFE_PORT_ID_PRIMARY_TDM_TX:
212 case AFE_PORT_ID_SECONDARY_TDM_TX:
213 case AFE_PORT_ID_TERTIARY_TDM_TX:
214 case AFE_PORT_ID_QUATERNARY_TDM_TX:
Rohit Kumard1754482017-09-10 22:57:39 +0530215 case AFE_PORT_ID_QUINARY_TDM_TX:
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530216 slot_offset = tdm_slot_offset[TDM_0];
217 break;
218 default:
219 pr_err("%s: dai id 0x%x not supported\n",
220 __func__, cpu_dai->id);
221 return -EINVAL;
222 }
223
224 for (i = 0; i < TDM_SLOT_OFFSET_MAX; i++) {
225 if (slot_offset[i] != AFE_SLOT_MAPPING_OFFSET_INVALID)
226 offset_channels++;
227 else
228 break;
229 }
230
231 if (offset_channels == 0) {
232 pr_err("%s: slot offset not supported, offset_channels %d\n",
233 __func__, offset_channels);
234 return -EINVAL;
235 }
236
237 if (channels > offset_channels) {
238 pr_err("%s: channels %d exceed offset_channels %d\n",
239 __func__, channels, offset_channels);
240 return -EINVAL;
241 }
242
243 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
244 ret = snd_soc_dai_set_tdm_slot(cpu_dai, 0, slot_mask,
245 slots, slot_width);
246 if (ret < 0) {
247 pr_err("%s: failed to set tdm slot, err:%d\n",
248 __func__, ret);
249 goto end;
250 }
251
252 ret = snd_soc_dai_set_channel_map(cpu_dai, 0, NULL,
253 channels, slot_offset);
254 if (ret < 0) {
255 pr_err("%s: failed to set channel map, err:%d\n",
256 __func__, ret);
257 goto end;
258 }
259 } else {
260 ret = snd_soc_dai_set_tdm_slot(cpu_dai, slot_mask, 0,
261 slots, slot_width);
262 if (ret < 0) {
263 pr_err("%s: failed to set tdm slot, err:%d\n",
264 __func__, ret);
265 goto end;
266 }
267
268 ret = snd_soc_dai_set_channel_map(cpu_dai, channels,
269 slot_offset, 0, NULL);
270 if (ret < 0) {
271 pr_err("%s: failed to set channel map, err:%d\n",
272 __func__, ret);
273 goto end;
274 }
275 }
276end:
277 return ret;
278}
279
280static struct snd_soc_ops msm_tdm_be_ops = {
281 .hw_params = msm_tdm_snd_hw_params
282};
283
Revathi Uddaraju30feb0d2017-11-21 15:30:19 +0530284static int msm_fe_qos_prepare(struct snd_pcm_substream *substream)
285{
286 cpumask_t mask;
287
288 if (pm_qos_request_active(&substream->latency_pm_qos_req))
289 pm_qos_remove_request(&substream->latency_pm_qos_req);
290
291 cpumask_clear(&mask);
292 cpumask_set_cpu(1, &mask); /* affine to core 1 */
293 cpumask_set_cpu(2, &mask); /* affine to core 2 */
294 cpumask_copy(&substream->latency_pm_qos_req.cpus_affine, &mask);
295
296 substream->latency_pm_qos_req.type = PM_QOS_REQ_AFFINE_CORES;
297
298 pm_qos_add_request(&substream->latency_pm_qos_req,
299 PM_QOS_CPU_DMA_LATENCY,
300 MSM_LL_QOS_VALUE);
301 return 0;
302}
303
304static struct snd_soc_ops msm_fe_qos_ops = {
305 .prepare = msm_fe_qos_prepare,
306};
307
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530308static struct snd_soc_dai_link msm_ext_tasha_fe_dai[] = {
309 /* tasha_vifeedback for speaker protection */
310 {
311 .name = LPASS_BE_SLIMBUS_4_TX,
312 .stream_name = "Slimbus4 Capture",
313 .cpu_dai_name = "msm-dai-q6-dev.16393",
314 .platform_name = "msm-pcm-hostless",
315 .codec_name = "tasha_codec",
316 .codec_dai_name = "tasha_vifeedback",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530317 .id = MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530318 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
319 .ops = &msm_ext_slimbus_be_ops,
320 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
321 .ignore_suspend = 1,
322 },
323 /* Ultrasound RX DAI Link */
324 {
325 .name = "SLIMBUS_2 Hostless Playback",
326 .stream_name = "SLIMBUS_2 Hostless Playback",
327 .cpu_dai_name = "msm-dai-q6-dev.16388",
328 .platform_name = "msm-pcm-hostless",
329 .codec_name = "tasha_codec",
330 .codec_dai_name = "tasha_rx2",
331 .ignore_suspend = 1,
332 .dpcm_playback = 1,
333 .dpcm_capture = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +0530334 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530335 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
336 .ops = &msm_ext_slimbus_2_be_ops,
337 },
338 /* Ultrasound TX DAI Link */
339 {
340 .name = "SLIMBUS_2 Hostless Capture",
341 .stream_name = "SLIMBUS_2 Hostless Capture",
342 .cpu_dai_name = "msm-dai-q6-dev.16389",
343 .platform_name = "msm-pcm-hostless",
344 .codec_name = "tasha_codec",
345 .codec_dai_name = "tasha_tx2",
346 .ignore_suspend = 1,
347 .dpcm_capture = 1,
348 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
349 .ops = &msm_ext_slimbus_2_be_ops,
350 },
351 /* CPE LSM direct dai-link */
352 {
353 .name = "CPE Listen service",
354 .stream_name = "CPE Listen Audio Service",
355 .cpu_dai_name = "msm-dai-slim",
356 .platform_name = "msm-cpe-lsm",
357 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
358 SND_SOC_DPCM_TRIGGER_POST},
359 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
360 .ignore_suspend = 1,
361 .dpcm_capture = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530362 .codec_dai_name = "tasha_mad1",
363 .codec_name = "tasha_codec",
364 .ops = &msm_ext_cpe_ops,
365 },
366 {
367 .name = "SLIMBUS_6 Hostless Playback",
368 .stream_name = "SLIMBUS_6 Hostless",
369 .cpu_dai_name = "SLIMBUS6_HOSTLESS",
370 .platform_name = "msm-pcm-hostless",
371 .dynamic = 1,
372 .dpcm_playback = 1,
373 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
374 SND_SOC_DPCM_TRIGGER_POST},
375 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
376 .ignore_suspend = 1,
377 /* this dailink has playback support */
378 .ignore_pmdown_time = 1,
379 .codec_dai_name = "snd-soc-dummy-dai",
380 .codec_name = "snd-soc-dummy",
381 },
382 /* CPE LSM EC PP direct dai-link */
383 {
384 .name = "CPE Listen service ECPP",
385 .stream_name = "CPE Listen Audio Service ECPP",
386 .cpu_dai_name = "CPE_LSM_NOHOST",
387 .platform_name = "msm-cpe-lsm.3",
388 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
389 SND_SOC_DPCM_TRIGGER_POST},
390 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
391 .ignore_suspend = 1,
392 .ignore_pmdown_time = 1,
393 .codec_dai_name = "tasha_cpe",
394 .codec_name = "tasha_codec",
395 },
396};
397
398static struct snd_soc_dai_link msm_ext_tavil_fe_dai[] = {
399 {
400 .name = LPASS_BE_SLIMBUS_4_TX,
401 .stream_name = "Slimbus4 Capture",
402 .cpu_dai_name = "msm-dai-q6-dev.16393",
403 .platform_name = "msm-pcm-hostless",
404 .codec_name = "tavil_codec",
405 .codec_dai_name = "tavil_vifeedback",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530406 .id = MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530407 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
408 .ops = &msm_ext_slimbus_be_ops,
409 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
410 .ignore_suspend = 1,
411 },
412 /* Ultrasound RX DAI Link */
413 {
414 .name = "SLIMBUS_2 Hostless Playback",
415 .stream_name = "SLIMBUS_2 Hostless Playback",
416 .cpu_dai_name = "msm-dai-q6-dev.16388",
417 .platform_name = "msm-pcm-hostless",
418 .codec_name = "tavil_codec",
419 .codec_dai_name = "tavil_rx2",
420 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +0530421 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530422 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
423 .ops = &msm_ext_slimbus_2_be_ops,
424 },
425 /* Ultrasound TX DAI Link */
426 {
427 .name = "SLIMBUS_2 Hostless Capture",
428 .stream_name = "SLIMBUS_2 Hostless Capture",
429 .cpu_dai_name = "msm-dai-q6-dev.16389",
430 .platform_name = "msm-pcm-hostless",
431 .codec_name = "tavil_codec",
432 .codec_dai_name = "tavil_tx2",
433 .ignore_suspend = 1,
434 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
435 .ops = &msm_ext_slimbus_2_be_ops,
436 },
437};
438
439static struct snd_soc_dai_link msm_ext_tasha_be_dai[] = {
440 /* Backend DAI Links */
441 {
442 .name = LPASS_BE_SLIMBUS_0_RX,
443 .stream_name = "Slimbus Playback",
444 .cpu_dai_name = "msm-dai-q6-dev.16384",
445 .platform_name = "msm-pcm-routing",
446 .codec_name = "tasha_codec",
447 .codec_dai_name = "tasha_mix_rx1",
448 .no_pcm = 1,
449 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530450 .id = MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530451 .init = &msm_audrx_init,
452 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
453 /* this dainlink has playback support */
454 .ignore_pmdown_time = 1,
455 .ignore_suspend = 1,
456 .ops = &msm_ext_slimbus_be_ops,
457 },
458 {
459 .name = LPASS_BE_SLIMBUS_0_TX,
460 .stream_name = "Slimbus Capture",
461 .cpu_dai_name = "msm-dai-q6-dev.16385",
462 .platform_name = "msm-pcm-routing",
463 .codec_name = "tasha_codec",
464 .codec_dai_name = "tasha_tx1",
465 .no_pcm = 1,
466 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530467 .id = MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530468 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
469 .ignore_suspend = 1,
470 .ops = &msm_ext_slimbus_be_ops,
471 },
472 {
473 .name = LPASS_BE_SLIMBUS_1_RX,
474 .stream_name = "Slimbus1 Playback",
475 .cpu_dai_name = "msm-dai-q6-dev.16386",
476 .platform_name = "msm-pcm-routing",
477 .codec_name = "tasha_codec",
478 .codec_dai_name = "tasha_mix_rx1",
479 .no_pcm = 1,
480 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530481 .id = MSM_BACKEND_DAI_SLIMBUS_1_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530482 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
483 .ops = &msm_ext_slimbus_be_ops,
484 /* dai link has playback support */
485 .ignore_pmdown_time = 1,
486 .ignore_suspend = 1,
487 },
488 {
489 .name = LPASS_BE_SLIMBUS_1_TX,
490 .stream_name = "Slimbus1 Capture",
491 .cpu_dai_name = "msm-dai-q6-dev.16387",
492 .platform_name = "msm-pcm-routing",
493 .codec_name = "tasha_codec",
494 .codec_dai_name = "tasha_tx3",
495 .no_pcm = 1,
496 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530497 .id = MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530498 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
499 .ops = &msm_ext_slimbus_be_ops,
500 .ignore_suspend = 1,
501 },
502 {
503 .name = LPASS_BE_SLIMBUS_3_RX,
504 .stream_name = "Slimbus3 Playback",
505 .cpu_dai_name = "msm-dai-q6-dev.16390",
506 .platform_name = "msm-pcm-routing",
507 .codec_name = "tasha_codec",
508 .codec_dai_name = "tasha_mix_rx1",
509 .no_pcm = 1,
510 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530511 .id = MSM_BACKEND_DAI_SLIMBUS_3_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530512 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
513 .ops = &msm_ext_slimbus_be_ops,
514 /* dai link has playback support */
515 .ignore_pmdown_time = 1,
516 .ignore_suspend = 1,
517 },
518 {
519 .name = LPASS_BE_SLIMBUS_3_TX,
520 .stream_name = "Slimbus3 Capture",
521 .cpu_dai_name = "msm-dai-q6-dev.16391",
522 .platform_name = "msm-pcm-routing",
523 .codec_name = "tasha_codec",
524 .codec_dai_name = "tasha_tx1",
525 .no_pcm = 1,
526 .dpcm_capture = 1,
527 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530528 .id = MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530529 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
530 .ops = &msm_ext_slimbus_be_ops,
531 .ignore_suspend = 1,
532 },
533 {
534 .name = LPASS_BE_SLIMBUS_4_RX,
535 .stream_name = "Slimbus4 Playback",
536 .cpu_dai_name = "msm-dai-q6-dev.16392",
537 .platform_name = "msm-pcm-routing",
538 .codec_name = "tasha_codec",
539 .codec_dai_name = "tasha_mix_rx1",
540 .no_pcm = 1,
541 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530542 .id = MSM_BACKEND_DAI_SLIMBUS_4_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530543 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
544 .ops = &msm_ext_slimbus_be_ops,
545 /* dai link has playback support */
546 .ignore_pmdown_time = 1,
547 .ignore_suspend = 1,
548 },
549 {
550 .name = LPASS_BE_SLIMBUS_5_RX,
551 .stream_name = "Slimbus5 Playback",
552 .cpu_dai_name = "msm-dai-q6-dev.16394",
553 .platform_name = "msm-pcm-routing",
554 .codec_name = "tasha_codec",
555 .codec_dai_name = "tasha_rx3",
556 .no_pcm = 1,
557 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530558 .id = MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530559 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
560 .ops = &msm_ext_slimbus_be_ops,
561 /* dai link has playback support */
562 .ignore_pmdown_time = 1,
563 .ignore_suspend = 1,
564 },
565 /* MAD BE */
566 {
567 .name = LPASS_BE_SLIMBUS_5_TX,
568 .stream_name = "Slimbus5 Capture",
569 .cpu_dai_name = "msm-dai-q6-dev.16395",
570 .platform_name = "msm-pcm-routing",
571 .codec_name = "tasha_codec",
572 .codec_dai_name = "tasha_mad1",
573 .no_pcm = 1,
574 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530575 .id = MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530576 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
577 .ops = &msm_ext_slimbus_be_ops,
578 .ignore_suspend = 1,
579 },
580 {
581 .name = LPASS_BE_SLIMBUS_6_RX,
582 .stream_name = "Slimbus6 Playback",
583 .cpu_dai_name = "msm-dai-q6-dev.16396",
584 .platform_name = "msm-pcm-routing",
585 .codec_name = "tasha_codec",
586 .codec_dai_name = "tasha_rx4",
587 .no_pcm = 1,
588 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530589 .id = MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530590 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
591 .ops = &msm_ext_slimbus_be_ops,
592 /* dai link has playback support */
593 .ignore_pmdown_time = 1,
594 .ignore_suspend = 1,
595 },
596};
597
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530598static struct snd_soc_dai_link msm_ext_compress_capture_dai[] = {
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530599 {/* hw:x,37 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530600 .name = "Compress9",
601 .stream_name = "Compress9",
602 .cpu_dai_name = "MultiMedia17",
603 .platform_name = "msm-compress-dsp",
604 .dynamic = 1,
605 .dpcm_capture = 1,
606 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
607 SND_SOC_DPCM_TRIGGER_POST},
608 .codec_dai_name = "snd-soc-dummy-dai",
609 .codec_name = "snd-soc-dummy",
610 .ignore_suspend = 1,
611 .id = MSM_FRONTEND_DAI_MULTIMEDIA17,
612 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530613 {/* hw:x,38 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530614 .name = "Compress10",
615 .stream_name = "Compress10",
616 .cpu_dai_name = "MultiMedia18",
617 .platform_name = "msm-compress-dsp",
618 .dynamic = 1,
619 .dpcm_capture = 1,
620 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
621 SND_SOC_DPCM_TRIGGER_POST},
622 .codec_dai_name = "snd-soc-dummy-dai",
623 .codec_name = "snd-soc-dummy",
624 .ignore_suspend = 1,
625 .id = MSM_FRONTEND_DAI_MULTIMEDIA18,
626 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530627 {/* hw:x,39 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530628 .name = "Compress11",
629 .stream_name = "Compress11",
630 .cpu_dai_name = "MultiMedia19",
631 .platform_name = "msm-compress-dsp",
632 .dynamic = 1,
633 .dpcm_capture = 1,
634 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
635 SND_SOC_DPCM_TRIGGER_POST},
636 .codec_dai_name = "snd-soc-dummy-dai",
637 .codec_name = "snd-soc-dummy",
638 .ignore_suspend = 1,
639 .id = MSM_FRONTEND_DAI_MULTIMEDIA19,
640 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530641 {/* hw:x,40 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530642 .name = "Compress12",
643 .stream_name = "Compress12",
644 .cpu_dai_name = "MultiMedia28",
645 .platform_name = "msm-compress-dsp",
646 .dynamic = 1,
647 .dpcm_capture = 1,
648 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
649 SND_SOC_DPCM_TRIGGER_POST},
650 .codec_dai_name = "snd-soc-dummy-dai",
651 .codec_name = "snd-soc-dummy",
652 .ignore_suspend = 1,
653 .id = MSM_FRONTEND_DAI_MULTIMEDIA28,
654 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530655 {/* hw:x,41 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530656 .name = "Compress13",
657 .stream_name = "Compress13",
658 .cpu_dai_name = "MultiMedia29",
659 .platform_name = "msm-compress-dsp",
660 .dynamic = 1,
661 .dpcm_capture = 1,
662 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
663 SND_SOC_DPCM_TRIGGER_POST},
664 .codec_dai_name = "snd-soc-dummy-dai",
665 .codec_name = "snd-soc-dummy",
666 .ignore_suspend = 1,
667 .id = MSM_FRONTEND_DAI_MULTIMEDIA29,
668 },
669};
670
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530671static struct snd_soc_dai_link msm_ext_tavil_be_dai[] = {
672 {
673 .name = LPASS_BE_SLIMBUS_0_RX,
674 .stream_name = "Slimbus Playback",
675 .cpu_dai_name = "msm-dai-q6-dev.16384",
676 .platform_name = "msm-pcm-routing",
677 .codec_name = "tavil_codec",
678 .codec_dai_name = "tavil_rx1",
679 .no_pcm = 1,
680 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530681 .id = MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530682 .init = &msm_audrx_init,
683 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
684 /* this dainlink has playback support */
685 .ignore_pmdown_time = 1,
686 .ignore_suspend = 1,
687 .ops = &msm_ext_slimbus_be_ops,
688 },
689 {
690 .name = LPASS_BE_SLIMBUS_0_TX,
691 .stream_name = "Slimbus Capture",
692 .cpu_dai_name = "msm-dai-q6-dev.16385",
693 .platform_name = "msm-pcm-routing",
694 .codec_name = "tavil_codec",
695 .codec_dai_name = "tavil_tx1",
696 .no_pcm = 1,
697 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530698 .id = MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530699 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
700 .ignore_suspend = 1,
701 .ops = &msm_ext_slimbus_be_ops,
702 },
703 {
704 .name = LPASS_BE_SLIMBUS_1_RX,
705 .stream_name = "Slimbus1 Playback",
706 .cpu_dai_name = "msm-dai-q6-dev.16386",
707 .platform_name = "msm-pcm-routing",
708 .codec_name = "tavil_codec",
709 .codec_dai_name = "tavil_rx1",
710 .no_pcm = 1,
711 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530712 .id = MSM_BACKEND_DAI_SLIMBUS_1_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530713 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
714 .ops = &msm_ext_slimbus_be_ops,
715 /* dai link has playback support */
716 .ignore_pmdown_time = 1,
717 .ignore_suspend = 1,
718 },
719 {
720 .name = LPASS_BE_SLIMBUS_1_TX,
721 .stream_name = "Slimbus1 Capture",
722 .cpu_dai_name = "msm-dai-q6-dev.16387",
723 .platform_name = "msm-pcm-routing",
724 .codec_name = "tavil_codec",
725 .codec_dai_name = "tavil_tx3",
726 .no_pcm = 1,
727 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530728 .id = MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530729 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
730 .ops = &msm_ext_slimbus_be_ops,
731 .ignore_suspend = 1,
732 },
733 {
734 .name = LPASS_BE_SLIMBUS_2_RX,
735 .stream_name = "Slimbus2 Playback",
736 .cpu_dai_name = "msm-dai-q6-dev.16388",
737 .platform_name = "msm-pcm-routing",
738 .codec_name = "tavil_codec",
739 .codec_dai_name = "tavil_rx2",
740 .no_pcm = 1,
741 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530742 .id = MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530743 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
744 .ops = &msm_ext_slimbus_be_ops,
745 .ignore_pmdown_time = 1,
746 .ignore_suspend = 1,
747 },
748 {
749 .name = LPASS_BE_SLIMBUS_3_RX,
750 .stream_name = "Slimbus3 Playback",
751 .cpu_dai_name = "msm-dai-q6-dev.16390",
752 .platform_name = "msm-pcm-routing",
753 .codec_name = "tavil_codec",
754 .codec_dai_name = "tavil_rx1",
755 .no_pcm = 1,
756 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530757 .id = MSM_BACKEND_DAI_SLIMBUS_3_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530758 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
759 .ops = &msm_ext_slimbus_be_ops,
760 /* dai link has playback support */
761 .ignore_pmdown_time = 1,
762 .ignore_suspend = 1,
763 },
764 {
765 .name = LPASS_BE_SLIMBUS_3_TX,
766 .stream_name = "Slimbus3 Capture",
767 .cpu_dai_name = "msm-dai-q6-dev.16391",
768 .platform_name = "msm-pcm-routing",
769 .codec_name = "tavil_codec",
770 .codec_dai_name = "tavil_tx1",
771 .no_pcm = 1,
772 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530773 .id = MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530774 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
775 .ops = &msm_ext_slimbus_be_ops,
776 .ignore_suspend = 1,
777 },
778 {
779 .name = LPASS_BE_SLIMBUS_4_RX,
780 .stream_name = "Slimbus4 Playback",
781 .cpu_dai_name = "msm-dai-q6-dev.16392",
782 .platform_name = "msm-pcm-routing",
783 .codec_name = "tavil_codec",
784 .codec_dai_name = "tavil_rx1",
785 .no_pcm = 1,
786 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530787 .id = MSM_BACKEND_DAI_SLIMBUS_4_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530788 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
789 .ops = &msm_ext_slimbus_be_ops,
790 /* dai link has playback support */
791 .ignore_pmdown_time = 1,
792 .ignore_suspend = 1,
793 },
794 {
795 .name = LPASS_BE_SLIMBUS_5_RX,
796 .stream_name = "Slimbus5 Playback",
797 .cpu_dai_name = "msm-dai-q6-dev.16394",
798 .platform_name = "msm-pcm-routing",
799 .codec_name = "tavil_codec",
800 .codec_dai_name = "tavil_rx3",
801 .no_pcm = 1,
802 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530803 .id = MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530804 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
805 .ops = &msm_ext_slimbus_be_ops,
806 /* dai link has playback support */
807 .ignore_pmdown_time = 1,
808 .ignore_suspend = 1,
809 },
810 /* MAD BE */
811 {
812 .name = LPASS_BE_SLIMBUS_5_TX,
813 .stream_name = "Slimbus5 Capture",
814 .cpu_dai_name = "msm-dai-q6-dev.16395",
815 .platform_name = "msm-pcm-routing",
816 .codec_name = "tavil_codec",
817 .codec_dai_name = "tavil_mad1",
818 .no_pcm = 1,
819 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530820 .id = MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530821 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
822 .ops = &msm_ext_slimbus_be_ops,
823 .ignore_suspend = 1,
824 },
825 {
826 .name = LPASS_BE_SLIMBUS_6_RX,
827 .stream_name = "Slimbus6 Playback",
828 .cpu_dai_name = "msm-dai-q6-dev.16396",
829 .platform_name = "msm-pcm-routing",
830 .codec_name = "tavil_codec",
831 .codec_dai_name = "tavil_rx4",
832 .no_pcm = 1,
833 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530834 .id = MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530835 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
836 .ops = &msm_ext_slimbus_be_ops,
837 /* dai link has playback support */
838 .ignore_pmdown_time = 1,
839 .ignore_suspend = 1,
840 },
841};
842
843static struct snd_soc_dai_link msm_ext_common_fe_dai[] = {
844 /* FrontEnd DAI Links */
845 {/* hw:x,0 */
846 .name = MSM_DAILINK_NAME(Media1),
847 .stream_name = "MultiMedia1",
848 .cpu_dai_name = "MultiMedia1",
849 .platform_name = "msm-pcm-dsp.0",
850 .dynamic = 1,
851 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
852 SND_SOC_DPCM_TRIGGER_POST},
853 .codec_dai_name = "snd-soc-dummy-dai",
854 .codec_name = "snd-soc-dummy",
855 .ignore_suspend = 1,
856 .dpcm_playback = 1,
857 .dpcm_capture = 1,
858 /* this dai link has playback support */
859 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530860 .id = MSM_FRONTEND_DAI_MULTIMEDIA1
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530861 },
862 {/* hw:x,1 */
863 .name = MSM_DAILINK_NAME(Media2),
864 .stream_name = "MultiMedia2",
865 .cpu_dai_name = "MultiMedia2",
866 .platform_name = "msm-pcm-dsp.0",
867 .dynamic = 1,
868 .dpcm_playback = 1,
869 .dpcm_capture = 1,
870 .codec_dai_name = "snd-soc-dummy-dai",
871 .codec_name = "snd-soc-dummy",
872 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
873 SND_SOC_DPCM_TRIGGER_POST},
874 .ignore_suspend = 1,
875 /* this dai link has playback support */
876 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530877 .id = MSM_FRONTEND_DAI_MULTIMEDIA2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530878 },
879 {/* hw:x,2 */
880 .name = "VoiceMMode1",
881 .stream_name = "VoiceMMode1",
882 .cpu_dai_name = "VoiceMMode1",
883 .platform_name = "msm-pcm-voice",
884 .dynamic = 1,
885 .dpcm_capture = 1,
886 .dpcm_playback = 1,
887 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
888 SND_SOC_DPCM_TRIGGER_POST},
889 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
890 .ignore_suspend = 1,
891 .ignore_pmdown_time = 1,
892 .codec_dai_name = "snd-soc-dummy-dai",
893 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530894 .id = MSM_FRONTEND_DAI_VOICEMMODE1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530895 },
896 {/* hw:x,3 */
897 .name = "MSM VoIP",
898 .stream_name = "VoIP",
899 .cpu_dai_name = "VoIP",
900 .platform_name = "msm-voip-dsp",
901 .dynamic = 1,
902 .dpcm_playback = 1,
903 .dpcm_capture = 1,
904 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
905 SND_SOC_DPCM_TRIGGER_POST},
906 .codec_dai_name = "snd-soc-dummy-dai",
907 .codec_name = "snd-soc-dummy",
908 .ignore_suspend = 1,
909 /* this dai link has playback support */
910 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530911 .id = MSM_FRONTEND_DAI_VOIP,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530912 },
913 {/* hw:x,4 */
914 .name = MSM_DAILINK_NAME(ULL),
915 .stream_name = "ULL",
916 .cpu_dai_name = "MultiMedia3",
917 .platform_name = "msm-pcm-dsp.2",
918 .dynamic = 1,
919 .dpcm_playback = 1,
920 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
921 SND_SOC_DPCM_TRIGGER_POST},
922 .codec_dai_name = "snd-soc-dummy-dai",
923 .codec_name = "snd-soc-dummy",
924 .ignore_suspend = 1,
925 /* this dai link has playback support */
926 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530927 .id = MSM_FRONTEND_DAI_MULTIMEDIA3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530928 },
929 /* Hostless PCM purpose */
930 {/* hw:x,5 */
931 .name = "SLIMBUS_0 Hostless",
932 .stream_name = "SLIMBUS_0 Hostless",
933 .cpu_dai_name = "SLIMBUS0_HOSTLESS",
934 .platform_name = "msm-pcm-hostless",
935 .dynamic = 1,
936 .dpcm_capture = 1,
937 .dpcm_playback = 1,
938 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
939 SND_SOC_DPCM_TRIGGER_POST},
940 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
941 .ignore_suspend = 1,
942 .ignore_pmdown_time = 1,
943 /* This dai link has MI2S support */
944 .codec_dai_name = "snd-soc-dummy-dai",
945 .codec_name = "snd-soc-dummy",
946 },
947 {/* hw:x,6 */
948 .name = "MSM AFE-PCM RX",
949 .stream_name = "AFE-PROXY RX",
950 .cpu_dai_name = "msm-dai-q6-dev.241",
951 .codec_name = "msm-stub-codec.1",
952 .codec_dai_name = "msm-stub-rx",
953 .platform_name = "msm-pcm-afe",
954 .ignore_suspend = 1,
955 /* this dai link has playback support */
956 .ignore_pmdown_time = 1,
957 },
958 {/* hw:x,7 */
959 .name = "MSM AFE-PCM TX",
960 .stream_name = "AFE-PROXY TX",
961 .cpu_dai_name = "msm-dai-q6-dev.240",
962 .codec_name = "msm-stub-codec.1",
963 .codec_dai_name = "msm-stub-tx",
964 .platform_name = "msm-pcm-afe",
965 .ignore_suspend = 1,
966 },
967 {/* hw:x,8 */
968 .name = MSM_DAILINK_NAME(Compress1),
969 .stream_name = "Compress1",
970 .cpu_dai_name = "MultiMedia4",
971 .platform_name = "msm-compress-dsp",
972 .async_ops = ASYNC_DPCM_SND_SOC_HW_PARAMS,
973 .dynamic = 1,
974 .dpcm_capture = 1,
975 .dpcm_playback = 1,
976 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
977 SND_SOC_DPCM_TRIGGER_POST},
978 .codec_dai_name = "snd-soc-dummy-dai",
979 .codec_name = "snd-soc-dummy",
980 .ignore_suspend = 1,
981 .ignore_pmdown_time = 1,
982 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530983 .id = MSM_FRONTEND_DAI_MULTIMEDIA4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530984 },
985 {/* hw:x,9*/
986 .name = "AUXPCM Hostless",
987 .stream_name = "AUXPCM Hostless",
988 .cpu_dai_name = "AUXPCM_HOSTLESS",
989 .platform_name = "msm-pcm-hostless",
990 .dynamic = 1,
991 .dpcm_capture = 1,
992 .dpcm_playback = 1,
993 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
994 SND_SOC_DPCM_TRIGGER_POST},
995 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
996 .ignore_suspend = 1,
997 /* this dai link has playback support */
998 .ignore_pmdown_time = 1,
999 .codec_dai_name = "snd-soc-dummy-dai",
1000 .codec_name = "snd-soc-dummy",
1001 },
1002 {/* hw:x,10 */
1003 .name = "SLIMBUS_1 Hostless",
1004 .stream_name = "SLIMBUS_1 Hostless",
1005 .cpu_dai_name = "SLIMBUS1_HOSTLESS",
1006 .platform_name = "msm-pcm-hostless",
1007 .dynamic = 1,
1008 .dpcm_capture = 1,
1009 .dpcm_playback = 1,
1010 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1011 SND_SOC_DPCM_TRIGGER_POST},
1012 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1013 .ignore_suspend = 1,
1014 .ignore_pmdown_time = 1, /* dai link has playback support */
1015 .codec_dai_name = "snd-soc-dummy-dai",
1016 .codec_name = "snd-soc-dummy",
1017 },
1018 {/* hw:x,11 */
1019 .name = "SLIMBUS_3 Hostless",
1020 .stream_name = "SLIMBUS_3 Hostless",
1021 .cpu_dai_name = "SLIMBUS3_HOSTLESS",
1022 .platform_name = "msm-pcm-hostless",
1023 .dynamic = 1,
1024 .dpcm_capture = 1,
1025 .dpcm_playback = 1,
1026 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1027 SND_SOC_DPCM_TRIGGER_POST},
1028 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1029 .ignore_suspend = 1,
1030 .ignore_pmdown_time = 1, /* dai link has playback support */
1031 .codec_dai_name = "snd-soc-dummy-dai",
1032 .codec_name = "snd-soc-dummy",
1033 },
1034 {/* hw:x,12 */
1035 .name = "SLIMBUS_4 Hostless",
1036 .stream_name = "SLIMBUS_4 Hostless",
1037 .cpu_dai_name = "SLIMBUS4_HOSTLESS",
1038 .platform_name = "msm-pcm-hostless",
1039 .dynamic = 1,
1040 .dpcm_capture = 1,
1041 .dpcm_playback = 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,
1046 .ignore_pmdown_time = 1, /* dai link has playback support */
1047 .codec_dai_name = "snd-soc-dummy-dai",
1048 .codec_name = "snd-soc-dummy",
1049 },
1050 {/* hw:x,13 */
1051 .name = MSM_DAILINK_NAME(LowLatency),
1052 .stream_name = "MultiMedia5",
1053 .cpu_dai_name = "MultiMedia5",
1054 .platform_name = "msm-pcm-dsp.1",
1055 .dynamic = 1,
1056 .dpcm_capture = 1,
1057 .dpcm_playback = 1,
1058 .codec_dai_name = "snd-soc-dummy-dai",
1059 .codec_name = "snd-soc-dummy",
1060 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1061 SND_SOC_DPCM_TRIGGER_POST},
1062 .ignore_suspend = 1,
1063 /* this dai link has playback support */
1064 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301065 .id = MSM_FRONTEND_DAI_MULTIMEDIA5,
Revathi Uddaraju30feb0d2017-11-21 15:30:19 +05301066 .ops = &msm_fe_qos_ops,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301067 },
1068 /* LSM FE */
1069 {/* hw:x,14 */
1070 .name = "Listen 1 Audio Service",
1071 .stream_name = "Listen 1 Audio Service",
1072 .cpu_dai_name = "LSM1",
1073 .platform_name = "msm-lsm-client",
1074 .dynamic = 1,
1075 .dpcm_capture = 1,
1076 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1077 SND_SOC_DPCM_TRIGGER_POST },
1078 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1079 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301080 .codec_dai_name = "snd-soc-dummy-dai",
1081 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301082 .id = MSM_FRONTEND_DAI_LSM1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301083 },
1084 {/* hw:x,15 */
1085 .name = MSM_DAILINK_NAME(Compress2),
1086 .stream_name = "Compress2",
1087 .cpu_dai_name = "MultiMedia7",
1088 .platform_name = "msm-compress-dsp",
1089 .dynamic = 1,
1090 .dpcm_capture = 1,
1091 .dpcm_playback = 1,
1092 .codec_dai_name = "snd-soc-dummy-dai",
1093 .codec_name = "snd-soc-dummy",
1094 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1095 SND_SOC_DPCM_TRIGGER_POST},
1096 .ignore_suspend = 1,
1097 /* this dai link has playback support */
1098 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301099 .id = MSM_FRONTEND_DAI_MULTIMEDIA7,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301100 },
1101 {/* hw:x,16 */
Laxminath Kasam38070be2017-08-17 18:21:59 +05301102 .name = MSM_DAILINK_NAME(MultiMedia10),
1103 .stream_name = "MultiMedia10",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301104 .cpu_dai_name = "MultiMedia10",
Laxminath Kasam38070be2017-08-17 18:21:59 +05301105 .platform_name = "msm-pcm-dsp.1",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301106 .dynamic = 1,
1107 .dpcm_capture = 1,
1108 .dpcm_playback = 1,
1109 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1110 SND_SOC_DPCM_TRIGGER_POST},
1111 .codec_dai_name = "snd-soc-dummy-dai",
1112 .codec_name = "snd-soc-dummy",
1113 .ignore_suspend = 1,
1114 .ignore_pmdown_time = 1,
1115 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301116 .id = MSM_FRONTEND_DAI_MULTIMEDIA10,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301117 },
1118 {/* hw:x,17 */
1119 .name = MSM_DAILINK_NAME(ULL_NOIRQ),
1120 .stream_name = "MM_NOIRQ",
1121 .cpu_dai_name = "MultiMedia8",
1122 .platform_name = "msm-pcm-dsp-noirq",
1123 .dynamic = 1,
1124 .dpcm_capture = 1,
1125 .dpcm_playback = 1,
1126 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1127 SND_SOC_DPCM_TRIGGER_POST},
1128 .codec_dai_name = "snd-soc-dummy-dai",
1129 .codec_name = "snd-soc-dummy",
1130 .ignore_suspend = 1,
1131 .ignore_pmdown_time = 1,
1132 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301133 .id = MSM_FRONTEND_DAI_MULTIMEDIA8,
Revathi Uddaraju30feb0d2017-11-21 15:30:19 +05301134 .ops = &msm_fe_qos_ops,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301135 },
1136 {/* hw:x,18 */
1137 .name = "HDMI_RX_HOSTLESS",
1138 .stream_name = "HDMI_RX_HOSTLESS",
1139 .cpu_dai_name = "HDMI_HOSTLESS",
1140 .platform_name = "msm-pcm-hostless",
1141 .dynamic = 1,
1142 .dpcm_playback = 1,
1143 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1144 SND_SOC_DPCM_TRIGGER_POST},
1145 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1146 .ignore_suspend = 1,
1147 .ignore_pmdown_time = 1,
1148 .codec_dai_name = "snd-soc-dummy-dai",
1149 .codec_name = "snd-soc-dummy",
1150 },
1151 {/* hw:x,19 */
1152 .name = "VoiceMMode2",
1153 .stream_name = "VoiceMMode2",
1154 .cpu_dai_name = "VoiceMMode2",
1155 .platform_name = "msm-pcm-voice",
1156 .dynamic = 1,
1157 .dpcm_capture = 1,
1158 .dpcm_playback = 1,
1159 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1160 SND_SOC_DPCM_TRIGGER_POST},
1161 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1162 .ignore_suspend = 1,
1163 .ignore_pmdown_time = 1,
1164 .codec_dai_name = "snd-soc-dummy-dai",
1165 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301166 .id = MSM_FRONTEND_DAI_VOICEMMODE2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301167 },
1168 {/* hw:x,20 */
1169 .name = "Listen 2 Audio Service",
1170 .stream_name = "Listen 2 Audio Service",
1171 .cpu_dai_name = "LSM2",
1172 .platform_name = "msm-lsm-client",
1173 .dynamic = 1,
1174 .dpcm_capture = 1,
1175 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1176 SND_SOC_DPCM_TRIGGER_POST },
1177 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1178 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301179 .codec_dai_name = "snd-soc-dummy-dai",
1180 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301181 .id = MSM_FRONTEND_DAI_LSM2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301182 },
1183 {/* hw:x,21 */
1184 .name = "Listen 3 Audio Service",
1185 .stream_name = "Listen 3 Audio Service",
1186 .cpu_dai_name = "LSM3",
1187 .platform_name = "msm-lsm-client",
1188 .dynamic = 1,
1189 .dpcm_capture = 1,
1190 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1191 SND_SOC_DPCM_TRIGGER_POST },
1192 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1193 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301194 .codec_dai_name = "snd-soc-dummy-dai",
1195 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301196 .id = MSM_FRONTEND_DAI_LSM3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301197 },
1198 {/* hw:x,22 */
1199 .name = "Listen 4 Audio Service",
1200 .stream_name = "Listen 4 Audio Service",
1201 .cpu_dai_name = "LSM4",
1202 .platform_name = "msm-lsm-client",
1203 .dynamic = 1,
1204 .dpcm_capture = 1,
1205 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1206 SND_SOC_DPCM_TRIGGER_POST },
1207 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1208 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301209 .codec_dai_name = "snd-soc-dummy-dai",
1210 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301211 .id = MSM_FRONTEND_DAI_LSM4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301212 },
1213 {/* hw:x,23 */
1214 .name = "Listen 5 Audio Service",
1215 .stream_name = "Listen 5 Audio Service",
1216 .cpu_dai_name = "LSM5",
1217 .platform_name = "msm-lsm-client",
1218 .dynamic = 1,
1219 .dpcm_capture = 1,
1220 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1221 SND_SOC_DPCM_TRIGGER_POST },
1222 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1223 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301224 .codec_dai_name = "snd-soc-dummy-dai",
1225 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301226 .id = MSM_FRONTEND_DAI_LSM5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301227 },
1228 {/* hw:x,24 */
1229 .name = "Listen 6 Audio Service",
1230 .stream_name = "Listen 6 Audio Service",
1231 .cpu_dai_name = "LSM6",
1232 .platform_name = "msm-lsm-client",
1233 .dynamic = 1,
1234 .dpcm_capture = 1,
1235 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1236 SND_SOC_DPCM_TRIGGER_POST },
1237 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1238 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301239 .codec_dai_name = "snd-soc-dummy-dai",
1240 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301241 .id = MSM_FRONTEND_DAI_LSM6
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301242 },
1243 {/* hw:x,25 */
1244 .name = "Listen 7 Audio Service",
1245 .stream_name = "Listen 7 Audio Service",
1246 .cpu_dai_name = "LSM7",
1247 .platform_name = "msm-lsm-client",
1248 .dynamic = 1,
1249 .dpcm_capture = 1,
1250 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1251 SND_SOC_DPCM_TRIGGER_POST },
1252 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1253 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301254 .codec_dai_name = "snd-soc-dummy-dai",
1255 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301256 .id = MSM_FRONTEND_DAI_LSM7,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301257 },
1258 {/* hw:x,26 */
1259 .name = "Listen 8 Audio Service",
1260 .stream_name = "Listen 8 Audio Service",
1261 .cpu_dai_name = "LSM8",
1262 .platform_name = "msm-lsm-client",
1263 .dynamic = 1,
1264 .dpcm_capture = 1,
1265 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1266 SND_SOC_DPCM_TRIGGER_POST },
1267 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1268 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301269 .codec_dai_name = "snd-soc-dummy-dai",
1270 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301271 .id = MSM_FRONTEND_DAI_LSM8,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301272 },
1273 {/* hw:x,27 */
1274 .name = MSM_DAILINK_NAME(Media9),
1275 .stream_name = "MultiMedia9",
1276 .cpu_dai_name = "MultiMedia9",
1277 .platform_name = "msm-pcm-dsp.0",
1278 .dynamic = 1,
1279 .dpcm_capture = 1,
1280 .dpcm_playback = 1,
1281 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1282 SND_SOC_DPCM_TRIGGER_POST},
1283 .codec_dai_name = "snd-soc-dummy-dai",
1284 .codec_name = "snd-soc-dummy",
1285 .ignore_suspend = 1,
1286 .ignore_pmdown_time = 1,
1287 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301288 .id = MSM_FRONTEND_DAI_MULTIMEDIA9,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301289 },
1290 {/* hw:x,28 */
1291 .name = MSM_DAILINK_NAME(Compress4),
1292 .stream_name = "Compress4",
1293 .cpu_dai_name = "MultiMedia11",
1294 .platform_name = "msm-compress-dsp",
1295 .dynamic = 1,
1296 .dpcm_capture = 1,
1297 .dpcm_playback = 1,
1298 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1299 SND_SOC_DPCM_TRIGGER_POST},
1300 .codec_dai_name = "snd-soc-dummy-dai",
1301 .codec_name = "snd-soc-dummy",
1302 .ignore_suspend = 1,
1303 .ignore_pmdown_time = 1,
1304 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301305 .id = MSM_FRONTEND_DAI_MULTIMEDIA11,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301306 },
1307 {/* hw:x,29 */
1308 .name = MSM_DAILINK_NAME(Compress5),
1309 .stream_name = "Compress5",
1310 .cpu_dai_name = "MultiMedia12",
1311 .platform_name = "msm-compress-dsp",
1312 .dynamic = 1,
1313 .dpcm_capture = 1,
1314 .dpcm_playback = 1,
1315 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1316 SND_SOC_DPCM_TRIGGER_POST},
1317 .codec_dai_name = "snd-soc-dummy-dai",
1318 .codec_name = "snd-soc-dummy",
1319 .ignore_suspend = 1,
1320 .ignore_pmdown_time = 1,
1321 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301322 .id = MSM_FRONTEND_DAI_MULTIMEDIA12,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301323 },
1324 {/* hw:x,30 */
1325 .name = MSM_DAILINK_NAME(Compress6),
1326 .stream_name = "Compress6",
1327 .cpu_dai_name = "MultiMedia13",
1328 .platform_name = "msm-compress-dsp",
1329 .dynamic = 1,
1330 .dpcm_capture = 1,
1331 .dpcm_playback = 1,
1332 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1333 SND_SOC_DPCM_TRIGGER_POST},
1334 .codec_dai_name = "snd-soc-dummy-dai",
1335 .codec_name = "snd-soc-dummy",
1336 .ignore_suspend = 1,
1337 .ignore_pmdown_time = 1,
1338 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301339 .id = MSM_FRONTEND_DAI_MULTIMEDIA13,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301340 },
1341 {/* hw:x,31 */
1342 .name = MSM_DAILINK_NAME(Compress7),
1343 .stream_name = "Compress7",
1344 .cpu_dai_name = "MultiMedia14",
1345 .platform_name = "msm-compress-dsp",
1346 .dynamic = 1,
1347 .dpcm_capture = 1,
1348 .dpcm_playback = 1,
1349 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1350 SND_SOC_DPCM_TRIGGER_POST},
1351 .codec_dai_name = "snd-soc-dummy-dai",
1352 .codec_name = "snd-soc-dummy",
1353 .ignore_suspend = 1,
1354 .ignore_pmdown_time = 1,
1355 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301356 .id = MSM_FRONTEND_DAI_MULTIMEDIA14,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301357 },
1358 {/* hw:x,32 */
1359 .name = MSM_DAILINK_NAME(Compress8),
1360 .stream_name = "Compress8",
1361 .cpu_dai_name = "MultiMedia15",
1362 .platform_name = "msm-compress-dsp",
1363 .dynamic = 1,
1364 .dpcm_capture = 1,
1365 .dpcm_playback = 1,
1366 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1367 SND_SOC_DPCM_TRIGGER_POST},
1368 .codec_dai_name = "snd-soc-dummy-dai",
1369 .codec_name = "snd-soc-dummy",
1370 .ignore_suspend = 1,
1371 .ignore_pmdown_time = 1,
1372 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301373 .id = MSM_FRONTEND_DAI_MULTIMEDIA15,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301374 },
1375 {/* hw:x,33 */
Asish Bhattacharya34504582017-08-08 12:55:01 +05301376 .name = MSM_DAILINK_NAME(ULL_NOIRQ_2),
1377 .stream_name = "MM_NOIRQ_2",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301378 .cpu_dai_name = "MultiMedia16",
Asish Bhattacharya34504582017-08-08 12:55:01 +05301379 .platform_name = "msm-pcm-dsp-noirq",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301380 .dynamic = 1,
1381 .dpcm_capture = 1,
1382 .dpcm_playback = 1,
1383 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1384 SND_SOC_DPCM_TRIGGER_POST},
1385 .codec_dai_name = "snd-soc-dummy-dai",
1386 .codec_name = "snd-soc-dummy",
1387 .ignore_suspend = 1,
1388 .ignore_pmdown_time = 1,
1389 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301390 .id = MSM_FRONTEND_DAI_MULTIMEDIA16,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301391 },
1392 {/* hw:x,34 */
1393 .name = "SLIMBUS_8 Hostless",
1394 .stream_name = "SLIMBUS8_HOSTLESS Capture",
1395 .cpu_dai_name = "SLIMBUS8_HOSTLESS",
1396 .platform_name = "msm-pcm-hostless",
1397 .dynamic = 1,
1398 .dpcm_capture = 1,
1399 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1400 SND_SOC_DPCM_TRIGGER_POST},
1401 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1402 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301403 .codec_dai_name = "snd-soc-dummy-dai",
1404 .codec_name = "snd-soc-dummy",
1405 },
1406 {/* hw:x,35 */
1407 .name = "SLIMBUS7 Hostless",
1408 .stream_name = "SLIMBUS7 Hostless",
1409 .cpu_dai_name = "SLIMBUS7_HOSTLESS",
1410 .platform_name = "msm-pcm-hostless",
1411 .dynamic = 1,
1412 .dpcm_playback = 1,
1413 .dpcm_capture = 1,
1414 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1415 SND_SOC_DPCM_TRIGGER_POST},
1416 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1417 .ignore_suspend = 1,
1418 .ignore_pmdown_time = 1,
1419 .codec_dai_name = "snd-soc-dummy-dai",
1420 .codec_name = "snd-soc-dummy",
1421 },
1422 {/* hw:x,36 */
1423 .name = "SDM660 HFP TX",
1424 .stream_name = "MultiMedia6",
1425 .cpu_dai_name = "MultiMedia6",
1426 .platform_name = "msm-pcm-loopback",
1427 .dynamic = 1,
1428 .dpcm_playback = 1,
1429 .dpcm_capture = 1,
1430 .codec_dai_name = "snd-soc-dummy-dai",
1431 .codec_name = "snd-soc-dummy",
1432 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1433 SND_SOC_DPCM_TRIGGER_POST},
1434 .ignore_suspend = 1,
1435 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1436 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301437 .id = MSM_FRONTEND_DAI_MULTIMEDIA6,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301438 },
1439};
1440
1441static struct snd_soc_dai_link msm_ext_common_be_dai[] = {
1442 {
1443 .name = LPASS_BE_AFE_PCM_RX,
1444 .stream_name = "AFE Playback",
1445 .cpu_dai_name = "msm-dai-q6-dev.224",
1446 .platform_name = "msm-pcm-routing",
1447 .codec_name = "msm-stub-codec.1",
1448 .codec_dai_name = "msm-stub-rx",
1449 .no_pcm = 1,
1450 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301451 .id = MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301452 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1453 /* this dai link has playback support */
1454 .ignore_pmdown_time = 1,
1455 .ignore_suspend = 1,
1456 },
1457 {
1458 .name = LPASS_BE_AFE_PCM_TX,
1459 .stream_name = "AFE Capture",
1460 .cpu_dai_name = "msm-dai-q6-dev.225",
1461 .platform_name = "msm-pcm-routing",
1462 .codec_name = "msm-stub-codec.1",
1463 .codec_dai_name = "msm-stub-tx",
1464 .no_pcm = 1,
1465 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301466 .id = MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301467 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1468 .ignore_suspend = 1,
1469 },
1470 /* Incall Record Uplink BACK END DAI Link */
1471 {
1472 .name = LPASS_BE_INCALL_RECORD_TX,
1473 .stream_name = "Voice Uplink Capture",
1474 .cpu_dai_name = "msm-dai-q6-dev.32772",
1475 .platform_name = "msm-pcm-routing",
1476 .codec_name = "msm-stub-codec.1",
1477 .codec_dai_name = "msm-stub-tx",
1478 .no_pcm = 1,
1479 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301480 .id = MSM_BACKEND_DAI_INCALL_RECORD_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301481 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1482 .ignore_suspend = 1,
1483 },
1484 /* Incall Record Downlink BACK END DAI Link */
1485 {
1486 .name = LPASS_BE_INCALL_RECORD_RX,
1487 .stream_name = "Voice Downlink Capture",
1488 .cpu_dai_name = "msm-dai-q6-dev.32771",
1489 .platform_name = "msm-pcm-routing",
1490 .codec_name = "msm-stub-codec.1",
1491 .codec_dai_name = "msm-stub-tx",
1492 .no_pcm = 1,
1493 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301494 .id = MSM_BACKEND_DAI_INCALL_RECORD_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301495 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1496 .ignore_suspend = 1,
1497 },
1498 /* Incall Music BACK END DAI Link */
1499 {
1500 .name = LPASS_BE_VOICE_PLAYBACK_TX,
1501 .stream_name = "Voice Farend Playback",
1502 .cpu_dai_name = "msm-dai-q6-dev.32773",
1503 .platform_name = "msm-pcm-routing",
1504 .codec_name = "msm-stub-codec.1",
1505 .codec_dai_name = "msm-stub-rx",
1506 .no_pcm = 1,
1507 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301508 .id = MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301509 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1510 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301511 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301512 },
1513 /* Incall Music 2 BACK END DAI Link */
1514 {
1515 .name = LPASS_BE_VOICE2_PLAYBACK_TX,
1516 .stream_name = "Voice2 Farend Playback",
1517 .cpu_dai_name = "msm-dai-q6-dev.32770",
1518 .platform_name = "msm-pcm-routing",
1519 .codec_name = "msm-stub-codec.1",
1520 .codec_dai_name = "msm-stub-rx",
1521 .no_pcm = 1,
1522 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301523 .id = MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301524 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1525 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301526 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301527 },
1528 {
1529 .name = LPASS_BE_USB_AUDIO_RX,
1530 .stream_name = "USB Audio Playback",
1531 .cpu_dai_name = "msm-dai-q6-dev.28672",
1532 .platform_name = "msm-pcm-routing",
1533 .codec_name = "msm-stub-codec.1",
1534 .codec_dai_name = "msm-stub-rx",
1535 .no_pcm = 1,
1536 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301537 .id = MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301538 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1539 .ignore_pmdown_time = 1,
1540 .ignore_suspend = 1,
1541 },
1542 {
1543 .name = LPASS_BE_USB_AUDIO_TX,
1544 .stream_name = "USB Audio Capture",
1545 .cpu_dai_name = "msm-dai-q6-dev.28673",
1546 .platform_name = "msm-pcm-routing",
1547 .codec_name = "msm-stub-codec.1",
1548 .codec_dai_name = "msm-stub-tx",
1549 .no_pcm = 1,
1550 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301551 .id = MSM_BACKEND_DAI_USB_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301552 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1553 .ignore_suspend = 1,
1554 },
1555 {
1556 .name = LPASS_BE_PRI_TDM_RX_0,
1557 .stream_name = "Primary TDM0 Playback",
1558 .cpu_dai_name = "msm-dai-q6-tdm.36864",
1559 .platform_name = "msm-pcm-routing",
1560 .codec_name = "msm-stub-codec.1",
1561 .codec_dai_name = "msm-stub-rx",
1562 .no_pcm = 1,
1563 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301564 .id = MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301565 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1566 .ops = &msm_tdm_be_ops,
1567 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301568 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301569 },
1570 {
1571 .name = LPASS_BE_PRI_TDM_TX_0,
1572 .stream_name = "Primary TDM0 Capture",
1573 .cpu_dai_name = "msm-dai-q6-tdm.36865",
1574 .platform_name = "msm-pcm-routing",
1575 .codec_name = "msm-stub-codec.1",
1576 .codec_dai_name = "msm-stub-tx",
1577 .no_pcm = 1,
1578 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301579 .id = MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301580 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1581 .ops = &msm_tdm_be_ops,
1582 .ignore_suspend = 1,
1583 },
1584 {
1585 .name = LPASS_BE_SEC_TDM_RX_0,
1586 .stream_name = "Secondary TDM0 Playback",
1587 .cpu_dai_name = "msm-dai-q6-tdm.36880",
1588 .platform_name = "msm-pcm-routing",
1589 .codec_name = "msm-stub-codec.1",
1590 .codec_dai_name = "msm-stub-rx",
1591 .no_pcm = 1,
1592 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301593 .id = MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301594 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1595 .ops = &msm_tdm_be_ops,
1596 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301597 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301598 },
1599 {
1600 .name = LPASS_BE_SEC_TDM_TX_0,
1601 .stream_name = "Secondary TDM0 Capture",
1602 .cpu_dai_name = "msm-dai-q6-tdm.36881",
1603 .platform_name = "msm-pcm-routing",
1604 .codec_name = "msm-stub-codec.1",
1605 .codec_dai_name = "msm-stub-tx",
1606 .no_pcm = 1,
1607 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301608 .id = MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301609 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1610 .ops = &msm_tdm_be_ops,
1611 .ignore_suspend = 1,
1612 },
1613 {
1614 .name = LPASS_BE_TERT_TDM_RX_0,
1615 .stream_name = "Tertiary TDM0 Playback",
1616 .cpu_dai_name = "msm-dai-q6-tdm.36896",
1617 .platform_name = "msm-pcm-routing",
1618 .codec_name = "msm-stub-codec.1",
1619 .codec_dai_name = "msm-stub-rx",
1620 .no_pcm = 1,
1621 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301622 .id = MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301623 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1624 .ops = &msm_tdm_be_ops,
1625 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301626 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301627 },
1628 {
1629 .name = LPASS_BE_TERT_TDM_TX_0,
1630 .stream_name = "Tertiary TDM0 Capture",
1631 .cpu_dai_name = "msm-dai-q6-tdm.36897",
1632 .platform_name = "msm-pcm-routing",
1633 .codec_name = "msm-stub-codec.1",
1634 .codec_dai_name = "msm-stub-tx",
1635 .no_pcm = 1,
1636 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301637 .id = MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301638 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1639 .ops = &msm_tdm_be_ops,
1640 .ignore_suspend = 1,
1641 },
1642 {
1643 .name = LPASS_BE_QUAT_TDM_RX_0,
1644 .stream_name = "Quaternary TDM0 Playback",
1645 .cpu_dai_name = "msm-dai-q6-tdm.36912",
1646 .platform_name = "msm-pcm-routing",
1647 .codec_name = "msm-stub-codec.1",
1648 .codec_dai_name = "msm-stub-rx",
1649 .no_pcm = 1,
1650 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301651 .id = MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301652 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1653 .ops = &msm_tdm_be_ops,
1654 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301655 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301656 },
1657 {
1658 .name = LPASS_BE_QUAT_TDM_TX_0,
1659 .stream_name = "Quaternary TDM0 Capture",
1660 .cpu_dai_name = "msm-dai-q6-tdm.36913",
1661 .platform_name = "msm-pcm-routing",
1662 .codec_name = "msm-stub-codec.1",
1663 .codec_dai_name = "msm-stub-tx",
1664 .no_pcm = 1,
1665 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301666 .id = MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301667 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1668 .ops = &msm_tdm_be_ops,
1669 .ignore_suspend = 1,
1670 },
Rohit Kumard1754482017-09-10 22:57:39 +05301671 {
1672 .name = LPASS_BE_QUIN_TDM_RX_0,
1673 .stream_name = "Quinary TDM0 Playback",
Rohit kumar091ff792017-10-11 18:35:07 +05301674 .cpu_dai_name = "msm-dai-q6-tdm.36928",
Rohit Kumard1754482017-09-10 22:57:39 +05301675 .platform_name = "msm-pcm-routing",
1676 .codec_name = "msm-stub-codec.1",
1677 .codec_dai_name = "msm-stub-rx",
1678 .no_pcm = 1,
1679 .dpcm_playback = 1,
1680 .id = MSM_BACKEND_DAI_QUIN_TDM_RX_0,
1681 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1682 .ops = &msm_tdm_be_ops,
1683 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301684 .ignore_pmdown_time = 1,
Rohit Kumard1754482017-09-10 22:57:39 +05301685 },
1686 {
1687 .name = LPASS_BE_QUIN_TDM_TX_0,
1688 .stream_name = "Quinary TDM0 Capture",
Rohit kumar091ff792017-10-11 18:35:07 +05301689 .cpu_dai_name = "msm-dai-q6-tdm.36929",
Rohit Kumard1754482017-09-10 22:57:39 +05301690 .platform_name = "msm-pcm-routing",
1691 .codec_name = "msm-stub-codec.1",
1692 .codec_dai_name = "msm-stub-tx",
1693 .no_pcm = 1,
1694 .dpcm_capture = 1,
1695 .id = MSM_BACKEND_DAI_QUIN_TDM_TX_0,
1696 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1697 .ops = &msm_tdm_be_ops,
1698 .ignore_suspend = 1,
1699 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301700};
1701
1702static struct snd_soc_dai_link msm_mi2s_be_dai_links[] = {
1703 {
1704 .name = LPASS_BE_PRI_MI2S_RX,
1705 .stream_name = "Primary MI2S Playback",
1706 .cpu_dai_name = "msm-dai-q6-mi2s.0",
1707 .platform_name = "msm-pcm-routing",
1708 .codec_name = "msm-stub-codec.1",
1709 .codec_dai_name = "msm-stub-rx",
1710 .no_pcm = 1,
1711 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301712 .id = MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301713 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1714 .ops = &msm_mi2s_be_ops,
1715 .ignore_suspend = 1,
1716 .ignore_pmdown_time = 1,
1717 },
1718 {
1719 .name = LPASS_BE_PRI_MI2S_TX,
1720 .stream_name = "Primary MI2S Capture",
1721 .cpu_dai_name = "msm-dai-q6-mi2s.0",
1722 .platform_name = "msm-pcm-routing",
1723 .codec_name = "msm-stub-codec.1",
1724 .codec_dai_name = "msm-stub-tx",
1725 .no_pcm = 1,
1726 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301727 .id = MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301728 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1729 .ops = &msm_mi2s_be_ops,
1730 .ignore_suspend = 1,
1731 },
1732 {
1733 .name = LPASS_BE_SEC_MI2S_RX,
1734 .stream_name = "Secondary MI2S Playback",
1735 .cpu_dai_name = "msm-dai-q6-mi2s.1",
1736 .platform_name = "msm-pcm-routing",
1737 .codec_name = "msm-stub-codec.1",
1738 .codec_dai_name = "msm-stub-rx",
1739 .no_pcm = 1,
1740 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301741 .id = MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301742 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1743 .ops = &msm_mi2s_be_ops,
1744 .ignore_suspend = 1,
1745 .ignore_pmdown_time = 1,
1746 },
1747 {
1748 .name = LPASS_BE_SEC_MI2S_TX,
1749 .stream_name = "Secondary MI2S Capture",
1750 .cpu_dai_name = "msm-dai-q6-mi2s.1",
1751 .platform_name = "msm-pcm-routing",
1752 .codec_name = "msm-stub-codec.1",
1753 .codec_dai_name = "msm-stub-tx",
1754 .no_pcm = 1,
1755 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301756 .id = MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301757 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1758 .ops = &msm_mi2s_be_ops,
1759 .ignore_suspend = 1,
1760 },
1761 {
1762 .name = LPASS_BE_TERT_MI2S_RX,
1763 .stream_name = "Tertiary MI2S Playback",
1764 .cpu_dai_name = "msm-dai-q6-mi2s.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_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301771 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1772 .ops = &msm_mi2s_be_ops,
1773 .ignore_suspend = 1,
1774 .ignore_pmdown_time = 1,
1775 },
1776 {
1777 .name = LPASS_BE_TERT_MI2S_TX,
1778 .stream_name = "Tertiary MI2S Capture",
1779 .cpu_dai_name = "msm-dai-q6-mi2s.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_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301786 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1787 .ops = &msm_mi2s_be_ops,
1788 .ignore_suspend = 1,
1789 },
1790 {
1791 .name = LPASS_BE_QUAT_MI2S_RX,
1792 .stream_name = "Quaternary MI2S Playback",
1793 .cpu_dai_name = "msm-dai-q6-mi2s.3",
1794 .platform_name = "msm-pcm-routing",
1795 .codec_name = "msm-stub-codec.1",
1796 .codec_dai_name = "msm-stub-rx",
1797 .no_pcm = 1,
1798 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301799 .id = MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301800 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1801 .ops = &msm_mi2s_be_ops,
1802 .ignore_suspend = 1,
1803 .ignore_pmdown_time = 1,
1804 },
1805 {
1806 .name = LPASS_BE_QUAT_MI2S_TX,
1807 .stream_name = "Quaternary MI2S Capture",
1808 .cpu_dai_name = "msm-dai-q6-mi2s.3",
1809 .platform_name = "msm-pcm-routing",
1810 .codec_name = "msm-stub-codec.1",
1811 .codec_dai_name = "msm-stub-tx",
1812 .no_pcm = 1,
1813 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301814 .id = MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301815 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1816 .ops = &msm_mi2s_be_ops,
1817 .ignore_suspend = 1,
1818 },
Rohit Kumard1754482017-09-10 22:57:39 +05301819 {
1820 .name = LPASS_BE_QUIN_MI2S_RX,
1821 .stream_name = "Quinary MI2S Playback",
Rohit kumar20df5452017-10-16 15:35:56 +05301822 .cpu_dai_name = "msm-dai-q6-mi2s.4",
Rohit Kumard1754482017-09-10 22:57:39 +05301823 .platform_name = "msm-pcm-routing",
1824 .codec_name = "msm-stub-codec.1",
1825 .codec_dai_name = "msm-stub-rx",
1826 .no_pcm = 1,
1827 .dpcm_playback = 1,
1828 .id = MSM_BACKEND_DAI_QUINARY_MI2S_RX,
1829 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1830 .ops = &msm_mi2s_be_ops,
1831 .ignore_suspend = 1,
1832 .ignore_pmdown_time = 1,
1833 },
1834 {
1835 .name = LPASS_BE_QUIN_MI2S_TX,
1836 .stream_name = "Quinary MI2S Capture",
Rohit kumar20df5452017-10-16 15:35:56 +05301837 .cpu_dai_name = "msm-dai-q6-mi2s.4",
Rohit Kumard1754482017-09-10 22:57:39 +05301838 .platform_name = "msm-pcm-routing",
1839 .codec_name = "msm-stub-codec.1",
1840 .codec_dai_name = "msm-stub-tx",
1841 .no_pcm = 1,
1842 .dpcm_capture = 1,
1843 .id = MSM_BACKEND_DAI_QUINARY_MI2S_TX,
1844 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1845 .ops = &msm_mi2s_be_ops,
1846 .ignore_suspend = 1,
1847 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301848};
1849
1850static struct snd_soc_dai_link msm_auxpcm_be_dai_links[] = {
1851 /* Primary AUX PCM Backend DAI Links */
1852 {
1853 .name = LPASS_BE_AUXPCM_RX,
1854 .stream_name = "AUX PCM Playback",
1855 .cpu_dai_name = "msm-dai-q6-auxpcm.1",
1856 .platform_name = "msm-pcm-routing",
1857 .codec_name = "msm-stub-codec.1",
1858 .codec_dai_name = "msm-stub-rx",
1859 .no_pcm = 1,
1860 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301861 .id = MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301862 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1863 .ignore_pmdown_time = 1,
1864 .ignore_suspend = 1,
1865 .ops = &msm_aux_pcm_be_ops,
1866 },
1867 {
1868 .name = LPASS_BE_AUXPCM_TX,
1869 .stream_name = "AUX PCM Capture",
1870 .cpu_dai_name = "msm-dai-q6-auxpcm.1",
1871 .platform_name = "msm-pcm-routing",
1872 .codec_name = "msm-stub-codec.1",
1873 .codec_dai_name = "msm-stub-tx",
1874 .no_pcm = 1,
1875 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301876 .id = MSM_BACKEND_DAI_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301877 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301878 .ignore_suspend = 1,
1879 .ops = &msm_aux_pcm_be_ops,
1880 },
1881 /* Secondary AUX PCM Backend DAI Links */
1882 {
1883 .name = LPASS_BE_SEC_AUXPCM_RX,
1884 .stream_name = "Sec AUX PCM Playback",
1885 .cpu_dai_name = "msm-dai-q6-auxpcm.2",
1886 .platform_name = "msm-pcm-routing",
1887 .codec_name = "msm-stub-codec.1",
1888 .codec_dai_name = "msm-stub-rx",
1889 .no_pcm = 1,
1890 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301891 .id = MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301892 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1893 .ignore_pmdown_time = 1,
1894 .ignore_suspend = 1,
1895 .ops = &msm_aux_pcm_be_ops,
1896 },
1897 {
1898 .name = LPASS_BE_SEC_AUXPCM_TX,
1899 .stream_name = "Sec AUX PCM Capture",
1900 .cpu_dai_name = "msm-dai-q6-auxpcm.2",
1901 .platform_name = "msm-pcm-routing",
1902 .codec_name = "msm-stub-codec.1",
1903 .codec_dai_name = "msm-stub-tx",
1904 .no_pcm = 1,
1905 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301906 .id = MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301907 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1908 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301909 .ops = &msm_aux_pcm_be_ops,
1910 },
1911 /* Tertiary AUX PCM Backend DAI Links */
1912 {
1913 .name = LPASS_BE_TERT_AUXPCM_RX,
1914 .stream_name = "Tert AUX PCM Playback",
1915 .cpu_dai_name = "msm-dai-q6-auxpcm.3",
1916 .platform_name = "msm-pcm-routing",
1917 .codec_name = "msm-stub-codec.1",
1918 .codec_dai_name = "msm-stub-rx",
1919 .no_pcm = 1,
1920 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301921 .id = MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301922 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1923 .ignore_pmdown_time = 1,
1924 .ignore_suspend = 1,
1925 .ops = &msm_aux_pcm_be_ops,
1926 },
1927 {
1928 .name = LPASS_BE_TERT_AUXPCM_TX,
1929 .stream_name = "Tert AUX PCM Capture",
1930 .cpu_dai_name = "msm-dai-q6-auxpcm.3",
1931 .platform_name = "msm-pcm-routing",
1932 .codec_name = "msm-stub-codec.1",
1933 .codec_dai_name = "msm-stub-tx",
1934 .no_pcm = 1,
1935 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301936 .id = MSM_BACKEND_DAI_TERT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301937 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1938 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301939 .ops = &msm_aux_pcm_be_ops,
1940 },
1941 /* Quaternary AUX PCM Backend DAI Links */
1942 {
1943 .name = LPASS_BE_QUAT_AUXPCM_RX,
1944 .stream_name = "Quat AUX PCM Playback",
1945 .cpu_dai_name = "msm-dai-q6-auxpcm.4",
1946 .platform_name = "msm-pcm-routing",
1947 .codec_name = "msm-stub-codec.1",
1948 .codec_dai_name = "msm-stub-rx",
1949 .no_pcm = 1,
1950 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301951 .id = MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301952 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1953 .ignore_pmdown_time = 1,
1954 .ignore_suspend = 1,
1955 .ops = &msm_aux_pcm_be_ops,
1956 },
1957 {
1958 .name = LPASS_BE_QUAT_AUXPCM_TX,
1959 .stream_name = "Quat AUX PCM Capture",
1960 .cpu_dai_name = "msm-dai-q6-auxpcm.4",
1961 .platform_name = "msm-pcm-routing",
1962 .codec_name = "msm-stub-codec.1",
1963 .codec_dai_name = "msm-stub-tx",
1964 .no_pcm = 1,
1965 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301966 .id = MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301967 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1968 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301969 .ops = &msm_aux_pcm_be_ops,
1970 },
Rohit Kumard1754482017-09-10 22:57:39 +05301971 /* Quinary AUX PCM Backend DAI Links */
1972 {
1973 .name = LPASS_BE_QUIN_AUXPCM_RX,
1974 .stream_name = "Quin AUX PCM Playback",
1975 .cpu_dai_name = "msm-dai-q6-auxpcm.5",
1976 .platform_name = "msm-pcm-routing",
1977 .codec_name = "msm-stub-codec.1",
1978 .codec_dai_name = "msm-stub-rx",
1979 .no_pcm = 1,
1980 .dpcm_playback = 1,
1981 .id = MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
1982 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1983 .ignore_pmdown_time = 1,
1984 .ignore_suspend = 1,
1985 .ops = &msm_aux_pcm_be_ops,
1986 },
1987 {
1988 .name = LPASS_BE_QUIN_AUXPCM_TX,
1989 .stream_name = "Quin AUX PCM Capture",
1990 .cpu_dai_name = "msm-dai-q6-auxpcm.5",
1991 .platform_name = "msm-pcm-routing",
1992 .codec_name = "msm-stub-codec.1",
1993 .codec_dai_name = "msm-stub-tx",
1994 .no_pcm = 1,
1995 .dpcm_capture = 1,
1996 .id = MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
1997 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1998 .ignore_suspend = 1,
Rohit Kumard1754482017-09-10 22:57:39 +05301999 .ops = &msm_aux_pcm_be_ops,
2000 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302001};
2002
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05302003static struct snd_soc_dai_link msm_afe_rxtx_lb_be_dai_link[] = {
2004 {
2005 .name = LPASS_BE_AFE_LOOPBACK_TX,
2006 .stream_name = "AFE Loopback Capture",
2007 .cpu_dai_name = "msm-dai-q6-dev.24577",
2008 .platform_name = "msm-pcm-routing",
2009 .codec_name = "msm-stub-codec.1",
2010 .codec_dai_name = "msm-stub-tx",
2011 .no_pcm = 1,
2012 .dpcm_capture = 1,
2013 .id = MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
2014 .ignore_pmdown_time = 1,
2015 .ignore_suspend = 1,
2016 },
2017};
2018
2019
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302020static struct snd_soc_dai_link msm_wcn_be_dai_links[] = {
2021 {
2022 .name = LPASS_BE_SLIMBUS_7_RX,
2023 .stream_name = "Slimbus7 Playback",
2024 .cpu_dai_name = "msm-dai-q6-dev.16398",
2025 .platform_name = "msm-pcm-routing",
2026 .codec_name = "btfmslim_slave",
2027 /* BT codec driver determines capabilities based on
2028 * dai name, bt codecdai name should always contains
2029 * supported usecase information
2030 */
2031 .codec_dai_name = "btfm_bt_sco_a2dp_slim_rx",
2032 .no_pcm = 1,
2033 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05302034 .id = MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302035 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
2036 .ops = &msm_wcn_ops,
2037 /* dai link has playback support */
2038 .ignore_pmdown_time = 1,
2039 .ignore_suspend = 1,
2040 },
2041 {
2042 .name = LPASS_BE_SLIMBUS_7_TX,
2043 .stream_name = "Slimbus7 Capture",
2044 .cpu_dai_name = "msm-dai-q6-dev.16399",
2045 .platform_name = "msm-pcm-routing",
2046 .codec_name = "btfmslim_slave",
2047 .codec_dai_name = "btfm_bt_sco_slim_tx",
2048 .no_pcm = 1,
2049 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05302050 .id = MSM_BACKEND_DAI_SLIMBUS_7_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302051 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
2052 .ops = &msm_wcn_ops,
2053 .ignore_suspend = 1,
2054 },
2055 {
2056 .name = LPASS_BE_SLIMBUS_8_TX,
2057 .stream_name = "Slimbus8 Capture",
2058 .cpu_dai_name = "msm-dai-q6-dev.16401",
2059 .platform_name = "msm-pcm-routing",
2060 .codec_name = "btfmslim_slave",
2061 .codec_dai_name = "btfm_fm_slim_tx",
2062 .no_pcm = 1,
2063 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05302064 .id = MSM_BACKEND_DAI_SLIMBUS_8_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302065 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
2066 .init = &msm_wcn_init,
2067 .ops = &msm_wcn_ops,
2068 .ignore_suspend = 1,
2069 },
2070};
2071
2072static struct snd_soc_dai_link ext_disp_be_dai_link[] = {
2073 /* DISP PORT BACK END DAI Link */
2074 {
2075 .name = LPASS_BE_DISPLAY_PORT,
2076 .stream_name = "Display Port Playback",
2077 .cpu_dai_name = "msm-dai-q6-dp.24608",
2078 .platform_name = "msm-pcm-routing",
2079 .codec_name = "msm-ext-disp-audio-codec-rx",
2080 .codec_dai_name = "msm_dp_audio_codec_rx_dai",
2081 .no_pcm = 1,
2082 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05302083 .id = MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302084 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
2085 .ignore_pmdown_time = 1,
2086 .ignore_suspend = 1,
2087 },
2088};
2089
2090static struct snd_soc_dai_link msm_ext_tasha_dai_links[
2091ARRAY_SIZE(msm_ext_common_fe_dai) +
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302092ARRAY_SIZE(msm_ext_compress_capture_dai) +
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302093ARRAY_SIZE(msm_ext_tasha_fe_dai) +
2094ARRAY_SIZE(msm_ext_common_be_dai) +
2095ARRAY_SIZE(msm_ext_tasha_be_dai) +
2096ARRAY_SIZE(msm_mi2s_be_dai_links) +
2097ARRAY_SIZE(msm_auxpcm_be_dai_links) +
2098ARRAY_SIZE(msm_wcn_be_dai_links) +
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05302099ARRAY_SIZE(ext_disp_be_dai_link) +
2100ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link)];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302101
2102static struct snd_soc_dai_link msm_ext_tavil_dai_links[
2103ARRAY_SIZE(msm_ext_common_fe_dai) +
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302104ARRAY_SIZE(msm_ext_compress_capture_dai) +
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302105ARRAY_SIZE(msm_ext_tavil_fe_dai) +
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302106ARRAY_SIZE(msm_ext_common_be_dai) +
2107ARRAY_SIZE(msm_ext_tavil_be_dai) +
2108ARRAY_SIZE(msm_mi2s_be_dai_links) +
2109ARRAY_SIZE(msm_auxpcm_be_dai_links) +
2110ARRAY_SIZE(msm_wcn_be_dai_links) +
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05302111ARRAY_SIZE(ext_disp_be_dai_link) +
2112ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link)];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302113
2114/**
2115 * populate_snd_card_dailinks - prepares dailink array and initializes card.
2116 *
2117 * @dev: device handle
2118 *
2119 * Returns card on success or NULL on failure.
2120 */
2121struct snd_soc_card *populate_snd_card_dailinks(struct device *dev,
2122 int snd_card_val)
2123{
2124 struct snd_soc_card *card;
2125 struct snd_soc_dai_link *msm_ext_dai_links = NULL;
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302126 int ret, len1, len2, len3, len4, len5;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302127 enum codec_variant codec_ver = 0;
2128
2129 if (snd_card_val == EXT_SND_CARD_TASHA) {
2130 card = &snd_soc_card_msm_card_tasha;
2131 } else if (snd_card_val == EXT_SND_CARD_TAVIL) {
2132 card = &snd_soc_card_msm_card_tavil;
2133 } else {
2134 dev_err(dev, "%s: failing as no matching card name\n",
2135 __func__);
2136 return NULL;
2137 }
2138
2139 card->dev = dev;
2140 ret = snd_soc_of_parse_card_name(card, "qcom,model");
2141 if (ret) {
2142 dev_err(dev, "%s: parse card name failed, err:%d\n",
2143 __func__, ret);
2144 return NULL;
2145 }
2146
2147 if (strnstr(card->name, "tasha", strlen(card->name))) {
2148 codec_ver = tasha_codec_ver();
Rohit kumarf700c862017-12-15 15:33:57 +05302149 if (codec_ver == WCD9326) {
2150 card->name = "sdm670-tashalite-snd-card";
2151 } else if (codec_ver == WCD9XXX) {
2152 dev_err(dev, "%s: Invalid codec version %d\n",
2153 __func__, codec_ver);
2154 return NULL;
2155 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302156
2157 len1 = ARRAY_SIZE(msm_ext_common_fe_dai);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302158 len2 = len1 + ARRAY_SIZE(msm_ext_compress_capture_dai);
2159 len3 = len2 + ARRAY_SIZE(msm_ext_tasha_fe_dai);
2160 len4 = len3 + ARRAY_SIZE(msm_ext_common_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302161 memcpy(msm_ext_tasha_dai_links, msm_ext_common_fe_dai,
2162 sizeof(msm_ext_common_fe_dai));
2163 memcpy(msm_ext_tasha_dai_links + len1,
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302164 msm_ext_compress_capture_dai,
2165 sizeof(msm_ext_compress_capture_dai));
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302166 memcpy(msm_ext_tasha_dai_links + len2,
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302167 msm_ext_tasha_fe_dai, sizeof(msm_ext_tasha_fe_dai));
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302168 memcpy(msm_ext_tasha_dai_links + len3,
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302169 msm_ext_common_be_dai, sizeof(msm_ext_common_be_dai));
2170 memcpy(msm_ext_tasha_dai_links + len4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302171 msm_ext_tasha_be_dai, sizeof(msm_ext_tasha_be_dai));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302172 len5 = len4 + ARRAY_SIZE(msm_ext_tasha_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302173 if (of_property_read_bool(dev->of_node,
2174 "qcom,mi2s-audio-intf")) {
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302175 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302176 msm_mi2s_be_dai_links,
2177 sizeof(msm_mi2s_be_dai_links));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302178 len5 += ARRAY_SIZE(msm_mi2s_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302179 }
2180 if (of_property_read_bool(dev->of_node,
2181 "qcom,auxpcm-audio-intf")) {
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302182 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302183 msm_auxpcm_be_dai_links,
2184 sizeof(msm_auxpcm_be_dai_links));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302185 len5 += ARRAY_SIZE(msm_auxpcm_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302186 }
2187 if (of_property_read_bool(dev->of_node, "qcom,wcn-btfm")) {
2188 dev_dbg(dev, "%s(): WCN BTFM support present\n",
2189 __func__);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302190 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302191 msm_wcn_be_dai_links,
2192 sizeof(msm_wcn_be_dai_links));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302193 len5 += ARRAY_SIZE(msm_wcn_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302194 }
2195 if (of_property_read_bool(dev->of_node,
2196 "qcom,ext-disp-audio-rx")) {
2197 dev_dbg(dev, "%s(): ext disp audio support present\n",
2198 __func__);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302199 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302200 ext_disp_be_dai_link,
2201 sizeof(ext_disp_be_dai_link));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302202 len5 += ARRAY_SIZE(ext_disp_be_dai_link);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302203 }
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05302204 if (of_property_read_bool(dev->of_node, "qcom,afe-rxtx-lb")) {
2205 dev_dbg(dev, "%s(): AFE RX to TX loopback supported\n",
2206 __func__);
2207 memcpy(msm_ext_tasha_dai_links + len5,
2208 msm_afe_rxtx_lb_be_dai_link,
2209 sizeof(msm_afe_rxtx_lb_be_dai_link));
2210 len5 += ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link);
2211 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302212 msm_ext_dai_links = msm_ext_tasha_dai_links;
2213 } else if (strnstr(card->name, "tavil", strlen(card->name))) {
2214 len1 = ARRAY_SIZE(msm_ext_common_fe_dai);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302215 len2 = len1 + ARRAY_SIZE(msm_ext_compress_capture_dai);
2216 len3 = len2 + ARRAY_SIZE(msm_ext_tavil_fe_dai);
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302217 len4 = len3 + ARRAY_SIZE(msm_ext_common_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302218 memcpy(msm_ext_tavil_dai_links, msm_ext_common_fe_dai,
2219 sizeof(msm_ext_common_fe_dai));
2220 memcpy(msm_ext_tavil_dai_links + len1,
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302221 msm_ext_compress_capture_dai,
2222 sizeof(msm_ext_compress_capture_dai));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302223 memcpy(msm_ext_tavil_dai_links + len2,
2224 msm_ext_tavil_fe_dai, sizeof(msm_ext_tavil_fe_dai));
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302225 memcpy(msm_ext_tavil_dai_links + len3,
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302226 msm_ext_common_be_dai, sizeof(msm_ext_common_be_dai));
2227 memcpy(msm_ext_tavil_dai_links + len4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302228 msm_ext_tavil_be_dai, sizeof(msm_ext_tavil_be_dai));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302229 len5 = len4 + ARRAY_SIZE(msm_ext_tavil_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302230 if (of_property_read_bool(dev->of_node,
2231 "qcom,mi2s-audio-intf")) {
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302232 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302233 msm_mi2s_be_dai_links,
2234 sizeof(msm_mi2s_be_dai_links));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302235 len5 += ARRAY_SIZE(msm_mi2s_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302236 }
2237 if (of_property_read_bool(dev->of_node,
2238 "qcom,auxpcm-audio-intf")) {
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302239 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302240 msm_auxpcm_be_dai_links,
2241 sizeof(msm_auxpcm_be_dai_links));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302242 len5 += ARRAY_SIZE(msm_auxpcm_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302243 }
2244 if (of_property_read_bool(dev->of_node, "qcom,wcn-btfm")) {
2245 dev_dbg(dev, "%s(): WCN BTFM support present\n",
2246 __func__);
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302247 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302248 msm_wcn_be_dai_links,
2249 sizeof(msm_wcn_be_dai_links));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302250 len5 += ARRAY_SIZE(msm_wcn_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302251 }
2252 if (of_property_read_bool(dev->of_node,
2253 "qcom,ext-disp-audio-rx")) {
2254 dev_dbg(dev, "%s(): ext disp audio support present\n",
2255 __func__);
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302256 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302257 ext_disp_be_dai_link,
2258 sizeof(ext_disp_be_dai_link));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302259 len5 += ARRAY_SIZE(ext_disp_be_dai_link);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302260 }
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05302261 if (of_property_read_bool(dev->of_node, "qcom,afe-rxtx-lb")) {
2262 dev_dbg(dev, "%s(): AFE RX to TX loopback supported\n",
2263 __func__);
2264 memcpy(msm_ext_tavil_dai_links + len5,
2265 msm_afe_rxtx_lb_be_dai_link,
2266 sizeof(msm_afe_rxtx_lb_be_dai_link));
2267 len5 += ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link);
2268 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302269 msm_ext_dai_links = msm_ext_tavil_dai_links;
2270 } else {
2271 dev_err(dev, "%s: failing as no matching card name\n",
2272 __func__);
2273 return NULL;
2274 }
2275 card->dai_link = msm_ext_dai_links;
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302276 card->num_links = len5;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302277
2278 return card;
2279}
2280EXPORT_SYMBOL(populate_snd_card_dailinks);