blob: 66182ddbee96f95017ce517a46181db05f77fd8e [file] [log] [blame]
Soumya Managolibbeb8ee2019-03-18 17:05:29 +05301/* Copyright (c) 2015-2019, 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 = {
Soumya Managolibbeb8ee2019-03-18 17:05:29 +0530281 .startup = msm_tdm_snd_startup,
282 .shutdown = msm_tdm_snd_shutdown,
283 .hw_params = msm_tdm_snd_hw_params,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530284};
285
Revathi Uddaraju30feb0d2017-11-21 15:30:19 +0530286static int msm_fe_qos_prepare(struct snd_pcm_substream *substream)
287{
288 cpumask_t mask;
289
290 if (pm_qos_request_active(&substream->latency_pm_qos_req))
291 pm_qos_remove_request(&substream->latency_pm_qos_req);
292
293 cpumask_clear(&mask);
294 cpumask_set_cpu(1, &mask); /* affine to core 1 */
295 cpumask_set_cpu(2, &mask); /* affine to core 2 */
296 cpumask_copy(&substream->latency_pm_qos_req.cpus_affine, &mask);
297
298 substream->latency_pm_qos_req.type = PM_QOS_REQ_AFFINE_CORES;
299
300 pm_qos_add_request(&substream->latency_pm_qos_req,
301 PM_QOS_CPU_DMA_LATENCY,
302 MSM_LL_QOS_VALUE);
303 return 0;
304}
305
306static struct snd_soc_ops msm_fe_qos_ops = {
307 .prepare = msm_fe_qos_prepare,
308};
309
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530310static struct snd_soc_dai_link msm_ext_tasha_fe_dai[] = {
311 /* tasha_vifeedback for speaker protection */
312 {
313 .name = LPASS_BE_SLIMBUS_4_TX,
314 .stream_name = "Slimbus4 Capture",
315 .cpu_dai_name = "msm-dai-q6-dev.16393",
316 .platform_name = "msm-pcm-hostless",
317 .codec_name = "tasha_codec",
318 .codec_dai_name = "tasha_vifeedback",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530319 .id = MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530320 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
321 .ops = &msm_ext_slimbus_be_ops,
322 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
323 .ignore_suspend = 1,
324 },
325 /* Ultrasound RX DAI Link */
326 {
327 .name = "SLIMBUS_2 Hostless Playback",
328 .stream_name = "SLIMBUS_2 Hostless Playback",
329 .cpu_dai_name = "msm-dai-q6-dev.16388",
330 .platform_name = "msm-pcm-hostless",
331 .codec_name = "tasha_codec",
332 .codec_dai_name = "tasha_rx2",
333 .ignore_suspend = 1,
334 .dpcm_playback = 1,
335 .dpcm_capture = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +0530336 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530337 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
338 .ops = &msm_ext_slimbus_2_be_ops,
339 },
340 /* Ultrasound TX DAI Link */
341 {
342 .name = "SLIMBUS_2 Hostless Capture",
343 .stream_name = "SLIMBUS_2 Hostless Capture",
344 .cpu_dai_name = "msm-dai-q6-dev.16389",
345 .platform_name = "msm-pcm-hostless",
346 .codec_name = "tasha_codec",
347 .codec_dai_name = "tasha_tx2",
348 .ignore_suspend = 1,
349 .dpcm_capture = 1,
350 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
351 .ops = &msm_ext_slimbus_2_be_ops,
352 },
353 /* CPE LSM direct dai-link */
354 {
355 .name = "CPE Listen service",
356 .stream_name = "CPE Listen Audio Service",
357 .cpu_dai_name = "msm-dai-slim",
358 .platform_name = "msm-cpe-lsm",
359 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
360 SND_SOC_DPCM_TRIGGER_POST},
361 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
362 .ignore_suspend = 1,
363 .dpcm_capture = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530364 .codec_dai_name = "tasha_mad1",
365 .codec_name = "tasha_codec",
366 .ops = &msm_ext_cpe_ops,
367 },
368 {
369 .name = "SLIMBUS_6 Hostless Playback",
370 .stream_name = "SLIMBUS_6 Hostless",
371 .cpu_dai_name = "SLIMBUS6_HOSTLESS",
372 .platform_name = "msm-pcm-hostless",
373 .dynamic = 1,
374 .dpcm_playback = 1,
375 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
376 SND_SOC_DPCM_TRIGGER_POST},
377 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
378 .ignore_suspend = 1,
379 /* this dailink has playback support */
380 .ignore_pmdown_time = 1,
381 .codec_dai_name = "snd-soc-dummy-dai",
382 .codec_name = "snd-soc-dummy",
383 },
384 /* CPE LSM EC PP direct dai-link */
385 {
386 .name = "CPE Listen service ECPP",
387 .stream_name = "CPE Listen Audio Service ECPP",
388 .cpu_dai_name = "CPE_LSM_NOHOST",
389 .platform_name = "msm-cpe-lsm.3",
390 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
391 SND_SOC_DPCM_TRIGGER_POST},
392 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
393 .ignore_suspend = 1,
394 .ignore_pmdown_time = 1,
395 .codec_dai_name = "tasha_cpe",
396 .codec_name = "tasha_codec",
397 },
398};
399
400static struct snd_soc_dai_link msm_ext_tavil_fe_dai[] = {
401 {
402 .name = LPASS_BE_SLIMBUS_4_TX,
403 .stream_name = "Slimbus4 Capture",
404 .cpu_dai_name = "msm-dai-q6-dev.16393",
405 .platform_name = "msm-pcm-hostless",
406 .codec_name = "tavil_codec",
407 .codec_dai_name = "tavil_vifeedback",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530408 .id = MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530409 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
410 .ops = &msm_ext_slimbus_be_ops,
411 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
412 .ignore_suspend = 1,
413 },
414 /* Ultrasound RX DAI Link */
415 {
416 .name = "SLIMBUS_2 Hostless Playback",
417 .stream_name = "SLIMBUS_2 Hostless Playback",
418 .cpu_dai_name = "msm-dai-q6-dev.16388",
419 .platform_name = "msm-pcm-hostless",
420 .codec_name = "tavil_codec",
421 .codec_dai_name = "tavil_rx2",
422 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +0530423 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530424 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
425 .ops = &msm_ext_slimbus_2_be_ops,
426 },
427 /* Ultrasound TX DAI Link */
428 {
429 .name = "SLIMBUS_2 Hostless Capture",
430 .stream_name = "SLIMBUS_2 Hostless Capture",
431 .cpu_dai_name = "msm-dai-q6-dev.16389",
432 .platform_name = "msm-pcm-hostless",
433 .codec_name = "tavil_codec",
434 .codec_dai_name = "tavil_tx2",
435 .ignore_suspend = 1,
436 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
437 .ops = &msm_ext_slimbus_2_be_ops,
438 },
439};
440
441static struct snd_soc_dai_link msm_ext_tasha_be_dai[] = {
442 /* Backend DAI Links */
443 {
444 .name = LPASS_BE_SLIMBUS_0_RX,
445 .stream_name = "Slimbus Playback",
446 .cpu_dai_name = "msm-dai-q6-dev.16384",
447 .platform_name = "msm-pcm-routing",
448 .codec_name = "tasha_codec",
449 .codec_dai_name = "tasha_mix_rx1",
450 .no_pcm = 1,
451 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530452 .id = MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530453 .init = &msm_audrx_init,
454 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
455 /* this dainlink has playback support */
456 .ignore_pmdown_time = 1,
457 .ignore_suspend = 1,
458 .ops = &msm_ext_slimbus_be_ops,
459 },
460 {
461 .name = LPASS_BE_SLIMBUS_0_TX,
462 .stream_name = "Slimbus Capture",
463 .cpu_dai_name = "msm-dai-q6-dev.16385",
464 .platform_name = "msm-pcm-routing",
465 .codec_name = "tasha_codec",
466 .codec_dai_name = "tasha_tx1",
467 .no_pcm = 1,
468 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530469 .id = MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530470 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
471 .ignore_suspend = 1,
472 .ops = &msm_ext_slimbus_be_ops,
473 },
474 {
475 .name = LPASS_BE_SLIMBUS_1_RX,
476 .stream_name = "Slimbus1 Playback",
477 .cpu_dai_name = "msm-dai-q6-dev.16386",
478 .platform_name = "msm-pcm-routing",
479 .codec_name = "tasha_codec",
480 .codec_dai_name = "tasha_mix_rx1",
481 .no_pcm = 1,
482 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530483 .id = MSM_BACKEND_DAI_SLIMBUS_1_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530484 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
485 .ops = &msm_ext_slimbus_be_ops,
486 /* dai link has playback support */
487 .ignore_pmdown_time = 1,
488 .ignore_suspend = 1,
489 },
490 {
491 .name = LPASS_BE_SLIMBUS_1_TX,
492 .stream_name = "Slimbus1 Capture",
493 .cpu_dai_name = "msm-dai-q6-dev.16387",
494 .platform_name = "msm-pcm-routing",
495 .codec_name = "tasha_codec",
496 .codec_dai_name = "tasha_tx3",
497 .no_pcm = 1,
498 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530499 .id = MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530500 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
501 .ops = &msm_ext_slimbus_be_ops,
502 .ignore_suspend = 1,
503 },
504 {
505 .name = LPASS_BE_SLIMBUS_3_RX,
506 .stream_name = "Slimbus3 Playback",
507 .cpu_dai_name = "msm-dai-q6-dev.16390",
508 .platform_name = "msm-pcm-routing",
509 .codec_name = "tasha_codec",
510 .codec_dai_name = "tasha_mix_rx1",
511 .no_pcm = 1,
512 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530513 .id = MSM_BACKEND_DAI_SLIMBUS_3_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530514 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
515 .ops = &msm_ext_slimbus_be_ops,
516 /* dai link has playback support */
517 .ignore_pmdown_time = 1,
518 .ignore_suspend = 1,
519 },
520 {
521 .name = LPASS_BE_SLIMBUS_3_TX,
522 .stream_name = "Slimbus3 Capture",
523 .cpu_dai_name = "msm-dai-q6-dev.16391",
524 .platform_name = "msm-pcm-routing",
525 .codec_name = "tasha_codec",
526 .codec_dai_name = "tasha_tx1",
527 .no_pcm = 1,
528 .dpcm_capture = 1,
529 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530530 .id = MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530531 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
532 .ops = &msm_ext_slimbus_be_ops,
533 .ignore_suspend = 1,
534 },
535 {
536 .name = LPASS_BE_SLIMBUS_4_RX,
537 .stream_name = "Slimbus4 Playback",
538 .cpu_dai_name = "msm-dai-q6-dev.16392",
539 .platform_name = "msm-pcm-routing",
540 .codec_name = "tasha_codec",
541 .codec_dai_name = "tasha_mix_rx1",
542 .no_pcm = 1,
543 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530544 .id = MSM_BACKEND_DAI_SLIMBUS_4_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530545 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
546 .ops = &msm_ext_slimbus_be_ops,
547 /* dai link has playback support */
548 .ignore_pmdown_time = 1,
549 .ignore_suspend = 1,
550 },
551 {
552 .name = LPASS_BE_SLIMBUS_5_RX,
553 .stream_name = "Slimbus5 Playback",
554 .cpu_dai_name = "msm-dai-q6-dev.16394",
555 .platform_name = "msm-pcm-routing",
556 .codec_name = "tasha_codec",
557 .codec_dai_name = "tasha_rx3",
558 .no_pcm = 1,
559 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530560 .id = MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530561 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
562 .ops = &msm_ext_slimbus_be_ops,
563 /* dai link has playback support */
564 .ignore_pmdown_time = 1,
565 .ignore_suspend = 1,
566 },
567 /* MAD BE */
568 {
569 .name = LPASS_BE_SLIMBUS_5_TX,
570 .stream_name = "Slimbus5 Capture",
571 .cpu_dai_name = "msm-dai-q6-dev.16395",
572 .platform_name = "msm-pcm-routing",
573 .codec_name = "tasha_codec",
574 .codec_dai_name = "tasha_mad1",
575 .no_pcm = 1,
576 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530577 .id = MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530578 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
579 .ops = &msm_ext_slimbus_be_ops,
580 .ignore_suspend = 1,
581 },
582 {
583 .name = LPASS_BE_SLIMBUS_6_RX,
584 .stream_name = "Slimbus6 Playback",
585 .cpu_dai_name = "msm-dai-q6-dev.16396",
586 .platform_name = "msm-pcm-routing",
587 .codec_name = "tasha_codec",
588 .codec_dai_name = "tasha_rx4",
589 .no_pcm = 1,
590 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530591 .id = MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530592 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
593 .ops = &msm_ext_slimbus_be_ops,
594 /* dai link has playback support */
595 .ignore_pmdown_time = 1,
596 .ignore_suspend = 1,
597 },
598};
599
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530600static struct snd_soc_dai_link msm_ext_compress_capture_dai[] = {
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530601 {/* hw:x,37 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530602 .name = "Compress9",
603 .stream_name = "Compress9",
604 .cpu_dai_name = "MultiMedia17",
605 .platform_name = "msm-compress-dsp",
606 .dynamic = 1,
607 .dpcm_capture = 1,
608 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
609 SND_SOC_DPCM_TRIGGER_POST},
610 .codec_dai_name = "snd-soc-dummy-dai",
611 .codec_name = "snd-soc-dummy",
612 .ignore_suspend = 1,
613 .id = MSM_FRONTEND_DAI_MULTIMEDIA17,
614 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530615 {/* hw:x,38 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530616 .name = "Compress10",
617 .stream_name = "Compress10",
618 .cpu_dai_name = "MultiMedia18",
619 .platform_name = "msm-compress-dsp",
620 .dynamic = 1,
621 .dpcm_capture = 1,
622 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
623 SND_SOC_DPCM_TRIGGER_POST},
624 .codec_dai_name = "snd-soc-dummy-dai",
625 .codec_name = "snd-soc-dummy",
626 .ignore_suspend = 1,
627 .id = MSM_FRONTEND_DAI_MULTIMEDIA18,
628 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530629 {/* hw:x,39 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530630 .name = "Compress11",
631 .stream_name = "Compress11",
632 .cpu_dai_name = "MultiMedia19",
633 .platform_name = "msm-compress-dsp",
634 .dynamic = 1,
635 .dpcm_capture = 1,
636 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
637 SND_SOC_DPCM_TRIGGER_POST},
638 .codec_dai_name = "snd-soc-dummy-dai",
639 .codec_name = "snd-soc-dummy",
640 .ignore_suspend = 1,
641 .id = MSM_FRONTEND_DAI_MULTIMEDIA19,
642 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530643 {/* hw:x,40 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530644 .name = "Compress12",
645 .stream_name = "Compress12",
646 .cpu_dai_name = "MultiMedia28",
647 .platform_name = "msm-compress-dsp",
648 .dynamic = 1,
649 .dpcm_capture = 1,
650 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
651 SND_SOC_DPCM_TRIGGER_POST},
652 .codec_dai_name = "snd-soc-dummy-dai",
653 .codec_name = "snd-soc-dummy",
654 .ignore_suspend = 1,
655 .id = MSM_FRONTEND_DAI_MULTIMEDIA28,
656 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530657 {/* hw:x,41 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530658 .name = "Compress13",
659 .stream_name = "Compress13",
660 .cpu_dai_name = "MultiMedia29",
661 .platform_name = "msm-compress-dsp",
662 .dynamic = 1,
663 .dpcm_capture = 1,
664 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
665 SND_SOC_DPCM_TRIGGER_POST},
666 .codec_dai_name = "snd-soc-dummy-dai",
667 .codec_name = "snd-soc-dummy",
668 .ignore_suspend = 1,
669 .id = MSM_FRONTEND_DAI_MULTIMEDIA29,
670 },
671};
672
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530673static struct snd_soc_dai_link msm_ext_tavil_be_dai[] = {
674 {
675 .name = LPASS_BE_SLIMBUS_0_RX,
676 .stream_name = "Slimbus Playback",
677 .cpu_dai_name = "msm-dai-q6-dev.16384",
678 .platform_name = "msm-pcm-routing",
679 .codec_name = "tavil_codec",
680 .codec_dai_name = "tavil_rx1",
681 .no_pcm = 1,
682 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530683 .id = MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530684 .init = &msm_audrx_init,
685 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
686 /* this dainlink has playback support */
687 .ignore_pmdown_time = 1,
688 .ignore_suspend = 1,
689 .ops = &msm_ext_slimbus_be_ops,
690 },
691 {
692 .name = LPASS_BE_SLIMBUS_0_TX,
693 .stream_name = "Slimbus Capture",
694 .cpu_dai_name = "msm-dai-q6-dev.16385",
695 .platform_name = "msm-pcm-routing",
696 .codec_name = "tavil_codec",
697 .codec_dai_name = "tavil_tx1",
698 .no_pcm = 1,
699 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530700 .id = MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530701 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
702 .ignore_suspend = 1,
703 .ops = &msm_ext_slimbus_be_ops,
704 },
705 {
706 .name = LPASS_BE_SLIMBUS_1_RX,
707 .stream_name = "Slimbus1 Playback",
708 .cpu_dai_name = "msm-dai-q6-dev.16386",
709 .platform_name = "msm-pcm-routing",
710 .codec_name = "tavil_codec",
711 .codec_dai_name = "tavil_rx1",
712 .no_pcm = 1,
713 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530714 .id = MSM_BACKEND_DAI_SLIMBUS_1_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530715 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
716 .ops = &msm_ext_slimbus_be_ops,
717 /* dai link has playback support */
718 .ignore_pmdown_time = 1,
719 .ignore_suspend = 1,
720 },
721 {
722 .name = LPASS_BE_SLIMBUS_1_TX,
723 .stream_name = "Slimbus1 Capture",
724 .cpu_dai_name = "msm-dai-q6-dev.16387",
725 .platform_name = "msm-pcm-routing",
726 .codec_name = "tavil_codec",
727 .codec_dai_name = "tavil_tx3",
728 .no_pcm = 1,
729 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530730 .id = MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530731 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
732 .ops = &msm_ext_slimbus_be_ops,
733 .ignore_suspend = 1,
734 },
735 {
736 .name = LPASS_BE_SLIMBUS_2_RX,
737 .stream_name = "Slimbus2 Playback",
738 .cpu_dai_name = "msm-dai-q6-dev.16388",
739 .platform_name = "msm-pcm-routing",
740 .codec_name = "tavil_codec",
741 .codec_dai_name = "tavil_rx2",
742 .no_pcm = 1,
743 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530744 .id = MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530745 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
746 .ops = &msm_ext_slimbus_be_ops,
747 .ignore_pmdown_time = 1,
748 .ignore_suspend = 1,
749 },
750 {
751 .name = LPASS_BE_SLIMBUS_3_RX,
752 .stream_name = "Slimbus3 Playback",
753 .cpu_dai_name = "msm-dai-q6-dev.16390",
754 .platform_name = "msm-pcm-routing",
755 .codec_name = "tavil_codec",
756 .codec_dai_name = "tavil_rx1",
757 .no_pcm = 1,
758 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530759 .id = MSM_BACKEND_DAI_SLIMBUS_3_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530760 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
761 .ops = &msm_ext_slimbus_be_ops,
762 /* dai link has playback support */
763 .ignore_pmdown_time = 1,
764 .ignore_suspend = 1,
765 },
766 {
767 .name = LPASS_BE_SLIMBUS_3_TX,
768 .stream_name = "Slimbus3 Capture",
769 .cpu_dai_name = "msm-dai-q6-dev.16391",
770 .platform_name = "msm-pcm-routing",
771 .codec_name = "tavil_codec",
772 .codec_dai_name = "tavil_tx1",
773 .no_pcm = 1,
774 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530775 .id = MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530776 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
777 .ops = &msm_ext_slimbus_be_ops,
778 .ignore_suspend = 1,
779 },
780 {
781 .name = LPASS_BE_SLIMBUS_4_RX,
782 .stream_name = "Slimbus4 Playback",
783 .cpu_dai_name = "msm-dai-q6-dev.16392",
784 .platform_name = "msm-pcm-routing",
785 .codec_name = "tavil_codec",
786 .codec_dai_name = "tavil_rx1",
787 .no_pcm = 1,
788 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530789 .id = MSM_BACKEND_DAI_SLIMBUS_4_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530790 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
791 .ops = &msm_ext_slimbus_be_ops,
792 /* dai link has playback support */
793 .ignore_pmdown_time = 1,
794 .ignore_suspend = 1,
795 },
796 {
797 .name = LPASS_BE_SLIMBUS_5_RX,
798 .stream_name = "Slimbus5 Playback",
799 .cpu_dai_name = "msm-dai-q6-dev.16394",
800 .platform_name = "msm-pcm-routing",
801 .codec_name = "tavil_codec",
802 .codec_dai_name = "tavil_rx3",
803 .no_pcm = 1,
804 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530805 .id = MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530806 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
807 .ops = &msm_ext_slimbus_be_ops,
808 /* dai link has playback support */
809 .ignore_pmdown_time = 1,
810 .ignore_suspend = 1,
811 },
812 /* MAD BE */
813 {
814 .name = LPASS_BE_SLIMBUS_5_TX,
815 .stream_name = "Slimbus5 Capture",
816 .cpu_dai_name = "msm-dai-q6-dev.16395",
817 .platform_name = "msm-pcm-routing",
818 .codec_name = "tavil_codec",
819 .codec_dai_name = "tavil_mad1",
820 .no_pcm = 1,
821 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530822 .id = MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530823 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
824 .ops = &msm_ext_slimbus_be_ops,
825 .ignore_suspend = 1,
826 },
827 {
828 .name = LPASS_BE_SLIMBUS_6_RX,
829 .stream_name = "Slimbus6 Playback",
830 .cpu_dai_name = "msm-dai-q6-dev.16396",
831 .platform_name = "msm-pcm-routing",
832 .codec_name = "tavil_codec",
833 .codec_dai_name = "tavil_rx4",
834 .no_pcm = 1,
835 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530836 .id = MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530837 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
838 .ops = &msm_ext_slimbus_be_ops,
839 /* dai link has playback support */
840 .ignore_pmdown_time = 1,
841 .ignore_suspend = 1,
842 },
843};
844
845static struct snd_soc_dai_link msm_ext_common_fe_dai[] = {
846 /* FrontEnd DAI Links */
847 {/* hw:x,0 */
848 .name = MSM_DAILINK_NAME(Media1),
849 .stream_name = "MultiMedia1",
850 .cpu_dai_name = "MultiMedia1",
851 .platform_name = "msm-pcm-dsp.0",
852 .dynamic = 1,
853 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
854 SND_SOC_DPCM_TRIGGER_POST},
855 .codec_dai_name = "snd-soc-dummy-dai",
856 .codec_name = "snd-soc-dummy",
857 .ignore_suspend = 1,
858 .dpcm_playback = 1,
859 .dpcm_capture = 1,
860 /* this dai link has playback support */
861 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530862 .id = MSM_FRONTEND_DAI_MULTIMEDIA1
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530863 },
864 {/* hw:x,1 */
865 .name = MSM_DAILINK_NAME(Media2),
866 .stream_name = "MultiMedia2",
867 .cpu_dai_name = "MultiMedia2",
868 .platform_name = "msm-pcm-dsp.0",
869 .dynamic = 1,
870 .dpcm_playback = 1,
871 .dpcm_capture = 1,
872 .codec_dai_name = "snd-soc-dummy-dai",
873 .codec_name = "snd-soc-dummy",
874 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
875 SND_SOC_DPCM_TRIGGER_POST},
876 .ignore_suspend = 1,
877 /* this dai link has playback support */
878 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530879 .id = MSM_FRONTEND_DAI_MULTIMEDIA2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530880 },
881 {/* hw:x,2 */
882 .name = "VoiceMMode1",
883 .stream_name = "VoiceMMode1",
884 .cpu_dai_name = "VoiceMMode1",
885 .platform_name = "msm-pcm-voice",
886 .dynamic = 1,
887 .dpcm_capture = 1,
888 .dpcm_playback = 1,
889 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
890 SND_SOC_DPCM_TRIGGER_POST},
891 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
892 .ignore_suspend = 1,
893 .ignore_pmdown_time = 1,
894 .codec_dai_name = "snd-soc-dummy-dai",
895 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530896 .id = MSM_FRONTEND_DAI_VOICEMMODE1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530897 },
898 {/* hw:x,3 */
899 .name = "MSM VoIP",
900 .stream_name = "VoIP",
901 .cpu_dai_name = "VoIP",
902 .platform_name = "msm-voip-dsp",
903 .dynamic = 1,
904 .dpcm_playback = 1,
905 .dpcm_capture = 1,
906 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
907 SND_SOC_DPCM_TRIGGER_POST},
908 .codec_dai_name = "snd-soc-dummy-dai",
909 .codec_name = "snd-soc-dummy",
910 .ignore_suspend = 1,
911 /* this dai link has playback support */
912 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530913 .id = MSM_FRONTEND_DAI_VOIP,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530914 },
915 {/* hw:x,4 */
916 .name = MSM_DAILINK_NAME(ULL),
917 .stream_name = "ULL",
918 .cpu_dai_name = "MultiMedia3",
919 .platform_name = "msm-pcm-dsp.2",
920 .dynamic = 1,
921 .dpcm_playback = 1,
922 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
923 SND_SOC_DPCM_TRIGGER_POST},
924 .codec_dai_name = "snd-soc-dummy-dai",
925 .codec_name = "snd-soc-dummy",
926 .ignore_suspend = 1,
927 /* this dai link has playback support */
928 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530929 .id = MSM_FRONTEND_DAI_MULTIMEDIA3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530930 },
931 /* Hostless PCM purpose */
932 {/* hw:x,5 */
933 .name = "SLIMBUS_0 Hostless",
934 .stream_name = "SLIMBUS_0 Hostless",
935 .cpu_dai_name = "SLIMBUS0_HOSTLESS",
936 .platform_name = "msm-pcm-hostless",
937 .dynamic = 1,
938 .dpcm_capture = 1,
939 .dpcm_playback = 1,
940 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
941 SND_SOC_DPCM_TRIGGER_POST},
942 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
943 .ignore_suspend = 1,
944 .ignore_pmdown_time = 1,
945 /* This dai link has MI2S support */
946 .codec_dai_name = "snd-soc-dummy-dai",
947 .codec_name = "snd-soc-dummy",
948 },
949 {/* hw:x,6 */
950 .name = "MSM AFE-PCM RX",
951 .stream_name = "AFE-PROXY RX",
952 .cpu_dai_name = "msm-dai-q6-dev.241",
953 .codec_name = "msm-stub-codec.1",
954 .codec_dai_name = "msm-stub-rx",
955 .platform_name = "msm-pcm-afe",
956 .ignore_suspend = 1,
957 /* this dai link has playback support */
958 .ignore_pmdown_time = 1,
959 },
960 {/* hw:x,7 */
961 .name = "MSM AFE-PCM TX",
962 .stream_name = "AFE-PROXY TX",
963 .cpu_dai_name = "msm-dai-q6-dev.240",
964 .codec_name = "msm-stub-codec.1",
965 .codec_dai_name = "msm-stub-tx",
966 .platform_name = "msm-pcm-afe",
967 .ignore_suspend = 1,
968 },
969 {/* hw:x,8 */
970 .name = MSM_DAILINK_NAME(Compress1),
971 .stream_name = "Compress1",
972 .cpu_dai_name = "MultiMedia4",
973 .platform_name = "msm-compress-dsp",
974 .async_ops = ASYNC_DPCM_SND_SOC_HW_PARAMS,
975 .dynamic = 1,
976 .dpcm_capture = 1,
977 .dpcm_playback = 1,
978 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
979 SND_SOC_DPCM_TRIGGER_POST},
980 .codec_dai_name = "snd-soc-dummy-dai",
981 .codec_name = "snd-soc-dummy",
982 .ignore_suspend = 1,
983 .ignore_pmdown_time = 1,
984 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530985 .id = MSM_FRONTEND_DAI_MULTIMEDIA4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530986 },
987 {/* hw:x,9*/
988 .name = "AUXPCM Hostless",
989 .stream_name = "AUXPCM Hostless",
990 .cpu_dai_name = "AUXPCM_HOSTLESS",
991 .platform_name = "msm-pcm-hostless",
992 .dynamic = 1,
993 .dpcm_capture = 1,
994 .dpcm_playback = 1,
995 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
996 SND_SOC_DPCM_TRIGGER_POST},
997 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
998 .ignore_suspend = 1,
999 /* this dai link has playback support */
1000 .ignore_pmdown_time = 1,
1001 .codec_dai_name = "snd-soc-dummy-dai",
1002 .codec_name = "snd-soc-dummy",
1003 },
1004 {/* hw:x,10 */
1005 .name = "SLIMBUS_1 Hostless",
1006 .stream_name = "SLIMBUS_1 Hostless",
1007 .cpu_dai_name = "SLIMBUS1_HOSTLESS",
1008 .platform_name = "msm-pcm-hostless",
1009 .dynamic = 1,
1010 .dpcm_capture = 1,
1011 .dpcm_playback = 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,
1016 .ignore_pmdown_time = 1, /* dai link has playback support */
1017 .codec_dai_name = "snd-soc-dummy-dai",
1018 .codec_name = "snd-soc-dummy",
1019 },
1020 {/* hw:x,11 */
1021 .name = "SLIMBUS_3 Hostless",
1022 .stream_name = "SLIMBUS_3 Hostless",
1023 .cpu_dai_name = "SLIMBUS3_HOSTLESS",
1024 .platform_name = "msm-pcm-hostless",
1025 .dynamic = 1,
1026 .dpcm_capture = 1,
1027 .dpcm_playback = 1,
1028 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1029 SND_SOC_DPCM_TRIGGER_POST},
1030 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1031 .ignore_suspend = 1,
1032 .ignore_pmdown_time = 1, /* dai link has playback support */
1033 .codec_dai_name = "snd-soc-dummy-dai",
1034 .codec_name = "snd-soc-dummy",
1035 },
1036 {/* hw:x,12 */
1037 .name = "SLIMBUS_4 Hostless",
1038 .stream_name = "SLIMBUS_4 Hostless",
1039 .cpu_dai_name = "SLIMBUS4_HOSTLESS",
1040 .platform_name = "msm-pcm-hostless",
1041 .dynamic = 1,
1042 .dpcm_capture = 1,
1043 .dpcm_playback = 1,
1044 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1045 SND_SOC_DPCM_TRIGGER_POST},
1046 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1047 .ignore_suspend = 1,
1048 .ignore_pmdown_time = 1, /* dai link has playback support */
1049 .codec_dai_name = "snd-soc-dummy-dai",
1050 .codec_name = "snd-soc-dummy",
1051 },
1052 {/* hw:x,13 */
1053 .name = MSM_DAILINK_NAME(LowLatency),
1054 .stream_name = "MultiMedia5",
1055 .cpu_dai_name = "MultiMedia5",
1056 .platform_name = "msm-pcm-dsp.1",
1057 .dynamic = 1,
1058 .dpcm_capture = 1,
1059 .dpcm_playback = 1,
1060 .codec_dai_name = "snd-soc-dummy-dai",
1061 .codec_name = "snd-soc-dummy",
1062 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1063 SND_SOC_DPCM_TRIGGER_POST},
1064 .ignore_suspend = 1,
1065 /* this dai link has playback support */
1066 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301067 .id = MSM_FRONTEND_DAI_MULTIMEDIA5,
Revathi Uddaraju30feb0d2017-11-21 15:30:19 +05301068 .ops = &msm_fe_qos_ops,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301069 },
1070 /* LSM FE */
1071 {/* hw:x,14 */
1072 .name = "Listen 1 Audio Service",
1073 .stream_name = "Listen 1 Audio Service",
1074 .cpu_dai_name = "LSM1",
1075 .platform_name = "msm-lsm-client",
1076 .dynamic = 1,
1077 .dpcm_capture = 1,
1078 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1079 SND_SOC_DPCM_TRIGGER_POST },
1080 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1081 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301082 .codec_dai_name = "snd-soc-dummy-dai",
1083 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301084 .id = MSM_FRONTEND_DAI_LSM1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301085 },
1086 {/* hw:x,15 */
1087 .name = MSM_DAILINK_NAME(Compress2),
1088 .stream_name = "Compress2",
1089 .cpu_dai_name = "MultiMedia7",
1090 .platform_name = "msm-compress-dsp",
1091 .dynamic = 1,
1092 .dpcm_capture = 1,
1093 .dpcm_playback = 1,
1094 .codec_dai_name = "snd-soc-dummy-dai",
1095 .codec_name = "snd-soc-dummy",
1096 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1097 SND_SOC_DPCM_TRIGGER_POST},
1098 .ignore_suspend = 1,
1099 /* this dai link has playback support */
1100 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301101 .id = MSM_FRONTEND_DAI_MULTIMEDIA7,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301102 },
1103 {/* hw:x,16 */
Laxminath Kasam38070be2017-08-17 18:21:59 +05301104 .name = MSM_DAILINK_NAME(MultiMedia10),
1105 .stream_name = "MultiMedia10",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301106 .cpu_dai_name = "MultiMedia10",
Laxminath Kasam38070be2017-08-17 18:21:59 +05301107 .platform_name = "msm-pcm-dsp.1",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301108 .dynamic = 1,
1109 .dpcm_capture = 1,
1110 .dpcm_playback = 1,
1111 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1112 SND_SOC_DPCM_TRIGGER_POST},
1113 .codec_dai_name = "snd-soc-dummy-dai",
1114 .codec_name = "snd-soc-dummy",
1115 .ignore_suspend = 1,
1116 .ignore_pmdown_time = 1,
1117 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301118 .id = MSM_FRONTEND_DAI_MULTIMEDIA10,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301119 },
1120 {/* hw:x,17 */
1121 .name = MSM_DAILINK_NAME(ULL_NOIRQ),
1122 .stream_name = "MM_NOIRQ",
1123 .cpu_dai_name = "MultiMedia8",
1124 .platform_name = "msm-pcm-dsp-noirq",
1125 .dynamic = 1,
1126 .dpcm_capture = 1,
1127 .dpcm_playback = 1,
1128 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1129 SND_SOC_DPCM_TRIGGER_POST},
1130 .codec_dai_name = "snd-soc-dummy-dai",
1131 .codec_name = "snd-soc-dummy",
1132 .ignore_suspend = 1,
1133 .ignore_pmdown_time = 1,
1134 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301135 .id = MSM_FRONTEND_DAI_MULTIMEDIA8,
Revathi Uddaraju30feb0d2017-11-21 15:30:19 +05301136 .ops = &msm_fe_qos_ops,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301137 },
1138 {/* hw:x,18 */
1139 .name = "HDMI_RX_HOSTLESS",
1140 .stream_name = "HDMI_RX_HOSTLESS",
1141 .cpu_dai_name = "HDMI_HOSTLESS",
1142 .platform_name = "msm-pcm-hostless",
1143 .dynamic = 1,
1144 .dpcm_playback = 1,
1145 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1146 SND_SOC_DPCM_TRIGGER_POST},
1147 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1148 .ignore_suspend = 1,
1149 .ignore_pmdown_time = 1,
1150 .codec_dai_name = "snd-soc-dummy-dai",
1151 .codec_name = "snd-soc-dummy",
1152 },
1153 {/* hw:x,19 */
1154 .name = "VoiceMMode2",
1155 .stream_name = "VoiceMMode2",
1156 .cpu_dai_name = "VoiceMMode2",
1157 .platform_name = "msm-pcm-voice",
1158 .dynamic = 1,
1159 .dpcm_capture = 1,
1160 .dpcm_playback = 1,
1161 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1162 SND_SOC_DPCM_TRIGGER_POST},
1163 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1164 .ignore_suspend = 1,
1165 .ignore_pmdown_time = 1,
1166 .codec_dai_name = "snd-soc-dummy-dai",
1167 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301168 .id = MSM_FRONTEND_DAI_VOICEMMODE2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301169 },
1170 {/* hw:x,20 */
1171 .name = "Listen 2 Audio Service",
1172 .stream_name = "Listen 2 Audio Service",
1173 .cpu_dai_name = "LSM2",
1174 .platform_name = "msm-lsm-client",
1175 .dynamic = 1,
1176 .dpcm_capture = 1,
1177 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1178 SND_SOC_DPCM_TRIGGER_POST },
1179 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1180 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301181 .codec_dai_name = "snd-soc-dummy-dai",
1182 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301183 .id = MSM_FRONTEND_DAI_LSM2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301184 },
1185 {/* hw:x,21 */
1186 .name = "Listen 3 Audio Service",
1187 .stream_name = "Listen 3 Audio Service",
1188 .cpu_dai_name = "LSM3",
1189 .platform_name = "msm-lsm-client",
1190 .dynamic = 1,
1191 .dpcm_capture = 1,
1192 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1193 SND_SOC_DPCM_TRIGGER_POST },
1194 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1195 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301196 .codec_dai_name = "snd-soc-dummy-dai",
1197 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301198 .id = MSM_FRONTEND_DAI_LSM3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301199 },
1200 {/* hw:x,22 */
1201 .name = "Listen 4 Audio Service",
1202 .stream_name = "Listen 4 Audio Service",
1203 .cpu_dai_name = "LSM4",
1204 .platform_name = "msm-lsm-client",
1205 .dynamic = 1,
1206 .dpcm_capture = 1,
1207 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1208 SND_SOC_DPCM_TRIGGER_POST },
1209 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1210 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301211 .codec_dai_name = "snd-soc-dummy-dai",
1212 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301213 .id = MSM_FRONTEND_DAI_LSM4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301214 },
1215 {/* hw:x,23 */
1216 .name = "Listen 5 Audio Service",
1217 .stream_name = "Listen 5 Audio Service",
1218 .cpu_dai_name = "LSM5",
1219 .platform_name = "msm-lsm-client",
1220 .dynamic = 1,
1221 .dpcm_capture = 1,
1222 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1223 SND_SOC_DPCM_TRIGGER_POST },
1224 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1225 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301226 .codec_dai_name = "snd-soc-dummy-dai",
1227 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301228 .id = MSM_FRONTEND_DAI_LSM5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301229 },
1230 {/* hw:x,24 */
1231 .name = "Listen 6 Audio Service",
1232 .stream_name = "Listen 6 Audio Service",
1233 .cpu_dai_name = "LSM6",
1234 .platform_name = "msm-lsm-client",
1235 .dynamic = 1,
1236 .dpcm_capture = 1,
1237 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1238 SND_SOC_DPCM_TRIGGER_POST },
1239 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1240 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301241 .codec_dai_name = "snd-soc-dummy-dai",
1242 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301243 .id = MSM_FRONTEND_DAI_LSM6
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301244 },
1245 {/* hw:x,25 */
1246 .name = "Listen 7 Audio Service",
1247 .stream_name = "Listen 7 Audio Service",
1248 .cpu_dai_name = "LSM7",
1249 .platform_name = "msm-lsm-client",
1250 .dynamic = 1,
1251 .dpcm_capture = 1,
1252 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1253 SND_SOC_DPCM_TRIGGER_POST },
1254 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1255 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301256 .codec_dai_name = "snd-soc-dummy-dai",
1257 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301258 .id = MSM_FRONTEND_DAI_LSM7,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301259 },
1260 {/* hw:x,26 */
1261 .name = "Listen 8 Audio Service",
1262 .stream_name = "Listen 8 Audio Service",
1263 .cpu_dai_name = "LSM8",
1264 .platform_name = "msm-lsm-client",
1265 .dynamic = 1,
1266 .dpcm_capture = 1,
1267 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1268 SND_SOC_DPCM_TRIGGER_POST },
1269 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1270 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301271 .codec_dai_name = "snd-soc-dummy-dai",
1272 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301273 .id = MSM_FRONTEND_DAI_LSM8,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301274 },
1275 {/* hw:x,27 */
1276 .name = MSM_DAILINK_NAME(Media9),
1277 .stream_name = "MultiMedia9",
1278 .cpu_dai_name = "MultiMedia9",
1279 .platform_name = "msm-pcm-dsp.0",
1280 .dynamic = 1,
1281 .dpcm_capture = 1,
1282 .dpcm_playback = 1,
1283 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1284 SND_SOC_DPCM_TRIGGER_POST},
1285 .codec_dai_name = "snd-soc-dummy-dai",
1286 .codec_name = "snd-soc-dummy",
1287 .ignore_suspend = 1,
1288 .ignore_pmdown_time = 1,
1289 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301290 .id = MSM_FRONTEND_DAI_MULTIMEDIA9,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301291 },
1292 {/* hw:x,28 */
1293 .name = MSM_DAILINK_NAME(Compress4),
1294 .stream_name = "Compress4",
1295 .cpu_dai_name = "MultiMedia11",
1296 .platform_name = "msm-compress-dsp",
1297 .dynamic = 1,
1298 .dpcm_capture = 1,
1299 .dpcm_playback = 1,
1300 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1301 SND_SOC_DPCM_TRIGGER_POST},
1302 .codec_dai_name = "snd-soc-dummy-dai",
1303 .codec_name = "snd-soc-dummy",
1304 .ignore_suspend = 1,
1305 .ignore_pmdown_time = 1,
1306 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301307 .id = MSM_FRONTEND_DAI_MULTIMEDIA11,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301308 },
1309 {/* hw:x,29 */
1310 .name = MSM_DAILINK_NAME(Compress5),
1311 .stream_name = "Compress5",
1312 .cpu_dai_name = "MultiMedia12",
1313 .platform_name = "msm-compress-dsp",
1314 .dynamic = 1,
1315 .dpcm_capture = 1,
1316 .dpcm_playback = 1,
1317 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1318 SND_SOC_DPCM_TRIGGER_POST},
1319 .codec_dai_name = "snd-soc-dummy-dai",
1320 .codec_name = "snd-soc-dummy",
1321 .ignore_suspend = 1,
1322 .ignore_pmdown_time = 1,
1323 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301324 .id = MSM_FRONTEND_DAI_MULTIMEDIA12,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301325 },
1326 {/* hw:x,30 */
1327 .name = MSM_DAILINK_NAME(Compress6),
1328 .stream_name = "Compress6",
1329 .cpu_dai_name = "MultiMedia13",
1330 .platform_name = "msm-compress-dsp",
1331 .dynamic = 1,
1332 .dpcm_capture = 1,
1333 .dpcm_playback = 1,
1334 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1335 SND_SOC_DPCM_TRIGGER_POST},
1336 .codec_dai_name = "snd-soc-dummy-dai",
1337 .codec_name = "snd-soc-dummy",
1338 .ignore_suspend = 1,
1339 .ignore_pmdown_time = 1,
1340 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301341 .id = MSM_FRONTEND_DAI_MULTIMEDIA13,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301342 },
1343 {/* hw:x,31 */
1344 .name = MSM_DAILINK_NAME(Compress7),
1345 .stream_name = "Compress7",
1346 .cpu_dai_name = "MultiMedia14",
1347 .platform_name = "msm-compress-dsp",
1348 .dynamic = 1,
1349 .dpcm_capture = 1,
1350 .dpcm_playback = 1,
1351 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1352 SND_SOC_DPCM_TRIGGER_POST},
1353 .codec_dai_name = "snd-soc-dummy-dai",
1354 .codec_name = "snd-soc-dummy",
1355 .ignore_suspend = 1,
1356 .ignore_pmdown_time = 1,
1357 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301358 .id = MSM_FRONTEND_DAI_MULTIMEDIA14,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301359 },
1360 {/* hw:x,32 */
1361 .name = MSM_DAILINK_NAME(Compress8),
1362 .stream_name = "Compress8",
1363 .cpu_dai_name = "MultiMedia15",
1364 .platform_name = "msm-compress-dsp",
1365 .dynamic = 1,
1366 .dpcm_capture = 1,
1367 .dpcm_playback = 1,
1368 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1369 SND_SOC_DPCM_TRIGGER_POST},
1370 .codec_dai_name = "snd-soc-dummy-dai",
1371 .codec_name = "snd-soc-dummy",
1372 .ignore_suspend = 1,
1373 .ignore_pmdown_time = 1,
1374 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301375 .id = MSM_FRONTEND_DAI_MULTIMEDIA15,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301376 },
1377 {/* hw:x,33 */
Asish Bhattacharya34504582017-08-08 12:55:01 +05301378 .name = MSM_DAILINK_NAME(ULL_NOIRQ_2),
1379 .stream_name = "MM_NOIRQ_2",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301380 .cpu_dai_name = "MultiMedia16",
Asish Bhattacharya34504582017-08-08 12:55:01 +05301381 .platform_name = "msm-pcm-dsp-noirq",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301382 .dynamic = 1,
1383 .dpcm_capture = 1,
1384 .dpcm_playback = 1,
1385 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1386 SND_SOC_DPCM_TRIGGER_POST},
1387 .codec_dai_name = "snd-soc-dummy-dai",
1388 .codec_name = "snd-soc-dummy",
1389 .ignore_suspend = 1,
1390 .ignore_pmdown_time = 1,
1391 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301392 .id = MSM_FRONTEND_DAI_MULTIMEDIA16,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301393 },
1394 {/* hw:x,34 */
1395 .name = "SLIMBUS_8 Hostless",
1396 .stream_name = "SLIMBUS8_HOSTLESS Capture",
1397 .cpu_dai_name = "SLIMBUS8_HOSTLESS",
1398 .platform_name = "msm-pcm-hostless",
1399 .dynamic = 1,
1400 .dpcm_capture = 1,
1401 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1402 SND_SOC_DPCM_TRIGGER_POST},
1403 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1404 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301405 .codec_dai_name = "snd-soc-dummy-dai",
1406 .codec_name = "snd-soc-dummy",
1407 },
1408 {/* hw:x,35 */
1409 .name = "SLIMBUS7 Hostless",
1410 .stream_name = "SLIMBUS7 Hostless",
1411 .cpu_dai_name = "SLIMBUS7_HOSTLESS",
1412 .platform_name = "msm-pcm-hostless",
1413 .dynamic = 1,
1414 .dpcm_playback = 1,
1415 .dpcm_capture = 1,
1416 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1417 SND_SOC_DPCM_TRIGGER_POST},
1418 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1419 .ignore_suspend = 1,
1420 .ignore_pmdown_time = 1,
1421 .codec_dai_name = "snd-soc-dummy-dai",
1422 .codec_name = "snd-soc-dummy",
1423 },
1424 {/* hw:x,36 */
1425 .name = "SDM660 HFP TX",
1426 .stream_name = "MultiMedia6",
1427 .cpu_dai_name = "MultiMedia6",
1428 .platform_name = "msm-pcm-loopback",
1429 .dynamic = 1,
1430 .dpcm_playback = 1,
1431 .dpcm_capture = 1,
1432 .codec_dai_name = "snd-soc-dummy-dai",
1433 .codec_name = "snd-soc-dummy",
1434 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1435 SND_SOC_DPCM_TRIGGER_POST},
1436 .ignore_suspend = 1,
1437 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1438 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301439 .id = MSM_FRONTEND_DAI_MULTIMEDIA6,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301440 },
1441};
1442
1443static struct snd_soc_dai_link msm_ext_common_be_dai[] = {
1444 {
1445 .name = LPASS_BE_AFE_PCM_RX,
1446 .stream_name = "AFE Playback",
1447 .cpu_dai_name = "msm-dai-q6-dev.224",
1448 .platform_name = "msm-pcm-routing",
1449 .codec_name = "msm-stub-codec.1",
1450 .codec_dai_name = "msm-stub-rx",
1451 .no_pcm = 1,
1452 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301453 .id = MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301454 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1455 /* this dai link has playback support */
1456 .ignore_pmdown_time = 1,
1457 .ignore_suspend = 1,
1458 },
1459 {
1460 .name = LPASS_BE_AFE_PCM_TX,
1461 .stream_name = "AFE Capture",
1462 .cpu_dai_name = "msm-dai-q6-dev.225",
1463 .platform_name = "msm-pcm-routing",
1464 .codec_name = "msm-stub-codec.1",
1465 .codec_dai_name = "msm-stub-tx",
1466 .no_pcm = 1,
1467 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301468 .id = MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301469 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1470 .ignore_suspend = 1,
1471 },
1472 /* Incall Record Uplink BACK END DAI Link */
1473 {
1474 .name = LPASS_BE_INCALL_RECORD_TX,
1475 .stream_name = "Voice Uplink Capture",
1476 .cpu_dai_name = "msm-dai-q6-dev.32772",
1477 .platform_name = "msm-pcm-routing",
1478 .codec_name = "msm-stub-codec.1",
1479 .codec_dai_name = "msm-stub-tx",
1480 .no_pcm = 1,
1481 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301482 .id = MSM_BACKEND_DAI_INCALL_RECORD_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301483 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1484 .ignore_suspend = 1,
1485 },
1486 /* Incall Record Downlink BACK END DAI Link */
1487 {
1488 .name = LPASS_BE_INCALL_RECORD_RX,
1489 .stream_name = "Voice Downlink Capture",
1490 .cpu_dai_name = "msm-dai-q6-dev.32771",
1491 .platform_name = "msm-pcm-routing",
1492 .codec_name = "msm-stub-codec.1",
1493 .codec_dai_name = "msm-stub-tx",
1494 .no_pcm = 1,
1495 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301496 .id = MSM_BACKEND_DAI_INCALL_RECORD_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301497 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1498 .ignore_suspend = 1,
1499 },
1500 /* Incall Music BACK END DAI Link */
1501 {
1502 .name = LPASS_BE_VOICE_PLAYBACK_TX,
1503 .stream_name = "Voice Farend Playback",
1504 .cpu_dai_name = "msm-dai-q6-dev.32773",
1505 .platform_name = "msm-pcm-routing",
1506 .codec_name = "msm-stub-codec.1",
1507 .codec_dai_name = "msm-stub-rx",
1508 .no_pcm = 1,
1509 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301510 .id = MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301511 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1512 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301513 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301514 },
1515 /* Incall Music 2 BACK END DAI Link */
1516 {
1517 .name = LPASS_BE_VOICE2_PLAYBACK_TX,
1518 .stream_name = "Voice2 Farend Playback",
1519 .cpu_dai_name = "msm-dai-q6-dev.32770",
1520 .platform_name = "msm-pcm-routing",
1521 .codec_name = "msm-stub-codec.1",
1522 .codec_dai_name = "msm-stub-rx",
1523 .no_pcm = 1,
1524 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301525 .id = MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301526 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1527 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301528 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301529 },
1530 {
1531 .name = LPASS_BE_USB_AUDIO_RX,
1532 .stream_name = "USB Audio Playback",
1533 .cpu_dai_name = "msm-dai-q6-dev.28672",
1534 .platform_name = "msm-pcm-routing",
1535 .codec_name = "msm-stub-codec.1",
1536 .codec_dai_name = "msm-stub-rx",
1537 .no_pcm = 1,
1538 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301539 .id = MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301540 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1541 .ignore_pmdown_time = 1,
1542 .ignore_suspend = 1,
1543 },
1544 {
1545 .name = LPASS_BE_USB_AUDIO_TX,
1546 .stream_name = "USB Audio Capture",
1547 .cpu_dai_name = "msm-dai-q6-dev.28673",
1548 .platform_name = "msm-pcm-routing",
1549 .codec_name = "msm-stub-codec.1",
1550 .codec_dai_name = "msm-stub-tx",
1551 .no_pcm = 1,
1552 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301553 .id = MSM_BACKEND_DAI_USB_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301554 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1555 .ignore_suspend = 1,
1556 },
1557 {
1558 .name = LPASS_BE_PRI_TDM_RX_0,
1559 .stream_name = "Primary TDM0 Playback",
1560 .cpu_dai_name = "msm-dai-q6-tdm.36864",
1561 .platform_name = "msm-pcm-routing",
1562 .codec_name = "msm-stub-codec.1",
1563 .codec_dai_name = "msm-stub-rx",
1564 .no_pcm = 1,
1565 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301566 .id = MSM_BACKEND_DAI_PRI_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301567 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1568 .ops = &msm_tdm_be_ops,
1569 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301570 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301571 },
1572 {
1573 .name = LPASS_BE_PRI_TDM_TX_0,
1574 .stream_name = "Primary TDM0 Capture",
1575 .cpu_dai_name = "msm-dai-q6-tdm.36865",
1576 .platform_name = "msm-pcm-routing",
1577 .codec_name = "msm-stub-codec.1",
1578 .codec_dai_name = "msm-stub-tx",
1579 .no_pcm = 1,
1580 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301581 .id = MSM_BACKEND_DAI_PRI_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301582 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1583 .ops = &msm_tdm_be_ops,
1584 .ignore_suspend = 1,
1585 },
1586 {
1587 .name = LPASS_BE_SEC_TDM_RX_0,
1588 .stream_name = "Secondary TDM0 Playback",
1589 .cpu_dai_name = "msm-dai-q6-tdm.36880",
1590 .platform_name = "msm-pcm-routing",
1591 .codec_name = "msm-stub-codec.1",
1592 .codec_dai_name = "msm-stub-rx",
1593 .no_pcm = 1,
1594 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301595 .id = MSM_BACKEND_DAI_SEC_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301596 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1597 .ops = &msm_tdm_be_ops,
1598 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301599 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301600 },
1601 {
1602 .name = LPASS_BE_SEC_TDM_TX_0,
1603 .stream_name = "Secondary TDM0 Capture",
1604 .cpu_dai_name = "msm-dai-q6-tdm.36881",
1605 .platform_name = "msm-pcm-routing",
1606 .codec_name = "msm-stub-codec.1",
1607 .codec_dai_name = "msm-stub-tx",
1608 .no_pcm = 1,
1609 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301610 .id = MSM_BACKEND_DAI_SEC_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301611 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1612 .ops = &msm_tdm_be_ops,
1613 .ignore_suspend = 1,
1614 },
1615 {
1616 .name = LPASS_BE_TERT_TDM_RX_0,
1617 .stream_name = "Tertiary TDM0 Playback",
1618 .cpu_dai_name = "msm-dai-q6-tdm.36896",
1619 .platform_name = "msm-pcm-routing",
1620 .codec_name = "msm-stub-codec.1",
1621 .codec_dai_name = "msm-stub-rx",
1622 .no_pcm = 1,
1623 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301624 .id = MSM_BACKEND_DAI_TERT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301625 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1626 .ops = &msm_tdm_be_ops,
1627 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301628 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301629 },
1630 {
1631 .name = LPASS_BE_TERT_TDM_TX_0,
1632 .stream_name = "Tertiary TDM0 Capture",
1633 .cpu_dai_name = "msm-dai-q6-tdm.36897",
1634 .platform_name = "msm-pcm-routing",
1635 .codec_name = "msm-stub-codec.1",
1636 .codec_dai_name = "msm-stub-tx",
1637 .no_pcm = 1,
1638 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301639 .id = MSM_BACKEND_DAI_TERT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301640 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1641 .ops = &msm_tdm_be_ops,
1642 .ignore_suspend = 1,
1643 },
1644 {
1645 .name = LPASS_BE_QUAT_TDM_RX_0,
1646 .stream_name = "Quaternary TDM0 Playback",
1647 .cpu_dai_name = "msm-dai-q6-tdm.36912",
1648 .platform_name = "msm-pcm-routing",
1649 .codec_name = "msm-stub-codec.1",
1650 .codec_dai_name = "msm-stub-rx",
1651 .no_pcm = 1,
1652 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301653 .id = MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301654 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1655 .ops = &msm_tdm_be_ops,
1656 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301657 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301658 },
1659 {
1660 .name = LPASS_BE_QUAT_TDM_TX_0,
1661 .stream_name = "Quaternary TDM0 Capture",
1662 .cpu_dai_name = "msm-dai-q6-tdm.36913",
1663 .platform_name = "msm-pcm-routing",
1664 .codec_name = "msm-stub-codec.1",
1665 .codec_dai_name = "msm-stub-tx",
1666 .no_pcm = 1,
1667 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301668 .id = MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301669 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1670 .ops = &msm_tdm_be_ops,
1671 .ignore_suspend = 1,
1672 },
Rohit Kumard1754482017-09-10 22:57:39 +05301673 {
1674 .name = LPASS_BE_QUIN_TDM_RX_0,
1675 .stream_name = "Quinary TDM0 Playback",
Rohit kumar091ff792017-10-11 18:35:07 +05301676 .cpu_dai_name = "msm-dai-q6-tdm.36928",
Rohit Kumard1754482017-09-10 22:57:39 +05301677 .platform_name = "msm-pcm-routing",
1678 .codec_name = "msm-stub-codec.1",
1679 .codec_dai_name = "msm-stub-rx",
1680 .no_pcm = 1,
1681 .dpcm_playback = 1,
1682 .id = MSM_BACKEND_DAI_QUIN_TDM_RX_0,
1683 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1684 .ops = &msm_tdm_be_ops,
1685 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301686 .ignore_pmdown_time = 1,
Rohit Kumard1754482017-09-10 22:57:39 +05301687 },
1688 {
1689 .name = LPASS_BE_QUIN_TDM_TX_0,
1690 .stream_name = "Quinary TDM0 Capture",
Rohit kumar091ff792017-10-11 18:35:07 +05301691 .cpu_dai_name = "msm-dai-q6-tdm.36929",
Rohit Kumard1754482017-09-10 22:57:39 +05301692 .platform_name = "msm-pcm-routing",
1693 .codec_name = "msm-stub-codec.1",
1694 .codec_dai_name = "msm-stub-tx",
1695 .no_pcm = 1,
1696 .dpcm_capture = 1,
1697 .id = MSM_BACKEND_DAI_QUIN_TDM_TX_0,
1698 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1699 .ops = &msm_tdm_be_ops,
1700 .ignore_suspend = 1,
1701 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301702};
1703
1704static struct snd_soc_dai_link msm_mi2s_be_dai_links[] = {
1705 {
1706 .name = LPASS_BE_PRI_MI2S_RX,
1707 .stream_name = "Primary MI2S Playback",
1708 .cpu_dai_name = "msm-dai-q6-mi2s.0",
1709 .platform_name = "msm-pcm-routing",
1710 .codec_name = "msm-stub-codec.1",
1711 .codec_dai_name = "msm-stub-rx",
1712 .no_pcm = 1,
1713 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301714 .id = MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301715 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1716 .ops = &msm_mi2s_be_ops,
1717 .ignore_suspend = 1,
1718 .ignore_pmdown_time = 1,
1719 },
1720 {
1721 .name = LPASS_BE_PRI_MI2S_TX,
1722 .stream_name = "Primary MI2S Capture",
1723 .cpu_dai_name = "msm-dai-q6-mi2s.0",
1724 .platform_name = "msm-pcm-routing",
1725 .codec_name = "msm-stub-codec.1",
1726 .codec_dai_name = "msm-stub-tx",
1727 .no_pcm = 1,
1728 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301729 .id = MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301730 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1731 .ops = &msm_mi2s_be_ops,
1732 .ignore_suspend = 1,
1733 },
1734 {
1735 .name = LPASS_BE_SEC_MI2S_RX,
1736 .stream_name = "Secondary MI2S Playback",
1737 .cpu_dai_name = "msm-dai-q6-mi2s.1",
1738 .platform_name = "msm-pcm-routing",
1739 .codec_name = "msm-stub-codec.1",
1740 .codec_dai_name = "msm-stub-rx",
1741 .no_pcm = 1,
1742 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301743 .id = MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301744 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1745 .ops = &msm_mi2s_be_ops,
1746 .ignore_suspend = 1,
1747 .ignore_pmdown_time = 1,
1748 },
1749 {
1750 .name = LPASS_BE_SEC_MI2S_TX,
1751 .stream_name = "Secondary MI2S Capture",
1752 .cpu_dai_name = "msm-dai-q6-mi2s.1",
1753 .platform_name = "msm-pcm-routing",
1754 .codec_name = "msm-stub-codec.1",
1755 .codec_dai_name = "msm-stub-tx",
1756 .no_pcm = 1,
1757 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301758 .id = MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301759 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1760 .ops = &msm_mi2s_be_ops,
1761 .ignore_suspend = 1,
1762 },
1763 {
1764 .name = LPASS_BE_TERT_MI2S_RX,
1765 .stream_name = "Tertiary MI2S Playback",
1766 .cpu_dai_name = "msm-dai-q6-mi2s.2",
1767 .platform_name = "msm-pcm-routing",
1768 .codec_name = "msm-stub-codec.1",
1769 .codec_dai_name = "msm-stub-rx",
1770 .no_pcm = 1,
1771 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301772 .id = MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301773 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1774 .ops = &msm_mi2s_be_ops,
1775 .ignore_suspend = 1,
1776 .ignore_pmdown_time = 1,
1777 },
1778 {
1779 .name = LPASS_BE_TERT_MI2S_TX,
1780 .stream_name = "Tertiary MI2S Capture",
1781 .cpu_dai_name = "msm-dai-q6-mi2s.2",
1782 .platform_name = "msm-pcm-routing",
1783 .codec_name = "msm-stub-codec.1",
1784 .codec_dai_name = "msm-stub-tx",
1785 .no_pcm = 1,
1786 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301787 .id = MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301788 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1789 .ops = &msm_mi2s_be_ops,
1790 .ignore_suspend = 1,
1791 },
1792 {
1793 .name = LPASS_BE_QUAT_MI2S_RX,
1794 .stream_name = "Quaternary MI2S Playback",
1795 .cpu_dai_name = "msm-dai-q6-mi2s.3",
1796 .platform_name = "msm-pcm-routing",
1797 .codec_name = "msm-stub-codec.1",
1798 .codec_dai_name = "msm-stub-rx",
1799 .no_pcm = 1,
1800 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301801 .id = MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301802 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1803 .ops = &msm_mi2s_be_ops,
1804 .ignore_suspend = 1,
1805 .ignore_pmdown_time = 1,
1806 },
1807 {
1808 .name = LPASS_BE_QUAT_MI2S_TX,
1809 .stream_name = "Quaternary MI2S Capture",
1810 .cpu_dai_name = "msm-dai-q6-mi2s.3",
1811 .platform_name = "msm-pcm-routing",
1812 .codec_name = "msm-stub-codec.1",
1813 .codec_dai_name = "msm-stub-tx",
1814 .no_pcm = 1,
1815 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301816 .id = MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301817 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1818 .ops = &msm_mi2s_be_ops,
1819 .ignore_suspend = 1,
1820 },
Rohit Kumard1754482017-09-10 22:57:39 +05301821 {
1822 .name = LPASS_BE_QUIN_MI2S_RX,
1823 .stream_name = "Quinary MI2S Playback",
Rohit kumar20df5452017-10-16 15:35:56 +05301824 .cpu_dai_name = "msm-dai-q6-mi2s.4",
Rohit Kumard1754482017-09-10 22:57:39 +05301825 .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,
1830 .id = MSM_BACKEND_DAI_QUINARY_MI2S_RX,
1831 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1832 .ops = &msm_mi2s_be_ops,
1833 .ignore_suspend = 1,
1834 .ignore_pmdown_time = 1,
1835 },
1836 {
1837 .name = LPASS_BE_QUIN_MI2S_TX,
1838 .stream_name = "Quinary MI2S Capture",
Rohit kumar20df5452017-10-16 15:35:56 +05301839 .cpu_dai_name = "msm-dai-q6-mi2s.4",
Rohit Kumard1754482017-09-10 22:57:39 +05301840 .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,
1845 .id = MSM_BACKEND_DAI_QUINARY_MI2S_TX,
1846 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1847 .ops = &msm_mi2s_be_ops,
1848 .ignore_suspend = 1,
1849 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301850};
1851
1852static struct snd_soc_dai_link msm_auxpcm_be_dai_links[] = {
1853 /* Primary AUX PCM Backend DAI Links */
1854 {
1855 .name = LPASS_BE_AUXPCM_RX,
1856 .stream_name = "AUX PCM Playback",
1857 .cpu_dai_name = "msm-dai-q6-auxpcm.1",
1858 .platform_name = "msm-pcm-routing",
1859 .codec_name = "msm-stub-codec.1",
1860 .codec_dai_name = "msm-stub-rx",
1861 .no_pcm = 1,
1862 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301863 .id = MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301864 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1865 .ignore_pmdown_time = 1,
1866 .ignore_suspend = 1,
1867 .ops = &msm_aux_pcm_be_ops,
1868 },
1869 {
1870 .name = LPASS_BE_AUXPCM_TX,
1871 .stream_name = "AUX PCM Capture",
1872 .cpu_dai_name = "msm-dai-q6-auxpcm.1",
1873 .platform_name = "msm-pcm-routing",
1874 .codec_name = "msm-stub-codec.1",
1875 .codec_dai_name = "msm-stub-tx",
1876 .no_pcm = 1,
1877 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301878 .id = MSM_BACKEND_DAI_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301879 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301880 .ignore_suspend = 1,
1881 .ops = &msm_aux_pcm_be_ops,
1882 },
1883 /* Secondary AUX PCM Backend DAI Links */
1884 {
1885 .name = LPASS_BE_SEC_AUXPCM_RX,
1886 .stream_name = "Sec AUX PCM Playback",
1887 .cpu_dai_name = "msm-dai-q6-auxpcm.2",
1888 .platform_name = "msm-pcm-routing",
1889 .codec_name = "msm-stub-codec.1",
1890 .codec_dai_name = "msm-stub-rx",
1891 .no_pcm = 1,
1892 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301893 .id = MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301894 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1895 .ignore_pmdown_time = 1,
1896 .ignore_suspend = 1,
1897 .ops = &msm_aux_pcm_be_ops,
1898 },
1899 {
1900 .name = LPASS_BE_SEC_AUXPCM_TX,
1901 .stream_name = "Sec AUX PCM Capture",
1902 .cpu_dai_name = "msm-dai-q6-auxpcm.2",
1903 .platform_name = "msm-pcm-routing",
1904 .codec_name = "msm-stub-codec.1",
1905 .codec_dai_name = "msm-stub-tx",
1906 .no_pcm = 1,
1907 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301908 .id = MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301909 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1910 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301911 .ops = &msm_aux_pcm_be_ops,
1912 },
1913 /* Tertiary AUX PCM Backend DAI Links */
1914 {
1915 .name = LPASS_BE_TERT_AUXPCM_RX,
1916 .stream_name = "Tert AUX PCM Playback",
1917 .cpu_dai_name = "msm-dai-q6-auxpcm.3",
1918 .platform_name = "msm-pcm-routing",
1919 .codec_name = "msm-stub-codec.1",
1920 .codec_dai_name = "msm-stub-rx",
1921 .no_pcm = 1,
1922 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301923 .id = MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301924 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1925 .ignore_pmdown_time = 1,
1926 .ignore_suspend = 1,
1927 .ops = &msm_aux_pcm_be_ops,
1928 },
1929 {
1930 .name = LPASS_BE_TERT_AUXPCM_TX,
1931 .stream_name = "Tert AUX PCM Capture",
1932 .cpu_dai_name = "msm-dai-q6-auxpcm.3",
1933 .platform_name = "msm-pcm-routing",
1934 .codec_name = "msm-stub-codec.1",
1935 .codec_dai_name = "msm-stub-tx",
1936 .no_pcm = 1,
1937 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301938 .id = MSM_BACKEND_DAI_TERT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301939 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1940 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301941 .ops = &msm_aux_pcm_be_ops,
1942 },
1943 /* Quaternary AUX PCM Backend DAI Links */
1944 {
1945 .name = LPASS_BE_QUAT_AUXPCM_RX,
1946 .stream_name = "Quat AUX PCM Playback",
1947 .cpu_dai_name = "msm-dai-q6-auxpcm.4",
1948 .platform_name = "msm-pcm-routing",
1949 .codec_name = "msm-stub-codec.1",
1950 .codec_dai_name = "msm-stub-rx",
1951 .no_pcm = 1,
1952 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301953 .id = MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301954 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1955 .ignore_pmdown_time = 1,
1956 .ignore_suspend = 1,
1957 .ops = &msm_aux_pcm_be_ops,
1958 },
1959 {
1960 .name = LPASS_BE_QUAT_AUXPCM_TX,
1961 .stream_name = "Quat AUX PCM Capture",
1962 .cpu_dai_name = "msm-dai-q6-auxpcm.4",
1963 .platform_name = "msm-pcm-routing",
1964 .codec_name = "msm-stub-codec.1",
1965 .codec_dai_name = "msm-stub-tx",
1966 .no_pcm = 1,
1967 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301968 .id = MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301969 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1970 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301971 .ops = &msm_aux_pcm_be_ops,
1972 },
Rohit Kumard1754482017-09-10 22:57:39 +05301973 /* Quinary AUX PCM Backend DAI Links */
1974 {
1975 .name = LPASS_BE_QUIN_AUXPCM_RX,
1976 .stream_name = "Quin AUX PCM Playback",
1977 .cpu_dai_name = "msm-dai-q6-auxpcm.5",
1978 .platform_name = "msm-pcm-routing",
1979 .codec_name = "msm-stub-codec.1",
1980 .codec_dai_name = "msm-stub-rx",
1981 .no_pcm = 1,
1982 .dpcm_playback = 1,
1983 .id = MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
1984 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1985 .ignore_pmdown_time = 1,
1986 .ignore_suspend = 1,
1987 .ops = &msm_aux_pcm_be_ops,
1988 },
1989 {
1990 .name = LPASS_BE_QUIN_AUXPCM_TX,
1991 .stream_name = "Quin AUX PCM Capture",
1992 .cpu_dai_name = "msm-dai-q6-auxpcm.5",
1993 .platform_name = "msm-pcm-routing",
1994 .codec_name = "msm-stub-codec.1",
1995 .codec_dai_name = "msm-stub-tx",
1996 .no_pcm = 1,
1997 .dpcm_capture = 1,
1998 .id = MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
1999 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
2000 .ignore_suspend = 1,
Rohit Kumard1754482017-09-10 22:57:39 +05302001 .ops = &msm_aux_pcm_be_ops,
2002 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302003};
2004
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05302005static struct snd_soc_dai_link msm_afe_rxtx_lb_be_dai_link[] = {
2006 {
2007 .name = LPASS_BE_AFE_LOOPBACK_TX,
2008 .stream_name = "AFE Loopback Capture",
2009 .cpu_dai_name = "msm-dai-q6-dev.24577",
2010 .platform_name = "msm-pcm-routing",
2011 .codec_name = "msm-stub-codec.1",
2012 .codec_dai_name = "msm-stub-tx",
2013 .no_pcm = 1,
2014 .dpcm_capture = 1,
2015 .id = MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
2016 .ignore_pmdown_time = 1,
2017 .ignore_suspend = 1,
2018 },
2019};
2020
2021
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302022static struct snd_soc_dai_link msm_wcn_be_dai_links[] = {
2023 {
2024 .name = LPASS_BE_SLIMBUS_7_RX,
2025 .stream_name = "Slimbus7 Playback",
2026 .cpu_dai_name = "msm-dai-q6-dev.16398",
2027 .platform_name = "msm-pcm-routing",
2028 .codec_name = "btfmslim_slave",
2029 /* BT codec driver determines capabilities based on
2030 * dai name, bt codecdai name should always contains
2031 * supported usecase information
2032 */
2033 .codec_dai_name = "btfm_bt_sco_a2dp_slim_rx",
2034 .no_pcm = 1,
2035 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05302036 .id = MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302037 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
2038 .ops = &msm_wcn_ops,
2039 /* dai link has playback support */
2040 .ignore_pmdown_time = 1,
2041 .ignore_suspend = 1,
2042 },
2043 {
2044 .name = LPASS_BE_SLIMBUS_7_TX,
2045 .stream_name = "Slimbus7 Capture",
2046 .cpu_dai_name = "msm-dai-q6-dev.16399",
2047 .platform_name = "msm-pcm-routing",
2048 .codec_name = "btfmslim_slave",
2049 .codec_dai_name = "btfm_bt_sco_slim_tx",
2050 .no_pcm = 1,
2051 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05302052 .id = MSM_BACKEND_DAI_SLIMBUS_7_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302053 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
2054 .ops = &msm_wcn_ops,
2055 .ignore_suspend = 1,
2056 },
2057 {
2058 .name = LPASS_BE_SLIMBUS_8_TX,
2059 .stream_name = "Slimbus8 Capture",
2060 .cpu_dai_name = "msm-dai-q6-dev.16401",
2061 .platform_name = "msm-pcm-routing",
2062 .codec_name = "btfmslim_slave",
2063 .codec_dai_name = "btfm_fm_slim_tx",
2064 .no_pcm = 1,
2065 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05302066 .id = MSM_BACKEND_DAI_SLIMBUS_8_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302067 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
2068 .init = &msm_wcn_init,
2069 .ops = &msm_wcn_ops,
2070 .ignore_suspend = 1,
2071 },
2072};
2073
2074static struct snd_soc_dai_link ext_disp_be_dai_link[] = {
2075 /* DISP PORT BACK END DAI Link */
2076 {
2077 .name = LPASS_BE_DISPLAY_PORT,
2078 .stream_name = "Display Port Playback",
2079 .cpu_dai_name = "msm-dai-q6-dp.24608",
2080 .platform_name = "msm-pcm-routing",
2081 .codec_name = "msm-ext-disp-audio-codec-rx",
2082 .codec_dai_name = "msm_dp_audio_codec_rx_dai",
2083 .no_pcm = 1,
2084 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05302085 .id = MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302086 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
2087 .ignore_pmdown_time = 1,
2088 .ignore_suspend = 1,
2089 },
2090};
2091
2092static struct snd_soc_dai_link msm_ext_tasha_dai_links[
2093ARRAY_SIZE(msm_ext_common_fe_dai) +
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302094ARRAY_SIZE(msm_ext_compress_capture_dai) +
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302095ARRAY_SIZE(msm_ext_tasha_fe_dai) +
2096ARRAY_SIZE(msm_ext_common_be_dai) +
2097ARRAY_SIZE(msm_ext_tasha_be_dai) +
2098ARRAY_SIZE(msm_mi2s_be_dai_links) +
2099ARRAY_SIZE(msm_auxpcm_be_dai_links) +
2100ARRAY_SIZE(msm_wcn_be_dai_links) +
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05302101ARRAY_SIZE(ext_disp_be_dai_link) +
2102ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link)];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302103
2104static struct snd_soc_dai_link msm_ext_tavil_dai_links[
2105ARRAY_SIZE(msm_ext_common_fe_dai) +
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302106ARRAY_SIZE(msm_ext_compress_capture_dai) +
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302107ARRAY_SIZE(msm_ext_tavil_fe_dai) +
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302108ARRAY_SIZE(msm_ext_common_be_dai) +
2109ARRAY_SIZE(msm_ext_tavil_be_dai) +
2110ARRAY_SIZE(msm_mi2s_be_dai_links) +
2111ARRAY_SIZE(msm_auxpcm_be_dai_links) +
2112ARRAY_SIZE(msm_wcn_be_dai_links) +
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05302113ARRAY_SIZE(ext_disp_be_dai_link) +
2114ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link)];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302115
2116/**
2117 * populate_snd_card_dailinks - prepares dailink array and initializes card.
2118 *
2119 * @dev: device handle
2120 *
2121 * Returns card on success or NULL on failure.
2122 */
2123struct snd_soc_card *populate_snd_card_dailinks(struct device *dev,
2124 int snd_card_val)
2125{
2126 struct snd_soc_card *card;
2127 struct snd_soc_dai_link *msm_ext_dai_links = NULL;
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302128 int ret, len1, len2, len3, len4, len5;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302129 enum codec_variant codec_ver = 0;
2130
2131 if (snd_card_val == EXT_SND_CARD_TASHA) {
2132 card = &snd_soc_card_msm_card_tasha;
2133 } else if (snd_card_val == EXT_SND_CARD_TAVIL) {
2134 card = &snd_soc_card_msm_card_tavil;
2135 } else {
2136 dev_err(dev, "%s: failing as no matching card name\n",
2137 __func__);
2138 return NULL;
2139 }
2140
2141 card->dev = dev;
2142 ret = snd_soc_of_parse_card_name(card, "qcom,model");
2143 if (ret) {
2144 dev_err(dev, "%s: parse card name failed, err:%d\n",
2145 __func__, ret);
2146 return NULL;
2147 }
2148
2149 if (strnstr(card->name, "tasha", strlen(card->name))) {
2150 codec_ver = tasha_codec_ver();
Rohit kumarf700c862017-12-15 15:33:57 +05302151 if (codec_ver == WCD9326) {
2152 card->name = "sdm670-tashalite-snd-card";
2153 } else if (codec_ver == WCD9XXX) {
2154 dev_err(dev, "%s: Invalid codec version %d\n",
2155 __func__, codec_ver);
2156 return NULL;
2157 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302158
2159 len1 = ARRAY_SIZE(msm_ext_common_fe_dai);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302160 len2 = len1 + ARRAY_SIZE(msm_ext_compress_capture_dai);
2161 len3 = len2 + ARRAY_SIZE(msm_ext_tasha_fe_dai);
2162 len4 = len3 + ARRAY_SIZE(msm_ext_common_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302163 memcpy(msm_ext_tasha_dai_links, msm_ext_common_fe_dai,
2164 sizeof(msm_ext_common_fe_dai));
2165 memcpy(msm_ext_tasha_dai_links + len1,
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302166 msm_ext_compress_capture_dai,
2167 sizeof(msm_ext_compress_capture_dai));
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302168 memcpy(msm_ext_tasha_dai_links + len2,
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302169 msm_ext_tasha_fe_dai, sizeof(msm_ext_tasha_fe_dai));
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302170 memcpy(msm_ext_tasha_dai_links + len3,
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302171 msm_ext_common_be_dai, sizeof(msm_ext_common_be_dai));
2172 memcpy(msm_ext_tasha_dai_links + len4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302173 msm_ext_tasha_be_dai, sizeof(msm_ext_tasha_be_dai));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302174 len5 = len4 + ARRAY_SIZE(msm_ext_tasha_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302175 if (of_property_read_bool(dev->of_node,
2176 "qcom,mi2s-audio-intf")) {
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302177 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302178 msm_mi2s_be_dai_links,
2179 sizeof(msm_mi2s_be_dai_links));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302180 len5 += ARRAY_SIZE(msm_mi2s_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302181 }
2182 if (of_property_read_bool(dev->of_node,
2183 "qcom,auxpcm-audio-intf")) {
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302184 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302185 msm_auxpcm_be_dai_links,
2186 sizeof(msm_auxpcm_be_dai_links));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302187 len5 += ARRAY_SIZE(msm_auxpcm_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302188 }
2189 if (of_property_read_bool(dev->of_node, "qcom,wcn-btfm")) {
2190 dev_dbg(dev, "%s(): WCN BTFM support present\n",
2191 __func__);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302192 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302193 msm_wcn_be_dai_links,
2194 sizeof(msm_wcn_be_dai_links));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302195 len5 += ARRAY_SIZE(msm_wcn_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302196 }
2197 if (of_property_read_bool(dev->of_node,
2198 "qcom,ext-disp-audio-rx")) {
2199 dev_dbg(dev, "%s(): ext disp audio support present\n",
2200 __func__);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302201 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302202 ext_disp_be_dai_link,
2203 sizeof(ext_disp_be_dai_link));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302204 len5 += ARRAY_SIZE(ext_disp_be_dai_link);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302205 }
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05302206 if (of_property_read_bool(dev->of_node, "qcom,afe-rxtx-lb")) {
2207 dev_dbg(dev, "%s(): AFE RX to TX loopback supported\n",
2208 __func__);
2209 memcpy(msm_ext_tasha_dai_links + len5,
2210 msm_afe_rxtx_lb_be_dai_link,
2211 sizeof(msm_afe_rxtx_lb_be_dai_link));
2212 len5 += ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link);
2213 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302214 msm_ext_dai_links = msm_ext_tasha_dai_links;
2215 } else if (strnstr(card->name, "tavil", strlen(card->name))) {
2216 len1 = ARRAY_SIZE(msm_ext_common_fe_dai);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302217 len2 = len1 + ARRAY_SIZE(msm_ext_compress_capture_dai);
2218 len3 = len2 + ARRAY_SIZE(msm_ext_tavil_fe_dai);
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302219 len4 = len3 + ARRAY_SIZE(msm_ext_common_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302220 memcpy(msm_ext_tavil_dai_links, msm_ext_common_fe_dai,
2221 sizeof(msm_ext_common_fe_dai));
2222 memcpy(msm_ext_tavil_dai_links + len1,
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302223 msm_ext_compress_capture_dai,
2224 sizeof(msm_ext_compress_capture_dai));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302225 memcpy(msm_ext_tavil_dai_links + len2,
2226 msm_ext_tavil_fe_dai, sizeof(msm_ext_tavil_fe_dai));
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302227 memcpy(msm_ext_tavil_dai_links + len3,
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302228 msm_ext_common_be_dai, sizeof(msm_ext_common_be_dai));
2229 memcpy(msm_ext_tavil_dai_links + len4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302230 msm_ext_tavil_be_dai, sizeof(msm_ext_tavil_be_dai));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302231 len5 = len4 + ARRAY_SIZE(msm_ext_tavil_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302232 if (of_property_read_bool(dev->of_node,
2233 "qcom,mi2s-audio-intf")) {
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302234 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302235 msm_mi2s_be_dai_links,
2236 sizeof(msm_mi2s_be_dai_links));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302237 len5 += ARRAY_SIZE(msm_mi2s_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302238 }
2239 if (of_property_read_bool(dev->of_node,
2240 "qcom,auxpcm-audio-intf")) {
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302241 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302242 msm_auxpcm_be_dai_links,
2243 sizeof(msm_auxpcm_be_dai_links));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302244 len5 += ARRAY_SIZE(msm_auxpcm_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302245 }
2246 if (of_property_read_bool(dev->of_node, "qcom,wcn-btfm")) {
2247 dev_dbg(dev, "%s(): WCN BTFM support present\n",
2248 __func__);
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302249 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302250 msm_wcn_be_dai_links,
2251 sizeof(msm_wcn_be_dai_links));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302252 len5 += ARRAY_SIZE(msm_wcn_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302253 }
2254 if (of_property_read_bool(dev->of_node,
2255 "qcom,ext-disp-audio-rx")) {
2256 dev_dbg(dev, "%s(): ext disp audio support present\n",
2257 __func__);
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302258 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302259 ext_disp_be_dai_link,
2260 sizeof(ext_disp_be_dai_link));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302261 len5 += ARRAY_SIZE(ext_disp_be_dai_link);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302262 }
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05302263 if (of_property_read_bool(dev->of_node, "qcom,afe-rxtx-lb")) {
2264 dev_dbg(dev, "%s(): AFE RX to TX loopback supported\n",
2265 __func__);
2266 memcpy(msm_ext_tavil_dai_links + len5,
2267 msm_afe_rxtx_lb_be_dai_link,
2268 sizeof(msm_afe_rxtx_lb_be_dai_link));
2269 len5 += ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link);
2270 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302271 msm_ext_dai_links = msm_ext_tavil_dai_links;
2272 } else {
2273 dev_err(dev, "%s: failing as no matching card name\n",
2274 __func__);
2275 return NULL;
2276 }
2277 card->dai_link = msm_ext_dai_links;
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302278 card->num_links = len5;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302279
2280 return card;
2281}
2282EXPORT_SYMBOL(populate_snd_card_dailinks);