blob: 65d9161b7f1dc6c69a481a1f01fd0be825b2ed01 [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
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +053066static struct snd_soc_ops msm_tdm_be_ops = {
67 .startup = msm_tdm_snd_startup,
68 .shutdown = msm_tdm_snd_shutdown,
69 .hw_params = msm_tdm_snd_hw_params,
70};
71
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053072static int msm_wcn_init(struct snd_soc_pcm_runtime *rtd)
73{
74 unsigned int rx_ch[WCN_CDC_SLIM_RX_CH_MAX] = {157, 158};
75 unsigned int tx_ch[WCN_CDC_SLIM_TX_CH_MAX] = {159, 160, 161};
76 struct snd_soc_dai *codec_dai = rtd->codec_dai;
77
78 return snd_soc_dai_set_channel_map(codec_dai, ARRAY_SIZE(tx_ch),
79 tx_ch, ARRAY_SIZE(rx_ch), rx_ch);
80}
81
82static int msm_wcn_hw_params(struct snd_pcm_substream *substream,
83 struct snd_pcm_hw_params *params)
84{
85 struct snd_soc_pcm_runtime *rtd = substream->private_data;
86 struct snd_soc_dai *codec_dai = rtd->codec_dai;
87 struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
88 struct snd_soc_dai_link *dai_link = rtd->dai_link;
89 u32 rx_ch[WCN_CDC_SLIM_RX_CH_MAX], tx_ch[WCN_CDC_SLIM_TX_CH_MAX];
90 u32 rx_ch_cnt = 0, tx_ch_cnt = 0;
91 int ret;
92
93 dev_dbg(rtd->dev, "%s: %s_tx_dai_id_%d\n", __func__,
94 codec_dai->name, codec_dai->id);
95 ret = snd_soc_dai_get_channel_map(codec_dai,
96 &tx_ch_cnt, tx_ch, &rx_ch_cnt, rx_ch);
97 if (ret) {
98 dev_err(rtd->dev,
99 "%s: failed to get BTFM codec chan map\n, err:%d\n",
100 __func__, ret);
101 goto exit;
102 }
103
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530104 dev_dbg(rtd->dev, "%s: tx_ch_cnt(%d) id %d\n",
105 __func__, tx_ch_cnt, dai_link->id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530106
107 ret = snd_soc_dai_set_channel_map(cpu_dai,
108 tx_ch_cnt, tx_ch, rx_ch_cnt, rx_ch);
109 if (ret)
110 dev_err(rtd->dev, "%s: failed to set cpu chan map, err:%d\n",
111 __func__, ret);
112
113exit:
114 return ret;
115}
116
117static struct snd_soc_ops msm_wcn_ops = {
118 .hw_params = msm_wcn_hw_params,
119};
120
Revathi Uddaraju30feb0d2017-11-21 15:30:19 +0530121static int msm_fe_qos_prepare(struct snd_pcm_substream *substream)
122{
123 cpumask_t mask;
124
125 if (pm_qos_request_active(&substream->latency_pm_qos_req))
126 pm_qos_remove_request(&substream->latency_pm_qos_req);
127
128 cpumask_clear(&mask);
129 cpumask_set_cpu(1, &mask); /* affine to core 1 */
130 cpumask_set_cpu(2, &mask); /* affine to core 2 */
131 cpumask_copy(&substream->latency_pm_qos_req.cpus_affine, &mask);
132
133 substream->latency_pm_qos_req.type = PM_QOS_REQ_AFFINE_CORES;
134
135 pm_qos_add_request(&substream->latency_pm_qos_req,
136 PM_QOS_CPU_DMA_LATENCY,
137 MSM_LL_QOS_VALUE);
138 return 0;
139}
140
141static struct snd_soc_ops msm_fe_qos_ops = {
142 .prepare = msm_fe_qos_prepare,
143};
144
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530145static struct snd_soc_dai_link msm_ext_tasha_fe_dai[] = {
146 /* tasha_vifeedback for speaker protection */
147 {
148 .name = LPASS_BE_SLIMBUS_4_TX,
149 .stream_name = "Slimbus4 Capture",
150 .cpu_dai_name = "msm-dai-q6-dev.16393",
151 .platform_name = "msm-pcm-hostless",
152 .codec_name = "tasha_codec",
153 .codec_dai_name = "tasha_vifeedback",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530154 .id = MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530155 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
156 .ops = &msm_ext_slimbus_be_ops,
157 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
158 .ignore_suspend = 1,
159 },
160 /* Ultrasound RX DAI Link */
161 {
162 .name = "SLIMBUS_2 Hostless Playback",
163 .stream_name = "SLIMBUS_2 Hostless Playback",
164 .cpu_dai_name = "msm-dai-q6-dev.16388",
165 .platform_name = "msm-pcm-hostless",
166 .codec_name = "tasha_codec",
167 .codec_dai_name = "tasha_rx2",
168 .ignore_suspend = 1,
169 .dpcm_playback = 1,
170 .dpcm_capture = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +0530171 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530172 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
173 .ops = &msm_ext_slimbus_2_be_ops,
174 },
175 /* Ultrasound TX DAI Link */
176 {
177 .name = "SLIMBUS_2 Hostless Capture",
178 .stream_name = "SLIMBUS_2 Hostless Capture",
179 .cpu_dai_name = "msm-dai-q6-dev.16389",
180 .platform_name = "msm-pcm-hostless",
181 .codec_name = "tasha_codec",
182 .codec_dai_name = "tasha_tx2",
183 .ignore_suspend = 1,
184 .dpcm_capture = 1,
185 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
186 .ops = &msm_ext_slimbus_2_be_ops,
187 },
188 /* CPE LSM direct dai-link */
189 {
190 .name = "CPE Listen service",
191 .stream_name = "CPE Listen Audio Service",
192 .cpu_dai_name = "msm-dai-slim",
193 .platform_name = "msm-cpe-lsm",
194 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
195 SND_SOC_DPCM_TRIGGER_POST},
196 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
197 .ignore_suspend = 1,
198 .dpcm_capture = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530199 .codec_dai_name = "tasha_mad1",
200 .codec_name = "tasha_codec",
201 .ops = &msm_ext_cpe_ops,
202 },
203 {
204 .name = "SLIMBUS_6 Hostless Playback",
205 .stream_name = "SLIMBUS_6 Hostless",
206 .cpu_dai_name = "SLIMBUS6_HOSTLESS",
207 .platform_name = "msm-pcm-hostless",
208 .dynamic = 1,
209 .dpcm_playback = 1,
210 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
211 SND_SOC_DPCM_TRIGGER_POST},
212 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
213 .ignore_suspend = 1,
214 /* this dailink has playback support */
215 .ignore_pmdown_time = 1,
216 .codec_dai_name = "snd-soc-dummy-dai",
217 .codec_name = "snd-soc-dummy",
218 },
219 /* CPE LSM EC PP direct dai-link */
220 {
221 .name = "CPE Listen service ECPP",
222 .stream_name = "CPE Listen Audio Service ECPP",
223 .cpu_dai_name = "CPE_LSM_NOHOST",
224 .platform_name = "msm-cpe-lsm.3",
225 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
226 SND_SOC_DPCM_TRIGGER_POST},
227 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
228 .ignore_suspend = 1,
229 .ignore_pmdown_time = 1,
230 .codec_dai_name = "tasha_cpe",
231 .codec_name = "tasha_codec",
232 },
233};
234
235static struct snd_soc_dai_link msm_ext_tavil_fe_dai[] = {
236 {
237 .name = LPASS_BE_SLIMBUS_4_TX,
238 .stream_name = "Slimbus4 Capture",
239 .cpu_dai_name = "msm-dai-q6-dev.16393",
240 .platform_name = "msm-pcm-hostless",
241 .codec_name = "tavil_codec",
242 .codec_dai_name = "tavil_vifeedback",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530243 .id = MSM_BACKEND_DAI_SLIMBUS_4_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530244 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
245 .ops = &msm_ext_slimbus_be_ops,
246 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
247 .ignore_suspend = 1,
248 },
249 /* Ultrasound RX DAI Link */
250 {
251 .name = "SLIMBUS_2 Hostless Playback",
252 .stream_name = "SLIMBUS_2 Hostless Playback",
253 .cpu_dai_name = "msm-dai-q6-dev.16388",
254 .platform_name = "msm-pcm-hostless",
255 .codec_name = "tavil_codec",
256 .codec_dai_name = "tavil_rx2",
257 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +0530258 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530259 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
260 .ops = &msm_ext_slimbus_2_be_ops,
261 },
262 /* Ultrasound TX DAI Link */
263 {
264 .name = "SLIMBUS_2 Hostless Capture",
265 .stream_name = "SLIMBUS_2 Hostless Capture",
266 .cpu_dai_name = "msm-dai-q6-dev.16389",
267 .platform_name = "msm-pcm-hostless",
268 .codec_name = "tavil_codec",
269 .codec_dai_name = "tavil_tx2",
270 .ignore_suspend = 1,
271 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
272 .ops = &msm_ext_slimbus_2_be_ops,
273 },
274};
275
276static struct snd_soc_dai_link msm_ext_tasha_be_dai[] = {
277 /* Backend DAI Links */
278 {
279 .name = LPASS_BE_SLIMBUS_0_RX,
280 .stream_name = "Slimbus Playback",
281 .cpu_dai_name = "msm-dai-q6-dev.16384",
282 .platform_name = "msm-pcm-routing",
283 .codec_name = "tasha_codec",
284 .codec_dai_name = "tasha_mix_rx1",
285 .no_pcm = 1,
286 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530287 .id = MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530288 .init = &msm_audrx_init,
289 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
290 /* this dainlink has playback support */
291 .ignore_pmdown_time = 1,
292 .ignore_suspend = 1,
293 .ops = &msm_ext_slimbus_be_ops,
294 },
295 {
296 .name = LPASS_BE_SLIMBUS_0_TX,
297 .stream_name = "Slimbus Capture",
298 .cpu_dai_name = "msm-dai-q6-dev.16385",
299 .platform_name = "msm-pcm-routing",
300 .codec_name = "tasha_codec",
301 .codec_dai_name = "tasha_tx1",
302 .no_pcm = 1,
303 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530304 .id = MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530305 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
306 .ignore_suspend = 1,
307 .ops = &msm_ext_slimbus_be_ops,
308 },
309 {
310 .name = LPASS_BE_SLIMBUS_1_RX,
311 .stream_name = "Slimbus1 Playback",
312 .cpu_dai_name = "msm-dai-q6-dev.16386",
313 .platform_name = "msm-pcm-routing",
314 .codec_name = "tasha_codec",
315 .codec_dai_name = "tasha_mix_rx1",
316 .no_pcm = 1,
317 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530318 .id = MSM_BACKEND_DAI_SLIMBUS_1_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530319 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
320 .ops = &msm_ext_slimbus_be_ops,
321 /* dai link has playback support */
322 .ignore_pmdown_time = 1,
323 .ignore_suspend = 1,
324 },
325 {
326 .name = LPASS_BE_SLIMBUS_1_TX,
327 .stream_name = "Slimbus1 Capture",
328 .cpu_dai_name = "msm-dai-q6-dev.16387",
329 .platform_name = "msm-pcm-routing",
330 .codec_name = "tasha_codec",
331 .codec_dai_name = "tasha_tx3",
332 .no_pcm = 1,
333 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530334 .id = MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530335 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
336 .ops = &msm_ext_slimbus_be_ops,
337 .ignore_suspend = 1,
338 },
339 {
340 .name = LPASS_BE_SLIMBUS_3_RX,
341 .stream_name = "Slimbus3 Playback",
342 .cpu_dai_name = "msm-dai-q6-dev.16390",
343 .platform_name = "msm-pcm-routing",
344 .codec_name = "tasha_codec",
345 .codec_dai_name = "tasha_mix_rx1",
346 .no_pcm = 1,
347 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530348 .id = MSM_BACKEND_DAI_SLIMBUS_3_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530349 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
350 .ops = &msm_ext_slimbus_be_ops,
351 /* dai link has playback support */
352 .ignore_pmdown_time = 1,
353 .ignore_suspend = 1,
354 },
355 {
356 .name = LPASS_BE_SLIMBUS_3_TX,
357 .stream_name = "Slimbus3 Capture",
358 .cpu_dai_name = "msm-dai-q6-dev.16391",
359 .platform_name = "msm-pcm-routing",
360 .codec_name = "tasha_codec",
361 .codec_dai_name = "tasha_tx1",
362 .no_pcm = 1,
363 .dpcm_capture = 1,
364 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530365 .id = MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530366 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
367 .ops = &msm_ext_slimbus_be_ops,
368 .ignore_suspend = 1,
369 },
370 {
371 .name = LPASS_BE_SLIMBUS_4_RX,
372 .stream_name = "Slimbus4 Playback",
373 .cpu_dai_name = "msm-dai-q6-dev.16392",
374 .platform_name = "msm-pcm-routing",
375 .codec_name = "tasha_codec",
376 .codec_dai_name = "tasha_mix_rx1",
377 .no_pcm = 1,
378 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530379 .id = MSM_BACKEND_DAI_SLIMBUS_4_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530380 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
381 .ops = &msm_ext_slimbus_be_ops,
382 /* dai link has playback support */
383 .ignore_pmdown_time = 1,
384 .ignore_suspend = 1,
385 },
386 {
387 .name = LPASS_BE_SLIMBUS_5_RX,
388 .stream_name = "Slimbus5 Playback",
389 .cpu_dai_name = "msm-dai-q6-dev.16394",
390 .platform_name = "msm-pcm-routing",
391 .codec_name = "tasha_codec",
392 .codec_dai_name = "tasha_rx3",
393 .no_pcm = 1,
394 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530395 .id = MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530396 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
397 .ops = &msm_ext_slimbus_be_ops,
398 /* dai link has playback support */
399 .ignore_pmdown_time = 1,
400 .ignore_suspend = 1,
401 },
402 /* MAD BE */
403 {
404 .name = LPASS_BE_SLIMBUS_5_TX,
405 .stream_name = "Slimbus5 Capture",
406 .cpu_dai_name = "msm-dai-q6-dev.16395",
407 .platform_name = "msm-pcm-routing",
408 .codec_name = "tasha_codec",
409 .codec_dai_name = "tasha_mad1",
410 .no_pcm = 1,
411 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530412 .id = MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530413 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
414 .ops = &msm_ext_slimbus_be_ops,
415 .ignore_suspend = 1,
416 },
417 {
418 .name = LPASS_BE_SLIMBUS_6_RX,
419 .stream_name = "Slimbus6 Playback",
420 .cpu_dai_name = "msm-dai-q6-dev.16396",
421 .platform_name = "msm-pcm-routing",
422 .codec_name = "tasha_codec",
423 .codec_dai_name = "tasha_rx4",
424 .no_pcm = 1,
425 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530426 .id = MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530427 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
428 .ops = &msm_ext_slimbus_be_ops,
429 /* dai link has playback support */
430 .ignore_pmdown_time = 1,
431 .ignore_suspend = 1,
432 },
433};
434
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530435static struct snd_soc_dai_link msm_ext_compress_capture_dai[] = {
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530436 {/* hw:x,37 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530437 .name = "Compress9",
438 .stream_name = "Compress9",
439 .cpu_dai_name = "MultiMedia17",
440 .platform_name = "msm-compress-dsp",
441 .dynamic = 1,
442 .dpcm_capture = 1,
443 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
444 SND_SOC_DPCM_TRIGGER_POST},
445 .codec_dai_name = "snd-soc-dummy-dai",
446 .codec_name = "snd-soc-dummy",
447 .ignore_suspend = 1,
448 .id = MSM_FRONTEND_DAI_MULTIMEDIA17,
449 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530450 {/* hw:x,38 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530451 .name = "Compress10",
452 .stream_name = "Compress10",
453 .cpu_dai_name = "MultiMedia18",
454 .platform_name = "msm-compress-dsp",
455 .dynamic = 1,
456 .dpcm_capture = 1,
457 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
458 SND_SOC_DPCM_TRIGGER_POST},
459 .codec_dai_name = "snd-soc-dummy-dai",
460 .codec_name = "snd-soc-dummy",
461 .ignore_suspend = 1,
462 .id = MSM_FRONTEND_DAI_MULTIMEDIA18,
463 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530464 {/* hw:x,39 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530465 .name = "Compress11",
466 .stream_name = "Compress11",
467 .cpu_dai_name = "MultiMedia19",
468 .platform_name = "msm-compress-dsp",
469 .dynamic = 1,
470 .dpcm_capture = 1,
471 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
472 SND_SOC_DPCM_TRIGGER_POST},
473 .codec_dai_name = "snd-soc-dummy-dai",
474 .codec_name = "snd-soc-dummy",
475 .ignore_suspend = 1,
476 .id = MSM_FRONTEND_DAI_MULTIMEDIA19,
477 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530478 {/* hw:x,40 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530479 .name = "Compress12",
480 .stream_name = "Compress12",
481 .cpu_dai_name = "MultiMedia28",
482 .platform_name = "msm-compress-dsp",
483 .dynamic = 1,
484 .dpcm_capture = 1,
485 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
486 SND_SOC_DPCM_TRIGGER_POST},
487 .codec_dai_name = "snd-soc-dummy-dai",
488 .codec_name = "snd-soc-dummy",
489 .ignore_suspend = 1,
490 .id = MSM_FRONTEND_DAI_MULTIMEDIA28,
491 },
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +0530492 {/* hw:x,41 */
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +0530493 .name = "Compress13",
494 .stream_name = "Compress13",
495 .cpu_dai_name = "MultiMedia29",
496 .platform_name = "msm-compress-dsp",
497 .dynamic = 1,
498 .dpcm_capture = 1,
499 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
500 SND_SOC_DPCM_TRIGGER_POST},
501 .codec_dai_name = "snd-soc-dummy-dai",
502 .codec_name = "snd-soc-dummy",
503 .ignore_suspend = 1,
504 .id = MSM_FRONTEND_DAI_MULTIMEDIA29,
505 },
506};
507
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530508static struct snd_soc_dai_link msm_ext_tavil_be_dai[] = {
509 {
510 .name = LPASS_BE_SLIMBUS_0_RX,
511 .stream_name = "Slimbus Playback",
512 .cpu_dai_name = "msm-dai-q6-dev.16384",
513 .platform_name = "msm-pcm-routing",
514 .codec_name = "tavil_codec",
515 .codec_dai_name = "tavil_rx1",
516 .no_pcm = 1,
517 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530518 .id = MSM_BACKEND_DAI_SLIMBUS_0_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530519 .init = &msm_audrx_init,
520 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
521 /* this dainlink has playback support */
522 .ignore_pmdown_time = 1,
523 .ignore_suspend = 1,
524 .ops = &msm_ext_slimbus_be_ops,
525 },
526 {
527 .name = LPASS_BE_SLIMBUS_0_TX,
528 .stream_name = "Slimbus Capture",
529 .cpu_dai_name = "msm-dai-q6-dev.16385",
530 .platform_name = "msm-pcm-routing",
531 .codec_name = "tavil_codec",
532 .codec_dai_name = "tavil_tx1",
533 .no_pcm = 1,
534 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530535 .id = MSM_BACKEND_DAI_SLIMBUS_0_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530536 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
537 .ignore_suspend = 1,
538 .ops = &msm_ext_slimbus_be_ops,
539 },
540 {
541 .name = LPASS_BE_SLIMBUS_1_RX,
542 .stream_name = "Slimbus1 Playback",
543 .cpu_dai_name = "msm-dai-q6-dev.16386",
544 .platform_name = "msm-pcm-routing",
545 .codec_name = "tavil_codec",
546 .codec_dai_name = "tavil_rx1",
547 .no_pcm = 1,
548 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530549 .id = MSM_BACKEND_DAI_SLIMBUS_1_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530550 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
551 .ops = &msm_ext_slimbus_be_ops,
552 /* dai link has playback support */
553 .ignore_pmdown_time = 1,
554 .ignore_suspend = 1,
555 },
556 {
557 .name = LPASS_BE_SLIMBUS_1_TX,
558 .stream_name = "Slimbus1 Capture",
559 .cpu_dai_name = "msm-dai-q6-dev.16387",
560 .platform_name = "msm-pcm-routing",
561 .codec_name = "tavil_codec",
562 .codec_dai_name = "tavil_tx3",
563 .no_pcm = 1,
564 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530565 .id = MSM_BACKEND_DAI_SLIMBUS_1_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530566 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
567 .ops = &msm_ext_slimbus_be_ops,
568 .ignore_suspend = 1,
569 },
570 {
571 .name = LPASS_BE_SLIMBUS_2_RX,
572 .stream_name = "Slimbus2 Playback",
573 .cpu_dai_name = "msm-dai-q6-dev.16388",
574 .platform_name = "msm-pcm-routing",
575 .codec_name = "tavil_codec",
576 .codec_dai_name = "tavil_rx2",
577 .no_pcm = 1,
578 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530579 .id = MSM_BACKEND_DAI_SLIMBUS_2_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530580 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
581 .ops = &msm_ext_slimbus_be_ops,
582 .ignore_pmdown_time = 1,
583 .ignore_suspend = 1,
584 },
585 {
586 .name = LPASS_BE_SLIMBUS_3_RX,
587 .stream_name = "Slimbus3 Playback",
588 .cpu_dai_name = "msm-dai-q6-dev.16390",
589 .platform_name = "msm-pcm-routing",
590 .codec_name = "tavil_codec",
591 .codec_dai_name = "tavil_rx1",
592 .no_pcm = 1,
593 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530594 .id = MSM_BACKEND_DAI_SLIMBUS_3_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530595 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
596 .ops = &msm_ext_slimbus_be_ops,
597 /* dai link has playback support */
598 .ignore_pmdown_time = 1,
599 .ignore_suspend = 1,
600 },
601 {
602 .name = LPASS_BE_SLIMBUS_3_TX,
603 .stream_name = "Slimbus3 Capture",
604 .cpu_dai_name = "msm-dai-q6-dev.16391",
605 .platform_name = "msm-pcm-routing",
606 .codec_name = "tavil_codec",
607 .codec_dai_name = "tavil_tx1",
608 .no_pcm = 1,
609 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530610 .id = MSM_BACKEND_DAI_SLIMBUS_3_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530611 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
612 .ops = &msm_ext_slimbus_be_ops,
613 .ignore_suspend = 1,
614 },
615 {
616 .name = LPASS_BE_SLIMBUS_4_RX,
617 .stream_name = "Slimbus4 Playback",
618 .cpu_dai_name = "msm-dai-q6-dev.16392",
619 .platform_name = "msm-pcm-routing",
620 .codec_name = "tavil_codec",
621 .codec_dai_name = "tavil_rx1",
622 .no_pcm = 1,
623 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530624 .id = MSM_BACKEND_DAI_SLIMBUS_4_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530625 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
626 .ops = &msm_ext_slimbus_be_ops,
627 /* dai link has playback support */
628 .ignore_pmdown_time = 1,
629 .ignore_suspend = 1,
630 },
631 {
632 .name = LPASS_BE_SLIMBUS_5_RX,
633 .stream_name = "Slimbus5 Playback",
634 .cpu_dai_name = "msm-dai-q6-dev.16394",
635 .platform_name = "msm-pcm-routing",
636 .codec_name = "tavil_codec",
637 .codec_dai_name = "tavil_rx3",
638 .no_pcm = 1,
639 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530640 .id = MSM_BACKEND_DAI_SLIMBUS_5_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530641 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
642 .ops = &msm_ext_slimbus_be_ops,
643 /* dai link has playback support */
644 .ignore_pmdown_time = 1,
645 .ignore_suspend = 1,
646 },
647 /* MAD BE */
648 {
649 .name = LPASS_BE_SLIMBUS_5_TX,
650 .stream_name = "Slimbus5 Capture",
651 .cpu_dai_name = "msm-dai-q6-dev.16395",
652 .platform_name = "msm-pcm-routing",
653 .codec_name = "tavil_codec",
654 .codec_dai_name = "tavil_mad1",
655 .no_pcm = 1,
656 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530657 .id = MSM_BACKEND_DAI_SLIMBUS_5_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530658 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
659 .ops = &msm_ext_slimbus_be_ops,
660 .ignore_suspend = 1,
661 },
662 {
663 .name = LPASS_BE_SLIMBUS_6_RX,
664 .stream_name = "Slimbus6 Playback",
665 .cpu_dai_name = "msm-dai-q6-dev.16396",
666 .platform_name = "msm-pcm-routing",
667 .codec_name = "tavil_codec",
668 .codec_dai_name = "tavil_rx4",
669 .no_pcm = 1,
670 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530671 .id = MSM_BACKEND_DAI_SLIMBUS_6_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530672 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
673 .ops = &msm_ext_slimbus_be_ops,
674 /* dai link has playback support */
675 .ignore_pmdown_time = 1,
676 .ignore_suspend = 1,
677 },
678};
679
680static struct snd_soc_dai_link msm_ext_common_fe_dai[] = {
681 /* FrontEnd DAI Links */
682 {/* hw:x,0 */
683 .name = MSM_DAILINK_NAME(Media1),
684 .stream_name = "MultiMedia1",
685 .cpu_dai_name = "MultiMedia1",
686 .platform_name = "msm-pcm-dsp.0",
687 .dynamic = 1,
688 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
689 SND_SOC_DPCM_TRIGGER_POST},
690 .codec_dai_name = "snd-soc-dummy-dai",
691 .codec_name = "snd-soc-dummy",
692 .ignore_suspend = 1,
693 .dpcm_playback = 1,
694 .dpcm_capture = 1,
695 /* this dai link has playback support */
696 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530697 .id = MSM_FRONTEND_DAI_MULTIMEDIA1
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530698 },
699 {/* hw:x,1 */
700 .name = MSM_DAILINK_NAME(Media2),
701 .stream_name = "MultiMedia2",
702 .cpu_dai_name = "MultiMedia2",
703 .platform_name = "msm-pcm-dsp.0",
704 .dynamic = 1,
705 .dpcm_playback = 1,
706 .dpcm_capture = 1,
707 .codec_dai_name = "snd-soc-dummy-dai",
708 .codec_name = "snd-soc-dummy",
709 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
710 SND_SOC_DPCM_TRIGGER_POST},
711 .ignore_suspend = 1,
712 /* this dai link has playback support */
713 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530714 .id = MSM_FRONTEND_DAI_MULTIMEDIA2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530715 },
716 {/* hw:x,2 */
717 .name = "VoiceMMode1",
718 .stream_name = "VoiceMMode1",
719 .cpu_dai_name = "VoiceMMode1",
720 .platform_name = "msm-pcm-voice",
721 .dynamic = 1,
722 .dpcm_capture = 1,
723 .dpcm_playback = 1,
724 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
725 SND_SOC_DPCM_TRIGGER_POST},
726 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
727 .ignore_suspend = 1,
728 .ignore_pmdown_time = 1,
729 .codec_dai_name = "snd-soc-dummy-dai",
730 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530731 .id = MSM_FRONTEND_DAI_VOICEMMODE1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530732 },
733 {/* hw:x,3 */
734 .name = "MSM VoIP",
735 .stream_name = "VoIP",
736 .cpu_dai_name = "VoIP",
737 .platform_name = "msm-voip-dsp",
738 .dynamic = 1,
739 .dpcm_playback = 1,
740 .dpcm_capture = 1,
741 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
742 SND_SOC_DPCM_TRIGGER_POST},
743 .codec_dai_name = "snd-soc-dummy-dai",
744 .codec_name = "snd-soc-dummy",
745 .ignore_suspend = 1,
746 /* this dai link has playback support */
747 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530748 .id = MSM_FRONTEND_DAI_VOIP,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530749 },
750 {/* hw:x,4 */
751 .name = MSM_DAILINK_NAME(ULL),
752 .stream_name = "ULL",
753 .cpu_dai_name = "MultiMedia3",
754 .platform_name = "msm-pcm-dsp.2",
755 .dynamic = 1,
756 .dpcm_playback = 1,
757 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
758 SND_SOC_DPCM_TRIGGER_POST},
759 .codec_dai_name = "snd-soc-dummy-dai",
760 .codec_name = "snd-soc-dummy",
761 .ignore_suspend = 1,
762 /* this dai link has playback support */
763 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530764 .id = MSM_FRONTEND_DAI_MULTIMEDIA3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530765 },
766 /* Hostless PCM purpose */
767 {/* hw:x,5 */
768 .name = "SLIMBUS_0 Hostless",
769 .stream_name = "SLIMBUS_0 Hostless",
770 .cpu_dai_name = "SLIMBUS0_HOSTLESS",
771 .platform_name = "msm-pcm-hostless",
772 .dynamic = 1,
773 .dpcm_capture = 1,
774 .dpcm_playback = 1,
775 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
776 SND_SOC_DPCM_TRIGGER_POST},
777 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
778 .ignore_suspend = 1,
779 .ignore_pmdown_time = 1,
780 /* This dai link has MI2S support */
781 .codec_dai_name = "snd-soc-dummy-dai",
782 .codec_name = "snd-soc-dummy",
783 },
784 {/* hw:x,6 */
785 .name = "MSM AFE-PCM RX",
786 .stream_name = "AFE-PROXY RX",
787 .cpu_dai_name = "msm-dai-q6-dev.241",
788 .codec_name = "msm-stub-codec.1",
789 .codec_dai_name = "msm-stub-rx",
790 .platform_name = "msm-pcm-afe",
791 .ignore_suspend = 1,
792 /* this dai link has playback support */
793 .ignore_pmdown_time = 1,
794 },
795 {/* hw:x,7 */
796 .name = "MSM AFE-PCM TX",
797 .stream_name = "AFE-PROXY TX",
798 .cpu_dai_name = "msm-dai-q6-dev.240",
799 .codec_name = "msm-stub-codec.1",
800 .codec_dai_name = "msm-stub-tx",
801 .platform_name = "msm-pcm-afe",
802 .ignore_suspend = 1,
803 },
804 {/* hw:x,8 */
805 .name = MSM_DAILINK_NAME(Compress1),
806 .stream_name = "Compress1",
807 .cpu_dai_name = "MultiMedia4",
808 .platform_name = "msm-compress-dsp",
809 .async_ops = ASYNC_DPCM_SND_SOC_HW_PARAMS,
810 .dynamic = 1,
811 .dpcm_capture = 1,
812 .dpcm_playback = 1,
813 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
814 SND_SOC_DPCM_TRIGGER_POST},
815 .codec_dai_name = "snd-soc-dummy-dai",
816 .codec_name = "snd-soc-dummy",
817 .ignore_suspend = 1,
818 .ignore_pmdown_time = 1,
819 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530820 .id = MSM_FRONTEND_DAI_MULTIMEDIA4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530821 },
822 {/* hw:x,9*/
823 .name = "AUXPCM Hostless",
824 .stream_name = "AUXPCM Hostless",
825 .cpu_dai_name = "AUXPCM_HOSTLESS",
826 .platform_name = "msm-pcm-hostless",
827 .dynamic = 1,
828 .dpcm_capture = 1,
829 .dpcm_playback = 1,
830 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
831 SND_SOC_DPCM_TRIGGER_POST},
832 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
833 .ignore_suspend = 1,
834 /* this dai link has playback support */
835 .ignore_pmdown_time = 1,
836 .codec_dai_name = "snd-soc-dummy-dai",
837 .codec_name = "snd-soc-dummy",
838 },
839 {/* hw:x,10 */
840 .name = "SLIMBUS_1 Hostless",
841 .stream_name = "SLIMBUS_1 Hostless",
842 .cpu_dai_name = "SLIMBUS1_HOSTLESS",
843 .platform_name = "msm-pcm-hostless",
844 .dynamic = 1,
845 .dpcm_capture = 1,
846 .dpcm_playback = 1,
847 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
848 SND_SOC_DPCM_TRIGGER_POST},
849 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
850 .ignore_suspend = 1,
851 .ignore_pmdown_time = 1, /* dai link has playback support */
852 .codec_dai_name = "snd-soc-dummy-dai",
853 .codec_name = "snd-soc-dummy",
854 },
855 {/* hw:x,11 */
856 .name = "SLIMBUS_3 Hostless",
857 .stream_name = "SLIMBUS_3 Hostless",
858 .cpu_dai_name = "SLIMBUS3_HOSTLESS",
859 .platform_name = "msm-pcm-hostless",
860 .dynamic = 1,
861 .dpcm_capture = 1,
862 .dpcm_playback = 1,
863 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
864 SND_SOC_DPCM_TRIGGER_POST},
865 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
866 .ignore_suspend = 1,
867 .ignore_pmdown_time = 1, /* dai link has playback support */
868 .codec_dai_name = "snd-soc-dummy-dai",
869 .codec_name = "snd-soc-dummy",
870 },
871 {/* hw:x,12 */
872 .name = "SLIMBUS_4 Hostless",
873 .stream_name = "SLIMBUS_4 Hostless",
874 .cpu_dai_name = "SLIMBUS4_HOSTLESS",
875 .platform_name = "msm-pcm-hostless",
876 .dynamic = 1,
877 .dpcm_capture = 1,
878 .dpcm_playback = 1,
879 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
880 SND_SOC_DPCM_TRIGGER_POST},
881 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
882 .ignore_suspend = 1,
883 .ignore_pmdown_time = 1, /* dai link has playback support */
884 .codec_dai_name = "snd-soc-dummy-dai",
885 .codec_name = "snd-soc-dummy",
886 },
887 {/* hw:x,13 */
888 .name = MSM_DAILINK_NAME(LowLatency),
889 .stream_name = "MultiMedia5",
890 .cpu_dai_name = "MultiMedia5",
891 .platform_name = "msm-pcm-dsp.1",
892 .dynamic = 1,
893 .dpcm_capture = 1,
894 .dpcm_playback = 1,
895 .codec_dai_name = "snd-soc-dummy-dai",
896 .codec_name = "snd-soc-dummy",
897 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
898 SND_SOC_DPCM_TRIGGER_POST},
899 .ignore_suspend = 1,
900 /* this dai link has playback support */
901 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530902 .id = MSM_FRONTEND_DAI_MULTIMEDIA5,
Revathi Uddaraju30feb0d2017-11-21 15:30:19 +0530903 .ops = &msm_fe_qos_ops,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530904 },
905 /* LSM FE */
906 {/* hw:x,14 */
907 .name = "Listen 1 Audio Service",
908 .stream_name = "Listen 1 Audio Service",
909 .cpu_dai_name = "LSM1",
910 .platform_name = "msm-lsm-client",
911 .dynamic = 1,
912 .dpcm_capture = 1,
913 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
914 SND_SOC_DPCM_TRIGGER_POST },
915 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
916 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530917 .codec_dai_name = "snd-soc-dummy-dai",
918 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530919 .id = MSM_FRONTEND_DAI_LSM1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530920 },
921 {/* hw:x,15 */
922 .name = MSM_DAILINK_NAME(Compress2),
923 .stream_name = "Compress2",
924 .cpu_dai_name = "MultiMedia7",
925 .platform_name = "msm-compress-dsp",
926 .dynamic = 1,
927 .dpcm_capture = 1,
928 .dpcm_playback = 1,
929 .codec_dai_name = "snd-soc-dummy-dai",
930 .codec_name = "snd-soc-dummy",
931 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
932 SND_SOC_DPCM_TRIGGER_POST},
933 .ignore_suspend = 1,
934 /* this dai link has playback support */
935 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530936 .id = MSM_FRONTEND_DAI_MULTIMEDIA7,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530937 },
938 {/* hw:x,16 */
Laxminath Kasam38070be2017-08-17 18:21:59 +0530939 .name = MSM_DAILINK_NAME(MultiMedia10),
940 .stream_name = "MultiMedia10",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530941 .cpu_dai_name = "MultiMedia10",
Laxminath Kasam38070be2017-08-17 18:21:59 +0530942 .platform_name = "msm-pcm-dsp.1",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530943 .dynamic = 1,
944 .dpcm_capture = 1,
945 .dpcm_playback = 1,
946 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
947 SND_SOC_DPCM_TRIGGER_POST},
948 .codec_dai_name = "snd-soc-dummy-dai",
949 .codec_name = "snd-soc-dummy",
950 .ignore_suspend = 1,
951 .ignore_pmdown_time = 1,
952 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530953 .id = MSM_FRONTEND_DAI_MULTIMEDIA10,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530954 },
955 {/* hw:x,17 */
956 .name = MSM_DAILINK_NAME(ULL_NOIRQ),
957 .stream_name = "MM_NOIRQ",
958 .cpu_dai_name = "MultiMedia8",
959 .platform_name = "msm-pcm-dsp-noirq",
960 .dynamic = 1,
961 .dpcm_capture = 1,
962 .dpcm_playback = 1,
963 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
964 SND_SOC_DPCM_TRIGGER_POST},
965 .codec_dai_name = "snd-soc-dummy-dai",
966 .codec_name = "snd-soc-dummy",
967 .ignore_suspend = 1,
968 .ignore_pmdown_time = 1,
969 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +0530970 .id = MSM_FRONTEND_DAI_MULTIMEDIA8,
Revathi Uddaraju30feb0d2017-11-21 15:30:19 +0530971 .ops = &msm_fe_qos_ops,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530972 },
973 {/* hw:x,18 */
974 .name = "HDMI_RX_HOSTLESS",
975 .stream_name = "HDMI_RX_HOSTLESS",
976 .cpu_dai_name = "HDMI_HOSTLESS",
977 .platform_name = "msm-pcm-hostless",
978 .dynamic = 1,
979 .dpcm_playback = 1,
980 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
981 SND_SOC_DPCM_TRIGGER_POST},
982 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
983 .ignore_suspend = 1,
984 .ignore_pmdown_time = 1,
985 .codec_dai_name = "snd-soc-dummy-dai",
986 .codec_name = "snd-soc-dummy",
987 },
988 {/* hw:x,19 */
989 .name = "VoiceMMode2",
990 .stream_name = "VoiceMMode2",
991 .cpu_dai_name = "VoiceMMode2",
992 .platform_name = "msm-pcm-voice",
993 .dynamic = 1,
994 .dpcm_capture = 1,
995 .dpcm_playback = 1,
996 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
997 SND_SOC_DPCM_TRIGGER_POST},
998 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
999 .ignore_suspend = 1,
1000 .ignore_pmdown_time = 1,
1001 .codec_dai_name = "snd-soc-dummy-dai",
1002 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301003 .id = MSM_FRONTEND_DAI_VOICEMMODE2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301004 },
1005 {/* hw:x,20 */
1006 .name = "Listen 2 Audio Service",
1007 .stream_name = "Listen 2 Audio Service",
1008 .cpu_dai_name = "LSM2",
1009 .platform_name = "msm-lsm-client",
1010 .dynamic = 1,
1011 .dpcm_capture = 1,
1012 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1013 SND_SOC_DPCM_TRIGGER_POST },
1014 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1015 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301016 .codec_dai_name = "snd-soc-dummy-dai",
1017 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301018 .id = MSM_FRONTEND_DAI_LSM2,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301019 },
1020 {/* hw:x,21 */
1021 .name = "Listen 3 Audio Service",
1022 .stream_name = "Listen 3 Audio Service",
1023 .cpu_dai_name = "LSM3",
1024 .platform_name = "msm-lsm-client",
1025 .dynamic = 1,
1026 .dpcm_capture = 1,
1027 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1028 SND_SOC_DPCM_TRIGGER_POST },
1029 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1030 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301031 .codec_dai_name = "snd-soc-dummy-dai",
1032 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301033 .id = MSM_FRONTEND_DAI_LSM3,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301034 },
1035 {/* hw:x,22 */
1036 .name = "Listen 4 Audio Service",
1037 .stream_name = "Listen 4 Audio Service",
1038 .cpu_dai_name = "LSM4",
1039 .platform_name = "msm-lsm-client",
1040 .dynamic = 1,
1041 .dpcm_capture = 1,
1042 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1043 SND_SOC_DPCM_TRIGGER_POST },
1044 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1045 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301046 .codec_dai_name = "snd-soc-dummy-dai",
1047 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301048 .id = MSM_FRONTEND_DAI_LSM4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301049 },
1050 {/* hw:x,23 */
1051 .name = "Listen 5 Audio Service",
1052 .stream_name = "Listen 5 Audio Service",
1053 .cpu_dai_name = "LSM5",
1054 .platform_name = "msm-lsm-client",
1055 .dynamic = 1,
1056 .dpcm_capture = 1,
1057 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1058 SND_SOC_DPCM_TRIGGER_POST },
1059 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1060 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301061 .codec_dai_name = "snd-soc-dummy-dai",
1062 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301063 .id = MSM_FRONTEND_DAI_LSM5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301064 },
1065 {/* hw:x,24 */
1066 .name = "Listen 6 Audio Service",
1067 .stream_name = "Listen 6 Audio Service",
1068 .cpu_dai_name = "LSM6",
1069 .platform_name = "msm-lsm-client",
1070 .dynamic = 1,
1071 .dpcm_capture = 1,
1072 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1073 SND_SOC_DPCM_TRIGGER_POST },
1074 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1075 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301076 .codec_dai_name = "snd-soc-dummy-dai",
1077 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301078 .id = MSM_FRONTEND_DAI_LSM6
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301079 },
1080 {/* hw:x,25 */
1081 .name = "Listen 7 Audio Service",
1082 .stream_name = "Listen 7 Audio Service",
1083 .cpu_dai_name = "LSM7",
1084 .platform_name = "msm-lsm-client",
1085 .dynamic = 1,
1086 .dpcm_capture = 1,
1087 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1088 SND_SOC_DPCM_TRIGGER_POST },
1089 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1090 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301091 .codec_dai_name = "snd-soc-dummy-dai",
1092 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301093 .id = MSM_FRONTEND_DAI_LSM7,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301094 },
1095 {/* hw:x,26 */
1096 .name = "Listen 8 Audio Service",
1097 .stream_name = "Listen 8 Audio Service",
1098 .cpu_dai_name = "LSM8",
1099 .platform_name = "msm-lsm-client",
1100 .dynamic = 1,
1101 .dpcm_capture = 1,
1102 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1103 SND_SOC_DPCM_TRIGGER_POST },
1104 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1105 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301106 .codec_dai_name = "snd-soc-dummy-dai",
1107 .codec_name = "snd-soc-dummy",
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301108 .id = MSM_FRONTEND_DAI_LSM8,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301109 },
1110 {/* hw:x,27 */
1111 .name = MSM_DAILINK_NAME(Media9),
1112 .stream_name = "MultiMedia9",
1113 .cpu_dai_name = "MultiMedia9",
1114 .platform_name = "msm-pcm-dsp.0",
1115 .dynamic = 1,
1116 .dpcm_capture = 1,
1117 .dpcm_playback = 1,
1118 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1119 SND_SOC_DPCM_TRIGGER_POST},
1120 .codec_dai_name = "snd-soc-dummy-dai",
1121 .codec_name = "snd-soc-dummy",
1122 .ignore_suspend = 1,
1123 .ignore_pmdown_time = 1,
1124 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301125 .id = MSM_FRONTEND_DAI_MULTIMEDIA9,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301126 },
1127 {/* hw:x,28 */
1128 .name = MSM_DAILINK_NAME(Compress4),
1129 .stream_name = "Compress4",
1130 .cpu_dai_name = "MultiMedia11",
1131 .platform_name = "msm-compress-dsp",
1132 .dynamic = 1,
1133 .dpcm_capture = 1,
1134 .dpcm_playback = 1,
1135 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1136 SND_SOC_DPCM_TRIGGER_POST},
1137 .codec_dai_name = "snd-soc-dummy-dai",
1138 .codec_name = "snd-soc-dummy",
1139 .ignore_suspend = 1,
1140 .ignore_pmdown_time = 1,
1141 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301142 .id = MSM_FRONTEND_DAI_MULTIMEDIA11,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301143 },
1144 {/* hw:x,29 */
1145 .name = MSM_DAILINK_NAME(Compress5),
1146 .stream_name = "Compress5",
1147 .cpu_dai_name = "MultiMedia12",
1148 .platform_name = "msm-compress-dsp",
1149 .dynamic = 1,
1150 .dpcm_capture = 1,
1151 .dpcm_playback = 1,
1152 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1153 SND_SOC_DPCM_TRIGGER_POST},
1154 .codec_dai_name = "snd-soc-dummy-dai",
1155 .codec_name = "snd-soc-dummy",
1156 .ignore_suspend = 1,
1157 .ignore_pmdown_time = 1,
1158 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301159 .id = MSM_FRONTEND_DAI_MULTIMEDIA12,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301160 },
1161 {/* hw:x,30 */
1162 .name = MSM_DAILINK_NAME(Compress6),
1163 .stream_name = "Compress6",
1164 .cpu_dai_name = "MultiMedia13",
1165 .platform_name = "msm-compress-dsp",
1166 .dynamic = 1,
1167 .dpcm_capture = 1,
1168 .dpcm_playback = 1,
1169 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1170 SND_SOC_DPCM_TRIGGER_POST},
1171 .codec_dai_name = "snd-soc-dummy-dai",
1172 .codec_name = "snd-soc-dummy",
1173 .ignore_suspend = 1,
1174 .ignore_pmdown_time = 1,
1175 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301176 .id = MSM_FRONTEND_DAI_MULTIMEDIA13,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301177 },
1178 {/* hw:x,31 */
1179 .name = MSM_DAILINK_NAME(Compress7),
1180 .stream_name = "Compress7",
1181 .cpu_dai_name = "MultiMedia14",
1182 .platform_name = "msm-compress-dsp",
1183 .dynamic = 1,
1184 .dpcm_capture = 1,
1185 .dpcm_playback = 1,
1186 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1187 SND_SOC_DPCM_TRIGGER_POST},
1188 .codec_dai_name = "snd-soc-dummy-dai",
1189 .codec_name = "snd-soc-dummy",
1190 .ignore_suspend = 1,
1191 .ignore_pmdown_time = 1,
1192 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301193 .id = MSM_FRONTEND_DAI_MULTIMEDIA14,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301194 },
1195 {/* hw:x,32 */
1196 .name = MSM_DAILINK_NAME(Compress8),
1197 .stream_name = "Compress8",
1198 .cpu_dai_name = "MultiMedia15",
1199 .platform_name = "msm-compress-dsp",
1200 .dynamic = 1,
1201 .dpcm_capture = 1,
1202 .dpcm_playback = 1,
1203 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1204 SND_SOC_DPCM_TRIGGER_POST},
1205 .codec_dai_name = "snd-soc-dummy-dai",
1206 .codec_name = "snd-soc-dummy",
1207 .ignore_suspend = 1,
1208 .ignore_pmdown_time = 1,
1209 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301210 .id = MSM_FRONTEND_DAI_MULTIMEDIA15,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301211 },
1212 {/* hw:x,33 */
Asish Bhattacharya34504582017-08-08 12:55:01 +05301213 .name = MSM_DAILINK_NAME(ULL_NOIRQ_2),
1214 .stream_name = "MM_NOIRQ_2",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301215 .cpu_dai_name = "MultiMedia16",
Asish Bhattacharya34504582017-08-08 12:55:01 +05301216 .platform_name = "msm-pcm-dsp-noirq",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301217 .dynamic = 1,
1218 .dpcm_capture = 1,
1219 .dpcm_playback = 1,
1220 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1221 SND_SOC_DPCM_TRIGGER_POST},
1222 .codec_dai_name = "snd-soc-dummy-dai",
1223 .codec_name = "snd-soc-dummy",
1224 .ignore_suspend = 1,
1225 .ignore_pmdown_time = 1,
1226 /* this dai link has playback support */
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301227 .id = MSM_FRONTEND_DAI_MULTIMEDIA16,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301228 },
1229 {/* hw:x,34 */
1230 .name = "SLIMBUS_8 Hostless",
1231 .stream_name = "SLIMBUS8_HOSTLESS Capture",
1232 .cpu_dai_name = "SLIMBUS8_HOSTLESS",
1233 .platform_name = "msm-pcm-hostless",
1234 .dynamic = 1,
1235 .dpcm_capture = 1,
1236 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1237 SND_SOC_DPCM_TRIGGER_POST},
1238 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1239 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301240 .codec_dai_name = "snd-soc-dummy-dai",
1241 .codec_name = "snd-soc-dummy",
1242 },
1243 {/* hw:x,35 */
1244 .name = "SLIMBUS7 Hostless",
1245 .stream_name = "SLIMBUS7 Hostless",
1246 .cpu_dai_name = "SLIMBUS7_HOSTLESS",
1247 .platform_name = "msm-pcm-hostless",
1248 .dynamic = 1,
1249 .dpcm_playback = 1,
1250 .dpcm_capture = 1,
1251 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1252 SND_SOC_DPCM_TRIGGER_POST},
1253 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1254 .ignore_suspend = 1,
1255 .ignore_pmdown_time = 1,
1256 .codec_dai_name = "snd-soc-dummy-dai",
1257 .codec_name = "snd-soc-dummy",
1258 },
1259 {/* hw:x,36 */
1260 .name = "SDM660 HFP TX",
1261 .stream_name = "MultiMedia6",
1262 .cpu_dai_name = "MultiMedia6",
1263 .platform_name = "msm-pcm-loopback",
1264 .dynamic = 1,
1265 .dpcm_playback = 1,
1266 .dpcm_capture = 1,
1267 .codec_dai_name = "snd-soc-dummy-dai",
1268 .codec_name = "snd-soc-dummy",
1269 .trigger = {SND_SOC_DPCM_TRIGGER_POST,
1270 SND_SOC_DPCM_TRIGGER_POST},
1271 .ignore_suspend = 1,
1272 .no_host_mode = SND_SOC_DAI_LINK_NO_HOST,
1273 .ignore_pmdown_time = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301274 .id = MSM_FRONTEND_DAI_MULTIMEDIA6,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301275 },
1276};
1277
1278static struct snd_soc_dai_link msm_ext_common_be_dai[] = {
1279 {
1280 .name = LPASS_BE_AFE_PCM_RX,
1281 .stream_name = "AFE Playback",
1282 .cpu_dai_name = "msm-dai-q6-dev.224",
1283 .platform_name = "msm-pcm-routing",
1284 .codec_name = "msm-stub-codec.1",
1285 .codec_dai_name = "msm-stub-rx",
1286 .no_pcm = 1,
1287 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301288 .id = MSM_BACKEND_DAI_AFE_PCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301289 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1290 /* this dai link has playback support */
1291 .ignore_pmdown_time = 1,
1292 .ignore_suspend = 1,
1293 },
1294 {
1295 .name = LPASS_BE_AFE_PCM_TX,
1296 .stream_name = "AFE Capture",
1297 .cpu_dai_name = "msm-dai-q6-dev.225",
1298 .platform_name = "msm-pcm-routing",
1299 .codec_name = "msm-stub-codec.1",
1300 .codec_dai_name = "msm-stub-tx",
1301 .no_pcm = 1,
1302 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301303 .id = MSM_BACKEND_DAI_AFE_PCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301304 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1305 .ignore_suspend = 1,
1306 },
1307 /* Incall Record Uplink BACK END DAI Link */
1308 {
1309 .name = LPASS_BE_INCALL_RECORD_TX,
1310 .stream_name = "Voice Uplink Capture",
1311 .cpu_dai_name = "msm-dai-q6-dev.32772",
1312 .platform_name = "msm-pcm-routing",
1313 .codec_name = "msm-stub-codec.1",
1314 .codec_dai_name = "msm-stub-tx",
1315 .no_pcm = 1,
1316 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301317 .id = MSM_BACKEND_DAI_INCALL_RECORD_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301318 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1319 .ignore_suspend = 1,
1320 },
1321 /* Incall Record Downlink BACK END DAI Link */
1322 {
1323 .name = LPASS_BE_INCALL_RECORD_RX,
1324 .stream_name = "Voice Downlink Capture",
1325 .cpu_dai_name = "msm-dai-q6-dev.32771",
1326 .platform_name = "msm-pcm-routing",
1327 .codec_name = "msm-stub-codec.1",
1328 .codec_dai_name = "msm-stub-tx",
1329 .no_pcm = 1,
1330 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301331 .id = MSM_BACKEND_DAI_INCALL_RECORD_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301332 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1333 .ignore_suspend = 1,
1334 },
1335 /* Incall Music BACK END DAI Link */
1336 {
1337 .name = LPASS_BE_VOICE_PLAYBACK_TX,
1338 .stream_name = "Voice Farend Playback",
1339 .cpu_dai_name = "msm-dai-q6-dev.32773",
1340 .platform_name = "msm-pcm-routing",
1341 .codec_name = "msm-stub-codec.1",
1342 .codec_dai_name = "msm-stub-rx",
1343 .no_pcm = 1,
1344 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301345 .id = MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301346 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1347 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301348 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301349 },
1350 /* Incall Music 2 BACK END DAI Link */
1351 {
1352 .name = LPASS_BE_VOICE2_PLAYBACK_TX,
1353 .stream_name = "Voice2 Farend Playback",
1354 .cpu_dai_name = "msm-dai-q6-dev.32770",
1355 .platform_name = "msm-pcm-routing",
1356 .codec_name = "msm-stub-codec.1",
1357 .codec_dai_name = "msm-stub-rx",
1358 .no_pcm = 1,
1359 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301360 .id = MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301361 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1362 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301363 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301364 },
1365 {
1366 .name = LPASS_BE_USB_AUDIO_RX,
1367 .stream_name = "USB Audio Playback",
1368 .cpu_dai_name = "msm-dai-q6-dev.28672",
1369 .platform_name = "msm-pcm-routing",
1370 .codec_name = "msm-stub-codec.1",
1371 .codec_dai_name = "msm-stub-rx",
1372 .no_pcm = 1,
1373 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301374 .id = MSM_BACKEND_DAI_USB_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301375 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1376 .ignore_pmdown_time = 1,
1377 .ignore_suspend = 1,
1378 },
1379 {
1380 .name = LPASS_BE_USB_AUDIO_TX,
1381 .stream_name = "USB Audio Capture",
1382 .cpu_dai_name = "msm-dai-q6-dev.28673",
1383 .platform_name = "msm-pcm-routing",
1384 .codec_name = "msm-stub-codec.1",
1385 .codec_dai_name = "msm-stub-tx",
1386 .no_pcm = 1,
1387 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301388 .id = MSM_BACKEND_DAI_USB_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301389 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1390 .ignore_suspend = 1,
1391 },
1392 {
1393 .name = LPASS_BE_PRI_TDM_RX_0,
1394 .stream_name = "Primary TDM0 Playback",
1395 .cpu_dai_name = "msm-dai-q6-tdm.36864",
1396 .platform_name = "msm-pcm-routing",
1397 .codec_name = "msm-stub-codec.1",
1398 .codec_dai_name = "msm-stub-rx",
1399 .no_pcm = 1,
1400 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301401 .id = MSM_BACKEND_DAI_PRI_TDM_RX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301402 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301403 .ops = &msm_tdm_be_ops,
1404 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301405 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301406 },
1407 {
1408 .name = LPASS_BE_PRI_TDM_TX_0,
1409 .stream_name = "Primary TDM0 Capture",
1410 .cpu_dai_name = "msm-dai-q6-tdm.36865",
1411 .platform_name = "msm-pcm-routing",
1412 .codec_name = "msm-stub-codec.1",
1413 .codec_dai_name = "msm-stub-tx",
1414 .no_pcm = 1,
1415 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301416 .id = MSM_BACKEND_DAI_PRI_TDM_TX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301417 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301418 .ops = &msm_tdm_be_ops,
1419 .ignore_suspend = 1,
1420 },
1421 {
1422 .name = LPASS_BE_SEC_TDM_RX_0,
1423 .stream_name = "Secondary TDM0 Playback",
1424 .cpu_dai_name = "msm-dai-q6-tdm.36880",
1425 .platform_name = "msm-pcm-routing",
1426 .codec_name = "msm-stub-codec.1",
1427 .codec_dai_name = "msm-stub-rx",
1428 .no_pcm = 1,
1429 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301430 .id = MSM_BACKEND_DAI_SEC_TDM_RX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301431 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301432 .ops = &msm_tdm_be_ops,
1433 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301434 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301435 },
1436 {
1437 .name = LPASS_BE_SEC_TDM_TX_0,
1438 .stream_name = "Secondary TDM0 Capture",
1439 .cpu_dai_name = "msm-dai-q6-tdm.36881",
1440 .platform_name = "msm-pcm-routing",
1441 .codec_name = "msm-stub-codec.1",
1442 .codec_dai_name = "msm-stub-tx",
1443 .no_pcm = 1,
1444 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301445 .id = MSM_BACKEND_DAI_SEC_TDM_TX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301446 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301447 .ops = &msm_tdm_be_ops,
1448 .ignore_suspend = 1,
1449 },
1450 {
1451 .name = LPASS_BE_TERT_TDM_RX_0,
1452 .stream_name = "Tertiary TDM0 Playback",
1453 .cpu_dai_name = "msm-dai-q6-tdm.36896",
1454 .platform_name = "msm-pcm-routing",
1455 .codec_name = "msm-stub-codec.1",
1456 .codec_dai_name = "msm-stub-rx",
1457 .no_pcm = 1,
1458 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301459 .id = MSM_BACKEND_DAI_TERT_TDM_RX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301460 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301461 .ops = &msm_tdm_be_ops,
1462 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301463 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301464 },
1465 {
1466 .name = LPASS_BE_TERT_TDM_TX_0,
1467 .stream_name = "Tertiary TDM0 Capture",
1468 .cpu_dai_name = "msm-dai-q6-tdm.36897",
1469 .platform_name = "msm-pcm-routing",
1470 .codec_name = "msm-stub-codec.1",
1471 .codec_dai_name = "msm-stub-tx",
1472 .no_pcm = 1,
1473 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301474 .id = MSM_BACKEND_DAI_TERT_TDM_TX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301475 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301476 .ops = &msm_tdm_be_ops,
1477 .ignore_suspend = 1,
1478 },
1479 {
1480 .name = LPASS_BE_QUAT_TDM_RX_0,
1481 .stream_name = "Quaternary TDM0 Playback",
1482 .cpu_dai_name = "msm-dai-q6-tdm.36912",
1483 .platform_name = "msm-pcm-routing",
1484 .codec_name = "msm-stub-codec.1",
1485 .codec_dai_name = "msm-stub-rx",
1486 .no_pcm = 1,
1487 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301488 .id = MSM_BACKEND_DAI_QUAT_TDM_RX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301489 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301490 .ops = &msm_tdm_be_ops,
1491 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301492 .ignore_pmdown_time = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301493 },
1494 {
1495 .name = LPASS_BE_QUAT_TDM_TX_0,
1496 .stream_name = "Quaternary TDM0 Capture",
1497 .cpu_dai_name = "msm-dai-q6-tdm.36913",
1498 .platform_name = "msm-pcm-routing",
1499 .codec_name = "msm-stub-codec.1",
1500 .codec_dai_name = "msm-stub-tx",
1501 .no_pcm = 1,
1502 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301503 .id = MSM_BACKEND_DAI_QUAT_TDM_TX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301504 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301505 .ops = &msm_tdm_be_ops,
1506 .ignore_suspend = 1,
1507 },
Rohit Kumard1754482017-09-10 22:57:39 +05301508 {
1509 .name = LPASS_BE_QUIN_TDM_RX_0,
1510 .stream_name = "Quinary TDM0 Playback",
Rohit kumar091ff792017-10-11 18:35:07 +05301511 .cpu_dai_name = "msm-dai-q6-tdm.36928",
Rohit Kumard1754482017-09-10 22:57:39 +05301512 .platform_name = "msm-pcm-routing",
1513 .codec_name = "msm-stub-codec.1",
1514 .codec_dai_name = "msm-stub-rx",
1515 .no_pcm = 1,
1516 .dpcm_playback = 1,
1517 .id = MSM_BACKEND_DAI_QUIN_TDM_RX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301518 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Rohit Kumard1754482017-09-10 22:57:39 +05301519 .ops = &msm_tdm_be_ops,
1520 .ignore_suspend = 1,
Aditya Bavanari140a80a2018-01-03 16:51:17 +05301521 .ignore_pmdown_time = 1,
Rohit Kumard1754482017-09-10 22:57:39 +05301522 },
1523 {
1524 .name = LPASS_BE_QUIN_TDM_TX_0,
1525 .stream_name = "Quinary TDM0 Capture",
Rohit kumar091ff792017-10-11 18:35:07 +05301526 .cpu_dai_name = "msm-dai-q6-tdm.36929",
Rohit Kumard1754482017-09-10 22:57:39 +05301527 .platform_name = "msm-pcm-routing",
1528 .codec_name = "msm-stub-codec.1",
1529 .codec_dai_name = "msm-stub-tx",
1530 .no_pcm = 1,
1531 .dpcm_capture = 1,
1532 .id = MSM_BACKEND_DAI_QUIN_TDM_TX_0,
Dhanalakshmi Siddanid70a4f72019-11-27 15:35:41 +05301533 .be_hw_params_fixup = msm_tdm_be_hw_params_fixup,
Rohit Kumard1754482017-09-10 22:57:39 +05301534 .ops = &msm_tdm_be_ops,
1535 .ignore_suspend = 1,
1536 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301537};
1538
1539static struct snd_soc_dai_link msm_mi2s_be_dai_links[] = {
1540 {
1541 .name = LPASS_BE_PRI_MI2S_RX,
1542 .stream_name = "Primary MI2S Playback",
1543 .cpu_dai_name = "msm-dai-q6-mi2s.0",
1544 .platform_name = "msm-pcm-routing",
1545 .codec_name = "msm-stub-codec.1",
1546 .codec_dai_name = "msm-stub-rx",
1547 .no_pcm = 1,
1548 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301549 .id = MSM_BACKEND_DAI_PRI_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301550 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1551 .ops = &msm_mi2s_be_ops,
1552 .ignore_suspend = 1,
1553 .ignore_pmdown_time = 1,
1554 },
1555 {
1556 .name = LPASS_BE_PRI_MI2S_TX,
1557 .stream_name = "Primary MI2S Capture",
1558 .cpu_dai_name = "msm-dai-q6-mi2s.0",
1559 .platform_name = "msm-pcm-routing",
1560 .codec_name = "msm-stub-codec.1",
1561 .codec_dai_name = "msm-stub-tx",
1562 .no_pcm = 1,
1563 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301564 .id = MSM_BACKEND_DAI_PRI_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301565 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1566 .ops = &msm_mi2s_be_ops,
1567 .ignore_suspend = 1,
1568 },
1569 {
1570 .name = LPASS_BE_SEC_MI2S_RX,
1571 .stream_name = "Secondary MI2S Playback",
1572 .cpu_dai_name = "msm-dai-q6-mi2s.1",
1573 .platform_name = "msm-pcm-routing",
1574 .codec_name = "msm-stub-codec.1",
1575 .codec_dai_name = "msm-stub-rx",
1576 .no_pcm = 1,
1577 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301578 .id = MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301579 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1580 .ops = &msm_mi2s_be_ops,
1581 .ignore_suspend = 1,
1582 .ignore_pmdown_time = 1,
1583 },
1584 {
1585 .name = LPASS_BE_SEC_MI2S_TX,
1586 .stream_name = "Secondary MI2S Capture",
1587 .cpu_dai_name = "msm-dai-q6-mi2s.1",
1588 .platform_name = "msm-pcm-routing",
1589 .codec_name = "msm-stub-codec.1",
1590 .codec_dai_name = "msm-stub-tx",
1591 .no_pcm = 1,
1592 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301593 .id = MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301594 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1595 .ops = &msm_mi2s_be_ops,
1596 .ignore_suspend = 1,
1597 },
1598 {
1599 .name = LPASS_BE_TERT_MI2S_RX,
1600 .stream_name = "Tertiary MI2S Playback",
1601 .cpu_dai_name = "msm-dai-q6-mi2s.2",
1602 .platform_name = "msm-pcm-routing",
1603 .codec_name = "msm-stub-codec.1",
1604 .codec_dai_name = "msm-stub-rx",
1605 .no_pcm = 1,
1606 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301607 .id = MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301608 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1609 .ops = &msm_mi2s_be_ops,
1610 .ignore_suspend = 1,
1611 .ignore_pmdown_time = 1,
1612 },
1613 {
1614 .name = LPASS_BE_TERT_MI2S_TX,
1615 .stream_name = "Tertiary MI2S Capture",
1616 .cpu_dai_name = "msm-dai-q6-mi2s.2",
1617 .platform_name = "msm-pcm-routing",
1618 .codec_name = "msm-stub-codec.1",
1619 .codec_dai_name = "msm-stub-tx",
1620 .no_pcm = 1,
1621 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301622 .id = MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301623 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1624 .ops = &msm_mi2s_be_ops,
1625 .ignore_suspend = 1,
1626 },
1627 {
1628 .name = LPASS_BE_QUAT_MI2S_RX,
1629 .stream_name = "Quaternary MI2S Playback",
1630 .cpu_dai_name = "msm-dai-q6-mi2s.3",
1631 .platform_name = "msm-pcm-routing",
1632 .codec_name = "msm-stub-codec.1",
1633 .codec_dai_name = "msm-stub-rx",
1634 .no_pcm = 1,
1635 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301636 .id = MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301637 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1638 .ops = &msm_mi2s_be_ops,
1639 .ignore_suspend = 1,
1640 .ignore_pmdown_time = 1,
1641 },
1642 {
1643 .name = LPASS_BE_QUAT_MI2S_TX,
1644 .stream_name = "Quaternary MI2S Capture",
1645 .cpu_dai_name = "msm-dai-q6-mi2s.3",
1646 .platform_name = "msm-pcm-routing",
1647 .codec_name = "msm-stub-codec.1",
1648 .codec_dai_name = "msm-stub-tx",
1649 .no_pcm = 1,
1650 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301651 .id = MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301652 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1653 .ops = &msm_mi2s_be_ops,
1654 .ignore_suspend = 1,
1655 },
Rohit Kumard1754482017-09-10 22:57:39 +05301656 {
1657 .name = LPASS_BE_QUIN_MI2S_RX,
1658 .stream_name = "Quinary MI2S Playback",
Rohit kumar20df5452017-10-16 15:35:56 +05301659 .cpu_dai_name = "msm-dai-q6-mi2s.4",
Rohit Kumard1754482017-09-10 22:57:39 +05301660 .platform_name = "msm-pcm-routing",
1661 .codec_name = "msm-stub-codec.1",
1662 .codec_dai_name = "msm-stub-rx",
1663 .no_pcm = 1,
1664 .dpcm_playback = 1,
1665 .id = MSM_BACKEND_DAI_QUINARY_MI2S_RX,
1666 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1667 .ops = &msm_mi2s_be_ops,
1668 .ignore_suspend = 1,
1669 .ignore_pmdown_time = 1,
1670 },
1671 {
1672 .name = LPASS_BE_QUIN_MI2S_TX,
1673 .stream_name = "Quinary MI2S Capture",
Rohit kumar20df5452017-10-16 15:35:56 +05301674 .cpu_dai_name = "msm-dai-q6-mi2s.4",
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-tx",
1678 .no_pcm = 1,
1679 .dpcm_capture = 1,
1680 .id = MSM_BACKEND_DAI_QUINARY_MI2S_TX,
1681 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1682 .ops = &msm_mi2s_be_ops,
1683 .ignore_suspend = 1,
1684 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301685};
1686
1687static struct snd_soc_dai_link msm_auxpcm_be_dai_links[] = {
1688 /* Primary AUX PCM Backend DAI Links */
1689 {
1690 .name = LPASS_BE_AUXPCM_RX,
1691 .stream_name = "AUX PCM Playback",
1692 .cpu_dai_name = "msm-dai-q6-auxpcm.1",
1693 .platform_name = "msm-pcm-routing",
1694 .codec_name = "msm-stub-codec.1",
1695 .codec_dai_name = "msm-stub-rx",
1696 .no_pcm = 1,
1697 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301698 .id = MSM_BACKEND_DAI_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301699 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1700 .ignore_pmdown_time = 1,
1701 .ignore_suspend = 1,
1702 .ops = &msm_aux_pcm_be_ops,
1703 },
1704 {
1705 .name = LPASS_BE_AUXPCM_TX,
1706 .stream_name = "AUX PCM Capture",
1707 .cpu_dai_name = "msm-dai-q6-auxpcm.1",
1708 .platform_name = "msm-pcm-routing",
1709 .codec_name = "msm-stub-codec.1",
1710 .codec_dai_name = "msm-stub-tx",
1711 .no_pcm = 1,
1712 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301713 .id = MSM_BACKEND_DAI_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301714 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301715 .ignore_suspend = 1,
1716 .ops = &msm_aux_pcm_be_ops,
1717 },
1718 /* Secondary AUX PCM Backend DAI Links */
1719 {
1720 .name = LPASS_BE_SEC_AUXPCM_RX,
1721 .stream_name = "Sec AUX PCM Playback",
1722 .cpu_dai_name = "msm-dai-q6-auxpcm.2",
1723 .platform_name = "msm-pcm-routing",
1724 .codec_name = "msm-stub-codec.1",
1725 .codec_dai_name = "msm-stub-rx",
1726 .no_pcm = 1,
1727 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301728 .id = MSM_BACKEND_DAI_SEC_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301729 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1730 .ignore_pmdown_time = 1,
1731 .ignore_suspend = 1,
1732 .ops = &msm_aux_pcm_be_ops,
1733 },
1734 {
1735 .name = LPASS_BE_SEC_AUXPCM_TX,
1736 .stream_name = "Sec AUX PCM Capture",
1737 .cpu_dai_name = "msm-dai-q6-auxpcm.2",
1738 .platform_name = "msm-pcm-routing",
1739 .codec_name = "msm-stub-codec.1",
1740 .codec_dai_name = "msm-stub-tx",
1741 .no_pcm = 1,
1742 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301743 .id = MSM_BACKEND_DAI_SEC_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301744 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1745 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301746 .ops = &msm_aux_pcm_be_ops,
1747 },
1748 /* Tertiary AUX PCM Backend DAI Links */
1749 {
1750 .name = LPASS_BE_TERT_AUXPCM_RX,
1751 .stream_name = "Tert AUX PCM Playback",
1752 .cpu_dai_name = "msm-dai-q6-auxpcm.3",
1753 .platform_name = "msm-pcm-routing",
1754 .codec_name = "msm-stub-codec.1",
1755 .codec_dai_name = "msm-stub-rx",
1756 .no_pcm = 1,
1757 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301758 .id = MSM_BACKEND_DAI_TERT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301759 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1760 .ignore_pmdown_time = 1,
1761 .ignore_suspend = 1,
1762 .ops = &msm_aux_pcm_be_ops,
1763 },
1764 {
1765 .name = LPASS_BE_TERT_AUXPCM_TX,
1766 .stream_name = "Tert AUX PCM Capture",
1767 .cpu_dai_name = "msm-dai-q6-auxpcm.3",
1768 .platform_name = "msm-pcm-routing",
1769 .codec_name = "msm-stub-codec.1",
1770 .codec_dai_name = "msm-stub-tx",
1771 .no_pcm = 1,
1772 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301773 .id = MSM_BACKEND_DAI_TERT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301774 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1775 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301776 .ops = &msm_aux_pcm_be_ops,
1777 },
1778 /* Quaternary AUX PCM Backend DAI Links */
1779 {
1780 .name = LPASS_BE_QUAT_AUXPCM_RX,
1781 .stream_name = "Quat AUX PCM Playback",
1782 .cpu_dai_name = "msm-dai-q6-auxpcm.4",
1783 .platform_name = "msm-pcm-routing",
1784 .codec_name = "msm-stub-codec.1",
1785 .codec_dai_name = "msm-stub-rx",
1786 .no_pcm = 1,
1787 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301788 .id = MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301789 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1790 .ignore_pmdown_time = 1,
1791 .ignore_suspend = 1,
1792 .ops = &msm_aux_pcm_be_ops,
1793 },
1794 {
1795 .name = LPASS_BE_QUAT_AUXPCM_TX,
1796 .stream_name = "Quat AUX PCM Capture",
1797 .cpu_dai_name = "msm-dai-q6-auxpcm.4",
1798 .platform_name = "msm-pcm-routing",
1799 .codec_name = "msm-stub-codec.1",
1800 .codec_dai_name = "msm-stub-tx",
1801 .no_pcm = 1,
1802 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301803 .id = MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301804 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1805 .ignore_suspend = 1,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301806 .ops = &msm_aux_pcm_be_ops,
1807 },
Rohit Kumard1754482017-09-10 22:57:39 +05301808 /* Quinary AUX PCM Backend DAI Links */
1809 {
1810 .name = LPASS_BE_QUIN_AUXPCM_RX,
1811 .stream_name = "Quin AUX PCM Playback",
1812 .cpu_dai_name = "msm-dai-q6-auxpcm.5",
1813 .platform_name = "msm-pcm-routing",
1814 .codec_name = "msm-stub-codec.1",
1815 .codec_dai_name = "msm-stub-rx",
1816 .no_pcm = 1,
1817 .dpcm_playback = 1,
1818 .id = MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
1819 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1820 .ignore_pmdown_time = 1,
1821 .ignore_suspend = 1,
1822 .ops = &msm_aux_pcm_be_ops,
1823 },
1824 {
1825 .name = LPASS_BE_QUIN_AUXPCM_TX,
1826 .stream_name = "Quin AUX PCM Capture",
1827 .cpu_dai_name = "msm-dai-q6-auxpcm.5",
1828 .platform_name = "msm-pcm-routing",
1829 .codec_name = "msm-stub-codec.1",
1830 .codec_dai_name = "msm-stub-tx",
1831 .no_pcm = 1,
1832 .dpcm_capture = 1,
1833 .id = MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
1834 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1835 .ignore_suspend = 1,
Rohit Kumard1754482017-09-10 22:57:39 +05301836 .ops = &msm_aux_pcm_be_ops,
1837 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301838};
1839
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05301840static struct snd_soc_dai_link msm_afe_rxtx_lb_be_dai_link[] = {
1841 {
1842 .name = LPASS_BE_AFE_LOOPBACK_TX,
1843 .stream_name = "AFE Loopback Capture",
1844 .cpu_dai_name = "msm-dai-q6-dev.24577",
1845 .platform_name = "msm-pcm-routing",
1846 .codec_name = "msm-stub-codec.1",
1847 .codec_dai_name = "msm-stub-tx",
1848 .no_pcm = 1,
1849 .dpcm_capture = 1,
1850 .id = MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
1851 .ignore_pmdown_time = 1,
1852 .ignore_suspend = 1,
1853 },
1854};
1855
1856
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301857static struct snd_soc_dai_link msm_wcn_be_dai_links[] = {
1858 {
1859 .name = LPASS_BE_SLIMBUS_7_RX,
1860 .stream_name = "Slimbus7 Playback",
1861 .cpu_dai_name = "msm-dai-q6-dev.16398",
1862 .platform_name = "msm-pcm-routing",
1863 .codec_name = "btfmslim_slave",
1864 /* BT codec driver determines capabilities based on
1865 * dai name, bt codecdai name should always contains
1866 * supported usecase information
1867 */
1868 .codec_dai_name = "btfm_bt_sco_a2dp_slim_rx",
1869 .no_pcm = 1,
1870 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301871 .id = MSM_BACKEND_DAI_SLIMBUS_7_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301872 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1873 .ops = &msm_wcn_ops,
1874 /* dai link has playback support */
1875 .ignore_pmdown_time = 1,
1876 .ignore_suspend = 1,
1877 },
1878 {
1879 .name = LPASS_BE_SLIMBUS_7_TX,
1880 .stream_name = "Slimbus7 Capture",
1881 .cpu_dai_name = "msm-dai-q6-dev.16399",
1882 .platform_name = "msm-pcm-routing",
1883 .codec_name = "btfmslim_slave",
1884 .codec_dai_name = "btfm_bt_sco_slim_tx",
1885 .no_pcm = 1,
1886 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301887 .id = MSM_BACKEND_DAI_SLIMBUS_7_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301888 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1889 .ops = &msm_wcn_ops,
1890 .ignore_suspend = 1,
1891 },
1892 {
1893 .name = LPASS_BE_SLIMBUS_8_TX,
1894 .stream_name = "Slimbus8 Capture",
1895 .cpu_dai_name = "msm-dai-q6-dev.16401",
1896 .platform_name = "msm-pcm-routing",
1897 .codec_name = "btfmslim_slave",
1898 .codec_dai_name = "btfm_fm_slim_tx",
1899 .no_pcm = 1,
1900 .dpcm_capture = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301901 .id = MSM_BACKEND_DAI_SLIMBUS_8_TX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301902 .be_hw_params_fixup = msm_ext_be_hw_params_fixup,
1903 .init = &msm_wcn_init,
1904 .ops = &msm_wcn_ops,
1905 .ignore_suspend = 1,
1906 },
1907};
1908
1909static struct snd_soc_dai_link ext_disp_be_dai_link[] = {
1910 /* DISP PORT BACK END DAI Link */
1911 {
1912 .name = LPASS_BE_DISPLAY_PORT,
1913 .stream_name = "Display Port Playback",
1914 .cpu_dai_name = "msm-dai-q6-dp.24608",
1915 .platform_name = "msm-pcm-routing",
1916 .codec_name = "msm-ext-disp-audio-codec-rx",
1917 .codec_dai_name = "msm_dp_audio_codec_rx_dai",
1918 .no_pcm = 1,
1919 .dpcm_playback = 1,
Asish Bhattacharya84f7f732017-07-25 16:29:27 +05301920 .id = MSM_BACKEND_DAI_DISPLAY_PORT_RX,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301921 .be_hw_params_fixup = msm_common_be_hw_params_fixup,
1922 .ignore_pmdown_time = 1,
1923 .ignore_suspend = 1,
1924 },
1925};
1926
1927static struct snd_soc_dai_link msm_ext_tasha_dai_links[
1928ARRAY_SIZE(msm_ext_common_fe_dai) +
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05301929ARRAY_SIZE(msm_ext_compress_capture_dai) +
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301930ARRAY_SIZE(msm_ext_tasha_fe_dai) +
1931ARRAY_SIZE(msm_ext_common_be_dai) +
1932ARRAY_SIZE(msm_ext_tasha_be_dai) +
1933ARRAY_SIZE(msm_mi2s_be_dai_links) +
1934ARRAY_SIZE(msm_auxpcm_be_dai_links) +
1935ARRAY_SIZE(msm_wcn_be_dai_links) +
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05301936ARRAY_SIZE(ext_disp_be_dai_link) +
1937ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link)];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301938
1939static struct snd_soc_dai_link msm_ext_tavil_dai_links[
1940ARRAY_SIZE(msm_ext_common_fe_dai) +
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05301941ARRAY_SIZE(msm_ext_compress_capture_dai) +
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05301942ARRAY_SIZE(msm_ext_tavil_fe_dai) +
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301943ARRAY_SIZE(msm_ext_common_be_dai) +
1944ARRAY_SIZE(msm_ext_tavil_be_dai) +
1945ARRAY_SIZE(msm_mi2s_be_dai_links) +
1946ARRAY_SIZE(msm_auxpcm_be_dai_links) +
1947ARRAY_SIZE(msm_wcn_be_dai_links) +
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05301948ARRAY_SIZE(ext_disp_be_dai_link) +
1949ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link)];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301950
1951/**
1952 * populate_snd_card_dailinks - prepares dailink array and initializes card.
1953 *
1954 * @dev: device handle
1955 *
1956 * Returns card on success or NULL on failure.
1957 */
1958struct snd_soc_card *populate_snd_card_dailinks(struct device *dev,
1959 int snd_card_val)
1960{
1961 struct snd_soc_card *card;
1962 struct snd_soc_dai_link *msm_ext_dai_links = NULL;
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05301963 int ret, len1, len2, len3, len4, len5;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301964 enum codec_variant codec_ver = 0;
1965
1966 if (snd_card_val == EXT_SND_CARD_TASHA) {
1967 card = &snd_soc_card_msm_card_tasha;
1968 } else if (snd_card_val == EXT_SND_CARD_TAVIL) {
1969 card = &snd_soc_card_msm_card_tavil;
1970 } else {
1971 dev_err(dev, "%s: failing as no matching card name\n",
1972 __func__);
1973 return NULL;
1974 }
1975
1976 card->dev = dev;
1977 ret = snd_soc_of_parse_card_name(card, "qcom,model");
1978 if (ret) {
1979 dev_err(dev, "%s: parse card name failed, err:%d\n",
1980 __func__, ret);
1981 return NULL;
1982 }
1983
1984 if (strnstr(card->name, "tasha", strlen(card->name))) {
1985 codec_ver = tasha_codec_ver();
Rohit kumarf700c862017-12-15 15:33:57 +05301986 if (codec_ver == WCD9326) {
1987 card->name = "sdm670-tashalite-snd-card";
1988 } else if (codec_ver == WCD9XXX) {
1989 dev_err(dev, "%s: Invalid codec version %d\n",
1990 __func__, codec_ver);
1991 return NULL;
1992 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301993
1994 len1 = ARRAY_SIZE(msm_ext_common_fe_dai);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05301995 len2 = len1 + ARRAY_SIZE(msm_ext_compress_capture_dai);
1996 len3 = len2 + ARRAY_SIZE(msm_ext_tasha_fe_dai);
1997 len4 = len3 + ARRAY_SIZE(msm_ext_common_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301998 memcpy(msm_ext_tasha_dai_links, msm_ext_common_fe_dai,
1999 sizeof(msm_ext_common_fe_dai));
2000 memcpy(msm_ext_tasha_dai_links + len1,
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302001 msm_ext_compress_capture_dai,
2002 sizeof(msm_ext_compress_capture_dai));
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302003 memcpy(msm_ext_tasha_dai_links + len2,
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302004 msm_ext_tasha_fe_dai, sizeof(msm_ext_tasha_fe_dai));
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302005 memcpy(msm_ext_tasha_dai_links + len3,
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302006 msm_ext_common_be_dai, sizeof(msm_ext_common_be_dai));
2007 memcpy(msm_ext_tasha_dai_links + len4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302008 msm_ext_tasha_be_dai, sizeof(msm_ext_tasha_be_dai));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302009 len5 = len4 + ARRAY_SIZE(msm_ext_tasha_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302010 if (of_property_read_bool(dev->of_node,
2011 "qcom,mi2s-audio-intf")) {
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302012 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302013 msm_mi2s_be_dai_links,
2014 sizeof(msm_mi2s_be_dai_links));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302015 len5 += ARRAY_SIZE(msm_mi2s_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302016 }
2017 if (of_property_read_bool(dev->of_node,
2018 "qcom,auxpcm-audio-intf")) {
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302019 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302020 msm_auxpcm_be_dai_links,
2021 sizeof(msm_auxpcm_be_dai_links));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302022 len5 += ARRAY_SIZE(msm_auxpcm_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302023 }
2024 if (of_property_read_bool(dev->of_node, "qcom,wcn-btfm")) {
2025 dev_dbg(dev, "%s(): WCN BTFM support present\n",
2026 __func__);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302027 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302028 msm_wcn_be_dai_links,
2029 sizeof(msm_wcn_be_dai_links));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302030 len5 += ARRAY_SIZE(msm_wcn_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302031 }
2032 if (of_property_read_bool(dev->of_node,
2033 "qcom,ext-disp-audio-rx")) {
2034 dev_dbg(dev, "%s(): ext disp audio support present\n",
2035 __func__);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302036 memcpy(msm_ext_tasha_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302037 ext_disp_be_dai_link,
2038 sizeof(ext_disp_be_dai_link));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302039 len5 += ARRAY_SIZE(ext_disp_be_dai_link);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302040 }
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05302041 if (of_property_read_bool(dev->of_node, "qcom,afe-rxtx-lb")) {
2042 dev_dbg(dev, "%s(): AFE RX to TX loopback supported\n",
2043 __func__);
2044 memcpy(msm_ext_tasha_dai_links + len5,
2045 msm_afe_rxtx_lb_be_dai_link,
2046 sizeof(msm_afe_rxtx_lb_be_dai_link));
2047 len5 += ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link);
2048 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302049 msm_ext_dai_links = msm_ext_tasha_dai_links;
2050 } else if (strnstr(card->name, "tavil", strlen(card->name))) {
2051 len1 = ARRAY_SIZE(msm_ext_common_fe_dai);
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302052 len2 = len1 + ARRAY_SIZE(msm_ext_compress_capture_dai);
2053 len3 = len2 + ARRAY_SIZE(msm_ext_tavil_fe_dai);
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302054 len4 = len3 + ARRAY_SIZE(msm_ext_common_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302055 memcpy(msm_ext_tavil_dai_links, msm_ext_common_fe_dai,
2056 sizeof(msm_ext_common_fe_dai));
2057 memcpy(msm_ext_tavil_dai_links + len1,
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302058 msm_ext_compress_capture_dai,
2059 sizeof(msm_ext_compress_capture_dai));
Sachin Mohan Gadagbed61a02018-04-05 14:31:12 +05302060 memcpy(msm_ext_tavil_dai_links + len2,
2061 msm_ext_tavil_fe_dai, sizeof(msm_ext_tavil_fe_dai));
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302062 memcpy(msm_ext_tavil_dai_links + len3,
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302063 msm_ext_common_be_dai, sizeof(msm_ext_common_be_dai));
2064 memcpy(msm_ext_tavil_dai_links + len4,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302065 msm_ext_tavil_be_dai, sizeof(msm_ext_tavil_be_dai));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302066 len5 = len4 + ARRAY_SIZE(msm_ext_tavil_be_dai);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302067 if (of_property_read_bool(dev->of_node,
2068 "qcom,mi2s-audio-intf")) {
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302069 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302070 msm_mi2s_be_dai_links,
2071 sizeof(msm_mi2s_be_dai_links));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302072 len5 += ARRAY_SIZE(msm_mi2s_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302073 }
2074 if (of_property_read_bool(dev->of_node,
2075 "qcom,auxpcm-audio-intf")) {
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302076 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302077 msm_auxpcm_be_dai_links,
2078 sizeof(msm_auxpcm_be_dai_links));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302079 len5 += ARRAY_SIZE(msm_auxpcm_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302080 }
2081 if (of_property_read_bool(dev->of_node, "qcom,wcn-btfm")) {
2082 dev_dbg(dev, "%s(): WCN BTFM support present\n",
2083 __func__);
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302084 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302085 msm_wcn_be_dai_links,
2086 sizeof(msm_wcn_be_dai_links));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302087 len5 += ARRAY_SIZE(msm_wcn_be_dai_links);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302088 }
2089 if (of_property_read_bool(dev->of_node,
2090 "qcom,ext-disp-audio-rx")) {
2091 dev_dbg(dev, "%s(): ext disp audio support present\n",
2092 __func__);
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302093 memcpy(msm_ext_tavil_dai_links + len5,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302094 ext_disp_be_dai_link,
2095 sizeof(ext_disp_be_dai_link));
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302096 len5 += ARRAY_SIZE(ext_disp_be_dai_link);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302097 }
Sidipotu Ashok18bdf4a2018-11-19 10:49:23 +05302098 if (of_property_read_bool(dev->of_node, "qcom,afe-rxtx-lb")) {
2099 dev_dbg(dev, "%s(): AFE RX to TX loopback supported\n",
2100 __func__);
2101 memcpy(msm_ext_tavil_dai_links + len5,
2102 msm_afe_rxtx_lb_be_dai_link,
2103 sizeof(msm_afe_rxtx_lb_be_dai_link));
2104 len5 += ARRAY_SIZE(msm_afe_rxtx_lb_be_dai_link);
2105 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302106 msm_ext_dai_links = msm_ext_tavil_dai_links;
2107 } else {
2108 dev_err(dev, "%s: failing as no matching card name\n",
2109 __func__);
2110 return NULL;
2111 }
2112 card->dai_link = msm_ext_dai_links;
Sachin Mohan Gadag3061c7e2018-04-02 18:33:49 +05302113 card->num_links = len5;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302114
2115 return card;
2116}
2117EXPORT_SYMBOL(populate_snd_card_dailinks);