blob: 3de797f1559f82d12e9ca6fc23ac98dea56677ba [file] [log] [blame]
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05301/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13
14#include <linux/init.h>
15#include <linux/module.h>
16#include <linux/device.h>
17#include <linux/platform_device.h>
18#include <linux/of_device.h>
19#include <sound/core.h>
20#include <sound/pcm.h>
21#include <sound/soc.h>
22
23static struct snd_soc_dai_ops msm_fe_dai_ops = {};
24
25/* Conventional and unconventional sample rate supported */
26static unsigned int supported_sample_rates[] = {
27 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000,
28 88200, 96000, 176400, 192000, 352800, 384000
29};
30
31static struct snd_pcm_hw_constraint_list constraints_sample_rates = {
32 .count = ARRAY_SIZE(supported_sample_rates),
33 .list = supported_sample_rates,
34 .mask = 0,
35};
36
37static int multimedia_startup(struct snd_pcm_substream *substream,
38 struct snd_soc_dai *dai)
39{
40 snd_pcm_hw_constraint_list(substream->runtime, 0,
41 SNDRV_PCM_HW_PARAM_RATE,
42 &constraints_sample_rates);
43 return 0;
44}
45
46static int fe_dai_probe(struct snd_soc_dai *dai)
47{
48 struct snd_soc_dapm_route intercon;
49 struct snd_soc_dapm_context *dapm;
50
51 if (!dai || !dai->driver) {
52 pr_err("%s invalid params\n", __func__);
53 return -EINVAL;
54 }
55 dapm = snd_soc_component_get_dapm(dai->component);
56 memset(&intercon, 0, sizeof(intercon));
57 if (dai->driver->playback.stream_name &&
58 dai->driver->playback.aif_name) {
59 dev_dbg(dai->dev, "%s add route for widget %s",
60 __func__, dai->driver->playback.stream_name);
61 intercon.source = dai->driver->playback.stream_name;
62 intercon.sink = dai->driver->playback.aif_name;
63 dev_dbg(dai->dev, "%s src %s sink %s\n",
64 __func__, intercon.source, intercon.sink);
65 snd_soc_dapm_add_routes(dapm, &intercon, 1);
66 snd_soc_dapm_ignore_suspend(dapm, intercon.source);
67 }
68 if (dai->driver->capture.stream_name &&
69 dai->driver->capture.aif_name) {
70 dev_dbg(dai->dev, "%s add route for widget %s",
71 __func__, dai->driver->capture.stream_name);
72 intercon.sink = dai->driver->capture.stream_name;
73 intercon.source = dai->driver->capture.aif_name;
74 dev_dbg(dai->dev, "%s src %s sink %s\n",
75 __func__, intercon.source, intercon.sink);
76 snd_soc_dapm_add_routes(dapm, &intercon, 1);
77 snd_soc_dapm_ignore_suspend(dapm, intercon.sink);
78 }
79 return 0;
80}
81
82static struct snd_soc_dai_ops msm_fe_Multimedia_dai_ops = {
83 .startup = multimedia_startup,
84};
85
86static const struct snd_soc_component_driver msm_fe_dai_component = {
87 .name = "msm-dai-fe",
88};
89
90static struct snd_soc_dai_driver msm_fe_dais[] = {
91 {
92 .playback = {
93 .stream_name = "MultiMedia1 Playback",
94 .aif_name = "MM_DL1",
95 .rates = (SNDRV_PCM_RATE_8000_384000|
96 SNDRV_PCM_RATE_KNOT),
97 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
98 SNDRV_PCM_FMTBIT_S24_LE |
99 SNDRV_PCM_FMTBIT_S24_3LE |
100 SNDRV_PCM_FMTBIT_S32_LE),
101 .channels_min = 1,
102 .channels_max = 8,
103 .rate_min = 8000,
104 .rate_max = 384000,
105 },
106 .capture = {
107 .stream_name = "MultiMedia1 Capture",
108 .aif_name = "MM_UL1",
109 .rates = (SNDRV_PCM_RATE_8000_384000|
110 SNDRV_PCM_RATE_KNOT),
111 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
112 SNDRV_PCM_FMTBIT_S24_LE |
113 SNDRV_PCM_FMTBIT_S24_3LE |
114 SNDRV_PCM_FMTBIT_S32_LE),
115 .channels_min = 1,
116 .channels_max = 8,
117 .rate_min = 8000,
118 .rate_max = 48000,
119 },
120 .ops = &msm_fe_Multimedia_dai_ops,
121 .name = "MultiMedia1",
122 .probe = fe_dai_probe,
123 },
124 {
125 .playback = {
126 .stream_name = "MultiMedia2 Playback",
127 .aif_name = "MM_DL2",
128 .rates = (SNDRV_PCM_RATE_8000_384000|
129 SNDRV_PCM_RATE_KNOT),
130 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
131 SNDRV_PCM_FMTBIT_S24_LE |
132 SNDRV_PCM_FMTBIT_S24_3LE |
133 SNDRV_PCM_FMTBIT_S32_LE),
134 .channels_min = 1,
135 .channels_max = 8,
136 .rate_min = 8000,
137 .rate_max = 384000,
138 },
139 .capture = {
140 .stream_name = "MultiMedia2 Capture",
141 .aif_name = "MM_UL2",
142 .rates = (SNDRV_PCM_RATE_8000_384000|
143 SNDRV_PCM_RATE_KNOT),
144 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
145 SNDRV_PCM_FMTBIT_S24_LE |
146 SNDRV_PCM_FMTBIT_S24_3LE |
147 SNDRV_PCM_FMTBIT_S32_LE),
148 .channels_min = 1,
149 .channels_max = 8,
150 .rate_min = 8000,
151 .rate_max = 48000,
152 },
153 .ops = &msm_fe_Multimedia_dai_ops,
154 .name = "MultiMedia2",
155 .probe = fe_dai_probe,
156 },
157 {
158 .playback = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530159 .stream_name = "VoIP Playback",
160 .aif_name = "VOIP_DL",
161 .rates = SNDRV_PCM_RATE_8000_48000,
162 .formats = SNDRV_PCM_FMTBIT_S16_LE |
163 SNDRV_PCM_FMTBIT_SPECIAL,
164 .channels_min = 1,
165 .channels_max = 2,
166 .rate_min = 8000,
167 .rate_max = 48000,
168 },
169 .capture = {
170 .stream_name = "VoIP Capture",
171 .aif_name = "VOIP_UL",
172 .rates = SNDRV_PCM_RATE_8000_48000,
173 .formats = SNDRV_PCM_FMTBIT_S16_LE |
174 SNDRV_PCM_FMTBIT_SPECIAL,
175 .channels_min = 1,
176 .channels_max = 2,
177 .rate_min = 8000,
178 .rate_max = 48000,
179 },
180 .ops = &msm_fe_dai_ops,
181 .name = "VoIP",
182 .probe = fe_dai_probe,
183 },
184 {
185 .playback = {
186 .stream_name = "MultiMedia3 Playback",
187 .aif_name = "MM_DL3",
188 .rates = (SNDRV_PCM_RATE_8000_384000 |
189 SNDRV_PCM_RATE_KNOT),
190 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
191 SNDRV_PCM_FMTBIT_S24_LE |
192 SNDRV_PCM_FMTBIT_S24_3LE |
193 SNDRV_PCM_FMTBIT_S32_LE),
194 .channels_min = 1,
195 .channels_max = 6,
196 .rate_min = 8000,
197 .rate_max = 384000,
198 },
199 .capture = {
200 .stream_name = "MultiMedia3 Capture",
201 .aif_name = "MM_UL3",
202 .rates = (SNDRV_PCM_RATE_8000_384000|
203 SNDRV_PCM_RATE_KNOT),
204 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
205 SNDRV_PCM_FMTBIT_S24_LE |
206 SNDRV_PCM_FMTBIT_S24_3LE |
207 SNDRV_PCM_FMTBIT_S32_LE),
208 .channels_min = 1,
209 .channels_max = 8,
210 .rate_min = 8000,
211 .rate_max = 48000,
212 },
213 .ops = &msm_fe_Multimedia_dai_ops,
214 .name = "MultiMedia3",
215 .probe = fe_dai_probe,
216 },
217 {
218 .playback = {
219 .stream_name = "MultiMedia4 Playback",
220 .aif_name = "MM_DL4",
221 .rates = (SNDRV_PCM_RATE_8000_384000 |
222 SNDRV_PCM_RATE_KNOT),
223 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
224 SNDRV_PCM_FMTBIT_S24_LE |
225 SNDRV_PCM_FMTBIT_S24_3LE |
226 SNDRV_PCM_FMTBIT_S32_LE),
227 .channels_min = 1,
228 .channels_max = 8,
229 .rate_min = 8000,
230 .rate_max = 384000,
231 },
232 .ops = &msm_fe_Multimedia_dai_ops,
233 .compress_new = snd_soc_new_compress,
234 .name = "MultiMedia4",
235 .probe = fe_dai_probe,
236 },
237 {
238 .playback = {
239 .stream_name = "MultiMedia5 Playback",
240 .aif_name = "MM_DL5",
241 .rates = (SNDRV_PCM_RATE_8000_384000 |
242 SNDRV_PCM_RATE_KNOT),
243 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
244 SNDRV_PCM_FMTBIT_S24_LE |
245 SNDRV_PCM_FMTBIT_S24_3LE |
246 SNDRV_PCM_FMTBIT_S32_LE),
247 .channels_min = 1,
248 .channels_max = 8,
249 .rate_min = 8000,
250 .rate_max = 384000,
251 },
252 .capture = {
253 .stream_name = "MultiMedia5 Capture",
254 .aif_name = "MM_UL5",
255 .rates = (SNDRV_PCM_RATE_8000_48000|
256 SNDRV_PCM_RATE_KNOT),
257 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
258 SNDRV_PCM_FMTBIT_S24_LE |
259 SNDRV_PCM_FMTBIT_S24_3LE |
260 SNDRV_PCM_FMTBIT_S32_LE),
261 .channels_min = 1,
262 .channels_max = 8,
263 .rate_min = 8000,
264 .rate_max = 48000,
265 },
266 .ops = &msm_fe_Multimedia_dai_ops,
267 .name = "MultiMedia5",
268 .probe = fe_dai_probe,
269 },
270 {
271 .playback = {
272 .stream_name = "MultiMedia6 Playback",
273 .aif_name = "MM_DL6",
274 .rates = (SNDRV_PCM_RATE_8000_384000 |
275 SNDRV_PCM_RATE_KNOT),
276 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
277 SNDRV_PCM_FMTBIT_S24_LE |
278 SNDRV_PCM_FMTBIT_S24_3LE |
279 SNDRV_PCM_FMTBIT_S32_LE),
280 .channels_min = 1,
281 .channels_max = 8,
282 .rate_min = 8000,
283 .rate_max = 384000,
284 },
285 .capture = {
286 .stream_name = "MultiMedia6 Capture",
287 .aif_name = "MM_UL6",
288 .rates = (SNDRV_PCM_RATE_8000_48000|
289 SNDRV_PCM_RATE_KNOT),
290 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
291 SNDRV_PCM_FMTBIT_S24_LE |
292 SNDRV_PCM_FMTBIT_S24_3LE |
293 SNDRV_PCM_FMTBIT_S32_LE),
294 .channels_min = 1,
295 .channels_max = 8,
296 .rate_min = 8000,
297 .rate_max = 48000,
298 },
299 .ops = &msm_fe_Multimedia_dai_ops,
300 .name = "MultiMedia6",
301 .probe = fe_dai_probe,
302 },
303 {
304 .playback = {
305 .stream_name = "MultiMedia7 Playback",
306 .aif_name = "MM_DL7",
307 .rates = (SNDRV_PCM_RATE_8000_384000 |
308 SNDRV_PCM_RATE_KNOT),
309 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
310 SNDRV_PCM_FMTBIT_S24_LE |
311 SNDRV_PCM_FMTBIT_S24_3LE |
312 SNDRV_PCM_FMTBIT_S32_LE),
313 .channels_min = 1,
314 .channels_max = 8,
315 .rate_min = 8000,
316 .rate_max = 384000,
317 },
318 .ops = &msm_fe_Multimedia_dai_ops,
319 .compress_new = snd_soc_new_compress,
320 .name = "MultiMedia7",
321 .probe = fe_dai_probe,
322 },
323 {
324 .playback = {
325 .stream_name = "MultiMedia8 Playback",
326 .aif_name = "MM_DL8",
327 .rates = (SNDRV_PCM_RATE_8000_384000 |
328 SNDRV_PCM_RATE_KNOT),
329 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
330 SNDRV_PCM_FMTBIT_S24_LE |
331 SNDRV_PCM_FMTBIT_S24_3LE |
332 SNDRV_PCM_FMTBIT_S32_LE),
333 .channels_min = 1,
334 .channels_max = 8,
335 .rate_min = 8000,
336 .rate_max = 384000,
337 },
338 .capture = {
339 .stream_name = "MultiMedia8 Capture",
340 .aif_name = "MM_UL8",
341 .rates = (SNDRV_PCM_RATE_8000_48000|
342 SNDRV_PCM_RATE_KNOT),
343 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
344 SNDRV_PCM_FMTBIT_S24_LE |
345 SNDRV_PCM_FMTBIT_S24_3LE |
346 SNDRV_PCM_FMTBIT_S32_LE),
347 .channels_min = 1,
348 .channels_max = 8,
349 .rate_min = 8000,
350 .rate_max = 48000,
351 },
352 .ops = &msm_fe_Multimedia_dai_ops,
353 .name = "MultiMedia8",
354 .probe = fe_dai_probe,
355 },
356 /* FE DAIs created for hostless operation purpose */
357 {
358 .playback = {
359 .stream_name = "SLIMBUS0_HOSTLESS Playback",
360 .aif_name = "SLIM0_DL_HL",
361 .rates = SNDRV_PCM_RATE_8000_384000,
362 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
363 SNDRV_PCM_FMTBIT_S24_LE),
364 .channels_min = 1,
365 .channels_max = 8,
366 .rate_min = 8000,
367 .rate_max = 384000,
368 },
369 .capture = {
370 .stream_name = "SLIMBUS0_HOSTLESS Capture",
371 .aif_name = "SLIM0_UL_HL",
372 .rates = SNDRV_PCM_RATE_8000_96000,
373 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
374 SNDRV_PCM_FMTBIT_S24_LE |
375 SNDRV_PCM_FMTBIT_S32_LE),
376 .channels_min = 1,
377 .channels_max = 8,
378 .rate_min = 8000,
379 .rate_max = 384000,
380 },
381 .ops = &msm_fe_dai_ops,
382 .name = "SLIMBUS0_HOSTLESS",
383 .probe = fe_dai_probe,
384 },
385 {
386 .playback = {
387 .stream_name = "SLIMBUS1_HOSTLESS Playback",
388 .aif_name = "SLIM1_DL_HL",
389 .rates = SNDRV_PCM_RATE_8000_384000,
390 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
391 SNDRV_PCM_FMTBIT_S24_LE),
392 .channels_min = 1,
393 .channels_max = 2,
394 .rate_min = 8000,
395 .rate_max = 384000,
396 },
397 .capture = {
398 .stream_name = "SLIMBUS1_HOSTLESS Capture",
399 .aif_name = "SLIM1_UL_HL",
400 .rates = SNDRV_PCM_RATE_8000_48000,
401 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
402 SNDRV_PCM_FMTBIT_S24_LE),
403 .channels_min = 1,
404 .channels_max = 2,
405 .rate_min = 8000,
406 .rate_max = 48000,
407 },
408 .ops = &msm_fe_dai_ops,
409 .name = "SLIMBUS1_HOSTLESS",
410 .probe = fe_dai_probe,
411 },
412 {
413 .playback = {
414 .stream_name = "SLIMBUS3_HOSTLESS Playback",
415 .aif_name = "SLIM3_DL_HL",
416 .rates = SNDRV_PCM_RATE_8000_384000,
417 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
418 SNDRV_PCM_FMTBIT_S24_LE),
419 .channels_min = 1,
420 .channels_max = 2,
421 .rate_min = 8000,
422 .rate_max = 384000,
423 },
424 .capture = {
425 .stream_name = "SLIMBUS3_HOSTLESS Capture",
426 .aif_name = "SLIM3_UL_HL",
427 .rates = SNDRV_PCM_RATE_8000_48000,
428 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
429 SNDRV_PCM_FMTBIT_S24_LE),
430 .channels_min = 1,
431 .channels_max = 2,
432 .rate_min = 8000,
433 .rate_max = 48000,
434 },
435 .ops = &msm_fe_dai_ops,
436 .name = "SLIMBUS3_HOSTLESS",
437 .probe = fe_dai_probe,
438 },
439 {
440 .playback = {
441 .stream_name = "SLIMBUS4_HOSTLESS Playback",
442 .aif_name = "SLIM4_DL_HL",
443 .rates = SNDRV_PCM_RATE_8000_384000,
444 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
445 SNDRV_PCM_FMTBIT_S24_LE),
446 .channels_min = 1,
447 .channels_max = 2,
448 .rate_min = 8000,
449 .rate_max = 384000,
450 },
451 .capture = {
452 .stream_name = "SLIMBUS4_HOSTLESS Capture",
453 .aif_name = "SLIM4_UL_HL",
454 .rates = SNDRV_PCM_RATE_8000_48000,
455 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
456 SNDRV_PCM_FMTBIT_S24_LE),
457 .channels_min = 1,
458 .channels_max = 2,
459 .rate_min = 8000,
460 .rate_max = 48000,
461 },
462 .ops = &msm_fe_dai_ops,
463 .name = "SLIMBUS4_HOSTLESS",
464 .probe = fe_dai_probe,
465 },
466 {
467 .playback = {
468 .stream_name = "SLIMBUS6_HOSTLESS Playback",
469 .aif_name = "SLIM6_DL_HL",
470 .rates = SNDRV_PCM_RATE_8000_384000,
471 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
472 SNDRV_PCM_FMTBIT_S24_LE),
473 .channels_min = 1,
474 .channels_max = 8,
475 .rate_min = 8000,
476 .rate_max = 384000,
477 },
478 .ops = &msm_fe_dai_ops,
479 .name = "SLIMBUS6_HOSTLESS",
480 .probe = fe_dai_probe,
481 },
482 {
483 .playback = {
484 .stream_name = "SLIMBUS7_HOSTLESS Playback",
485 .aif_name = "SLIM7_DL_HL",
486 .rates = SNDRV_PCM_RATE_8000_384000,
487 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
488 SNDRV_PCM_FMTBIT_S24_LE),
489 .channels_min = 1,
490 .channels_max = 8,
491 .rate_min = 8000,
492 .rate_max = 384000,
493 },
494 .capture = {
495 .stream_name = "SLIMBUS7_HOSTLESS Capture",
496 .aif_name = "SLIM7_UL_HL",
497 .rates = SNDRV_PCM_RATE_8000_384000,
498 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
499 SNDRV_PCM_FMTBIT_S24_LE),
500 .channels_min = 1,
501 .channels_max = 8,
502 .rate_min = 8000,
503 .rate_max = 384000,
504 },
505 .ops = &msm_fe_dai_ops,
506 .name = "SLIMBUS7_HOSTLESS",
507 .probe = fe_dai_probe,
508 },
509 {
510 .playback = {
511 .stream_name = "SLIMBUS8_HOSTLESS Playback",
512 .aif_name = "SLIM8_DL_HL",
513 .rates = SNDRV_PCM_RATE_8000_384000,
514 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
515 SNDRV_PCM_FMTBIT_S24_LE),
516 .channels_min = 1,
517 .channels_max = 8,
518 .rate_min = 8000,
519 .rate_max = 384000,
520 },
521 .capture = {
522 .stream_name = "SLIMBUS8_HOSTLESS Capture",
523 .aif_name = "SLIM8_UL_HL",
524 .rates = SNDRV_PCM_RATE_8000_384000,
525 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
526 SNDRV_PCM_FMTBIT_S24_LE),
527 .channels_min = 1,
528 .channels_max = 8,
529 .rate_min = 8000,
530 .rate_max = 384000,
531 },
532 .ops = &msm_fe_dai_ops,
533 .name = "SLIMBUS8_HOSTLESS",
534 .probe = fe_dai_probe,
535 },
536 {
537 .playback = {
538 .stream_name = "INT_FM_HOSTLESS Playback",
539 .aif_name = "INTFM_DL_HL",
540 .rates = SNDRV_PCM_RATE_8000_48000,
541 .formats = SNDRV_PCM_FMTBIT_S16_LE,
542 .channels_min = 1,
543 .channels_max = 2,
544 .rate_min = 8000,
545 .rate_max = 48000,
546 },
547 .capture = {
548 .stream_name = "INT_FM_HOSTLESS Capture",
549 .aif_name = "INTFM_UL_HL",
550 .rates = SNDRV_PCM_RATE_8000_48000,
551 .formats = SNDRV_PCM_FMTBIT_S16_LE,
552 .channels_min = 1,
553 .channels_max = 2,
554 .rate_min = 8000,
555 .rate_max = 48000,
556 },
557 .ops = &msm_fe_dai_ops,
558 .name = "INT_FM_HOSTLESS",
559 .probe = fe_dai_probe,
560 },
561 {
562 .playback = {
563 .stream_name = "INT_HFP_BT Hostless Playback",
564 .aif_name = "INTHFP_DL_HL",
565 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
566 .formats = SNDRV_PCM_FMTBIT_S16_LE,
567 .channels_min = 1,
568 .channels_max = 2,
569 .rate_min = 8000,
570 .rate_max = 16000,
571 },
572 .capture = {
573 .stream_name = "INT_HFP_BT Hostless Capture",
574 .aif_name = "INTHFP_UL_HL",
575 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
576 .formats = SNDRV_PCM_FMTBIT_S16_LE,
577 .channels_min = 1,
578 .channels_max = 2,
579 .rate_min = 8000,
580 .rate_max = 16000,
581 },
582 .ops = &msm_fe_dai_ops,
583 .name = "INT_HFP_BT_HOSTLESS",
584 .probe = fe_dai_probe,
585 },
586 {
587 .playback = {
588 .stream_name = "USBAUDIO_HOSTLESS Playback",
589 .aif_name = "USBAUDIO_DL_HL",
590 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
591 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
592 SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
593 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
594 SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
595 SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
596 SNDRV_PCM_RATE_384000,
597 .formats = SNDRV_PCM_FMTBIT_S16_LE |
598 SNDRV_PCM_FMTBIT_S24_LE |
599 SNDRV_PCM_FMTBIT_S24_3LE |
600 SNDRV_PCM_FMTBIT_S32_LE,
601 .channels_min = 1,
602 .channels_max = 8,
603 .rate_min = 8000,
604 .rate_max = 384000,
605 },
606 .capture = {
607 .stream_name = "USBAUDIO_HOSTLESS Capture",
608 .aif_name = "USBAUDIO_UL_HL",
609 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
610 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
611 SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
612 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
613 SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
614 SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
615 SNDRV_PCM_RATE_384000,
616 .formats = SNDRV_PCM_FMTBIT_S16_LE |
617 SNDRV_PCM_FMTBIT_S24_LE |
618 SNDRV_PCM_FMTBIT_S24_3LE |
619 SNDRV_PCM_FMTBIT_S32_LE,
620 .channels_min = 1,
621 .channels_max = 8,
622 .rate_min = 8000,
623 .rate_max = 384000,
624 },
625 .ops = &msm_fe_dai_ops,
626 .name = "USBAUDIO_HOSTLESS",
627 .probe = fe_dai_probe,
628 },
629 {
630 .playback = {
631 .stream_name = "AFE Playback",
632 .aif_name = "PCM_RX",
633 .rates = (SNDRV_PCM_RATE_8000 |
634 SNDRV_PCM_RATE_16000 |
635 SNDRV_PCM_RATE_48000),
636 .formats = SNDRV_PCM_FMTBIT_S16_LE,
637 .channels_min = 1,
638 .channels_max = 2,
639 .rate_min = 8000,
640 .rate_max = 48000,
641 },
642 .capture = {
643 .stream_name = "AFE Capture",
644 .aif_name = "PCM_TX",
645 .rates = (SNDRV_PCM_RATE_8000 |
646 SNDRV_PCM_RATE_16000 |
647 SNDRV_PCM_RATE_48000),
648 .formats = SNDRV_PCM_FMTBIT_S16_LE,
649 .channels_min = 1,
650 .channels_max = 2,
651 .rate_min = 8000,
652 .rate_max = 48000,
653 },
654 .ops = &msm_fe_dai_ops,
655 .name = "AFE-PROXY",
656 .probe = fe_dai_probe,
657 },
658 {
659 .playback = {
660 .stream_name = "HDMI_HOSTLESS Playback",
661 .aif_name = "HDMI_DL_HL",
662 .rates = SNDRV_PCM_RATE_8000_48000,
663 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
664 SNDRV_PCM_FMTBIT_S24_LE),
665 .channels_min = 1,
666 .channels_max = 2,
667 .rate_min = 8000,
668 .rate_max = 48000,
669 },
670 .ops = &msm_fe_dai_ops,
671 .name = "HDMI_HOSTLESS",
672 .probe = fe_dai_probe,
673 },
674 {
675 .playback = {
676 .stream_name = "AUXPCM_HOSTLESS Playback",
677 .aif_name = "AUXPCM_DL_HL",
678 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
679 .formats = SNDRV_PCM_FMTBIT_S16_LE,
680 .channels_min = 1,
681 .channels_max = 1,
682 .rate_min = 8000,
683 .rate_max = 16000,
684 },
685 .capture = {
686 .stream_name = "AUXPCM_HOSTLESS Capture",
687 .aif_name = "AUXPCM_UL_HL",
688 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
689 .formats = SNDRV_PCM_FMTBIT_S16_LE,
690 .channels_min = 1,
691 .channels_max = 1,
692 .rate_min = 8000,
693 .rate_max = 16000,
694 },
695 .ops = &msm_fe_dai_ops,
696 .name = "AUXPCM_HOSTLESS",
697 .probe = fe_dai_probe,
698 },
699 {
700 .playback = {
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -0800701 .stream_name = "SEC_AUXPCM_HOSTLESS Playback",
702 .aif_name = "SEC_AUXPCM_DL_HL",
703 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
704 .formats = SNDRV_PCM_FMTBIT_S16_LE,
705 .channels_min = 1,
706 .channels_max = 1,
707 .rate_min = 8000,
708 .rate_max = 16000,
709 },
710 .ops = &msm_fe_dai_ops,
711 .name = "SEC_AUXPCM_RX_HOSTLESS",
712 .probe = fe_dai_probe,
713 },
714 {
715 .capture = {
716 .stream_name = "SEC_AUXPCM_HOSTLESS Capture",
717 .aif_name = "SEC_AUXPCM_UL_HL",
718 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
719 .formats = SNDRV_PCM_FMTBIT_S16_LE,
720 .channels_min = 1,
721 .channels_max = 1,
722 .rate_min = 8000,
723 .rate_max = 16000,
724 },
725 .ops = &msm_fe_dai_ops,
726 .name = "SEC_AUXPCM_TX_HOSTLESS",
727 .probe = fe_dai_probe,
728 },
729 {
730 .playback = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530731 .stream_name = "VOICE_STUB Playback",
732 .aif_name = "VOICE_STUB_DL",
733 .rates = SNDRV_PCM_RATE_8000_48000,
734 .formats = SNDRV_PCM_FMTBIT_S16_LE,
735 .channels_min = 1,
736 .channels_max = 2,
737 .rate_min = 8000,
738 .rate_max = 48000,
739 },
740 .capture = {
741 .stream_name = "VOICE_STUB Capture",
742 .aif_name = "VOICE_STUB_UL",
743 .rates = SNDRV_PCM_RATE_8000_48000,
744 .formats = SNDRV_PCM_FMTBIT_S16_LE,
745 .channels_min = 1,
746 .channels_max = 2,
747 .rate_min = 8000,
748 .rate_max = 48000,
749 },
750 .ops = &msm_fe_dai_ops,
751 .name = "VOICE_STUB",
752 .probe = fe_dai_probe,
753 },
754 {
755 .playback = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530756 .stream_name = "MI2S_RX_HOSTLESS Playback",
757 .aif_name = "MI2S_DL_HL",
758 .rates = SNDRV_PCM_RATE_8000_48000,
759 .formats = SNDRV_PCM_FMTBIT_S16_LE,
760 .channels_min = 1,
761 .channels_max = 2,
762 .rate_min = 8000,
763 .rate_max = 48000,
764 },
765 .capture = {
766 .stream_name = "MI2S_TX_HOSTLESS Capture",
767 .aif_name = "MI2S_UL_HL",
768 .rates = SNDRV_PCM_RATE_8000_48000,
769 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
770 SNDRV_PCM_FMTBIT_S24_LE),
771 .channels_min = 1,
772 .channels_max = 2,
773 .rate_min = 8000,
774 .rate_max = 48000,
775 },
776 .ops = &msm_fe_dai_ops,
777 .name = "MI2S_TX_HOSTLESS",
778 .probe = fe_dai_probe,
779 },
780 {
781 .playback = {
782 .stream_name = "SEC_I2S_RX_HOSTLESS Playback",
783 .aif_name = "SEC_I2S_DL_HL",
784 .rates = SNDRV_PCM_RATE_8000_48000,
785 .formats = SNDRV_PCM_FMTBIT_S16_LE,
786 .channels_min = 1,
787 .channels_max = 2,
788 .rate_min = 8000,
789 .rate_max = 48000,
790 },
791 .ops = &msm_fe_dai_ops,
792 .name = "SEC_I2S_RX_HOSTLESS",
793 .probe = fe_dai_probe,
794 },
795 {
796 .capture = {
797 .stream_name = "Primary MI2S_TX Hostless Capture",
798 .aif_name = "PRI_MI2S_UL_HL",
799 .rates = SNDRV_PCM_RATE_8000_48000,
800 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
801 SNDRV_PCM_FMTBIT_S24_LE),
802 .channels_min = 1,
803 .channels_max = 2,
804 .rate_min = 8000,
805 .rate_max = 48000,
806 },
807 .ops = &msm_fe_dai_ops,
808 .name = "PRI_MI2S_TX_HOSTLESS",
809 .probe = fe_dai_probe,
810 },
811 {
812 .playback = {
813 .stream_name = "Primary MI2S_RX Hostless Playback",
814 .aif_name = "PRI_MI2S_DL_HL",
815 .rates = SNDRV_PCM_RATE_8000_384000,
816 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
817 SNDRV_PCM_FMTBIT_S24_LE),
818 .channels_min = 1,
819 .channels_max = 2,
820 .rate_min = 8000,
821 .rate_max = 384000,
822 },
823 .ops = &msm_fe_dai_ops,
824 .name = "PRI_MI2S_RX_HOSTLESS",
825 .probe = fe_dai_probe,
826 },
827 {
828 .capture = {
829 .stream_name = "Secondary MI2S_TX Hostless Capture",
830 .aif_name = "SEC_MI2S_UL_HL",
831 .rates = SNDRV_PCM_RATE_8000_48000,
832 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
833 SNDRV_PCM_FMTBIT_S24_LE),
834 .channels_min = 1,
835 .channels_max = 2,
836 .rate_min = 8000,
837 .rate_max = 48000,
838 },
839 .ops = &msm_fe_dai_ops,
840 .name = "SEC_MI2S_TX_HOSTLESS",
841 .probe = fe_dai_probe,
842 },
843 {
844 .playback = {
845 .stream_name = "Secondary MI2S_RX Hostless Playback",
846 .aif_name = "SEC_MI2S_DL_HL",
847 .rates = SNDRV_PCM_RATE_8000_384000,
848 .formats = SNDRV_PCM_FMTBIT_S16_LE |
849 SNDRV_PCM_FMTBIT_S24_LE,
850 .channels_min = 1,
851 .channels_max = 2,
852 .rate_min = 8000,
853 .rate_max = 384000,
854 },
855 .ops = &msm_fe_dai_ops,
856 .name = "SEC_MI2S_RX_HOSTLESS",
857 .probe = fe_dai_probe,
858 },
859 {
860 .capture = {
861 .stream_name = "Tertiary MI2S_TX Hostless Capture",
862 .aif_name = "TERT_MI2S_UL_HL",
863 .rates = SNDRV_PCM_RATE_8000_48000,
864 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
865 SNDRV_PCM_FMTBIT_S24_LE),
866 .channels_min = 1,
867 .channels_max = 2,
868 .rate_min = 8000,
869 .rate_max = 48000,
870 },
871 .ops = &msm_fe_dai_ops,
872 .name = "TERT_MI2S_TX_HOSTLESS",
873 .probe = fe_dai_probe,
874 },
875 {
876 .playback = {
877 .stream_name = "Tertiary MI2S_RX Hostless Playback",
878 .aif_name = "TERT_MI2S_DL_HL",
879 .rates = SNDRV_PCM_RATE_8000_384000,
880 .formats = SNDRV_PCM_FMTBIT_S16_LE |
881 SNDRV_PCM_FMTBIT_S24_LE,
882 .channels_min = 1,
883 .channels_max = 2,
884 .rate_min = 8000,
885 .rate_max = 384000,
886 },
887 .ops = &msm_fe_dai_ops,
888 .name = "TERT_MI2S_RX_HOSTLESS",
889 .probe = fe_dai_probe,
890 },
891 {
892 .capture = {
893 .stream_name = "Quaternary MI2S_TX Hostless Capture",
894 .aif_name = "QUAT_MI2S_UL_HL",
895 .rates = SNDRV_PCM_RATE_8000_48000,
896 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
897 SNDRV_PCM_FMTBIT_S24_LE),
898 .channels_min = 1,
899 .channels_max = 2,
900 .rate_min = 8000,
901 .rate_max = 48000,
902 },
903 .ops = &msm_fe_dai_ops,
904 .name = "QUAT_MI2S_TX_HOSTLESS",
905 .probe = fe_dai_probe,
906 },
907 {
908 .playback = {
909 .stream_name = "Quaternary MI2S_RX Hostless Playback",
910 .aif_name = "QUAT_MI2S_DL_HL",
911 .rates = SNDRV_PCM_RATE_8000_384000,
912 .formats = SNDRV_PCM_FMTBIT_S16_LE |
913 SNDRV_PCM_FMTBIT_S24_LE,
914 .channels_min = 1,
915 .channels_max = 8,
916 .rate_min = 8000,
917 .rate_max = 384000,
918 },
919 .ops = &msm_fe_dai_ops,
920 .name = "QUAT_MI2S_RX_HOSTLESS",
921 .probe = fe_dai_probe,
922 },
923 {
924 .playback = {
925 .stream_name = "INT0 MI2S_RX Hostless Playback",
926 .aif_name = "INT0_MI2S_DL_HL",
927 .rates = SNDRV_PCM_RATE_8000_192000,
928 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
929 SNDRV_PCM_FMTBIT_S24_LE),
930 .channels_min = 1,
931 .channels_max = 2,
932 .rate_min = 8000,
933 .rate_max = 192000,
934 },
935 .ops = &msm_fe_dai_ops,
936 .name = "INT0_MI2S_RX_HOSTLESS",
937 .probe = fe_dai_probe,
938 },
939 {
940 .playback = {
941 .stream_name = "INT4 MI2S_RX Hostless Playback",
942 .aif_name = "INT4_MI2S_DL_HL",
943 .rates = SNDRV_PCM_RATE_8000_192000,
944 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
945 SNDRV_PCM_FMTBIT_S24_LE),
946 .channels_min = 1,
947 .channels_max = 4,
948 .rate_min = 8000,
949 .rate_max = 192000,
950 },
951 .ops = &msm_fe_dai_ops,
952 .name = "INT4_MI2S_RX_HOSTLESS",
953 .probe = fe_dai_probe,
954 },
955 {
956 .capture = {
957 .stream_name = "INT3 MI2S_TX Hostless Capture",
958 .aif_name = "INT3_MI2S_UL_HL",
959 .rates = SNDRV_PCM_RATE_8000_48000,
960 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
961 SNDRV_PCM_FMTBIT_S24_LE),
962 .channels_min = 1,
963 .channels_max = 2,
964 .rate_min = 8000,
965 .rate_max = 48000,
966 },
967 .ops = &msm_fe_dai_ops,
968 .name = "INT3_MI2S_TX_HOSTLESS",
969 .probe = fe_dai_probe,
970 },
971 /* TDM Hostless */
972 {
973 .capture = {
974 .stream_name = "Primary TDM0 Hostless Capture",
975 .aif_name = "PRI_TDM_TX_0_UL_HL",
976 .rates = SNDRV_PCM_RATE_8000_48000,
977 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
978 SNDRV_PCM_FMTBIT_S24_LE),
979 .channels_min = 1,
980 .channels_max = 8,
981 .rate_min = 8000,
982 .rate_max = 48000,
983 },
984 .ops = &msm_fe_dai_ops,
985 .name = "PRI_TDM_TX_0_HOSTLESS",
986 .probe = fe_dai_probe,
987 },
988 {
989 .playback = {
990 .stream_name = "Primary TDM0 Hostless Playback",
991 .aif_name = "PRI_TDM_RX_0_DL_HL",
992 .rates = SNDRV_PCM_RATE_8000_48000,
993 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
994 SNDRV_PCM_FMTBIT_S24_LE),
995 .channels_min = 1,
996 .channels_max = 8,
997 .rate_min = 8000,
998 .rate_max = 48000,
999 },
1000 .ops = &msm_fe_dai_ops,
1001 .name = "PRI_TDM_RX_0_HOSTLESS",
1002 .probe = fe_dai_probe,
1003 },
1004 {
1005 .capture = {
1006 .stream_name = "Primary TDM1 Hostless Capture",
1007 .aif_name = "PRI_TDM_TX_1_UL_HL",
1008 .rates = SNDRV_PCM_RATE_8000_48000,
1009 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1010 SNDRV_PCM_FMTBIT_S24_LE),
1011 .channels_min = 1,
1012 .channels_max = 8,
1013 .rate_min = 8000,
1014 .rate_max = 48000,
1015 },
1016 .ops = &msm_fe_dai_ops,
1017 .name = "PRI_TDM_TX_1_HOSTLESS",
1018 .probe = fe_dai_probe,
1019 },
1020 {
1021 .playback = {
1022 .stream_name = "Primary TDM1 Hostless Playback",
1023 .aif_name = "PRI_TDM_RX_1_DL_HL",
1024 .rates = SNDRV_PCM_RATE_8000_48000,
1025 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1026 SNDRV_PCM_FMTBIT_S24_LE),
1027 .channels_min = 1,
1028 .channels_max = 8,
1029 .rate_min = 8000,
1030 .rate_max = 48000,
1031 },
1032 .ops = &msm_fe_dai_ops,
1033 .name = "PRI_TDM_RX_1_HOSTLESS",
1034 .probe = fe_dai_probe,
1035 },
1036 {
1037 .capture = {
1038 .stream_name = "Primary TDM2 Hostless Capture",
1039 .aif_name = "PRI_TDM_TX_2_UL_HL",
1040 .rates = SNDRV_PCM_RATE_8000_48000,
1041 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1042 SNDRV_PCM_FMTBIT_S24_LE),
1043 .channels_min = 1,
1044 .channels_max = 8,
1045 .rate_min = 8000,
1046 .rate_max = 48000,
1047 },
1048 .ops = &msm_fe_dai_ops,
1049 .name = "PRI_TDM_TX_2_HOSTLESS",
1050 .probe = fe_dai_probe,
1051 },
1052 {
1053 .playback = {
1054 .stream_name = "Primary TDM2 Hostless Playback",
1055 .aif_name = "PRI_TDM_RX_2_DL_HL",
1056 .rates = SNDRV_PCM_RATE_8000_48000,
1057 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1058 SNDRV_PCM_FMTBIT_S24_LE),
1059 .channels_min = 1,
1060 .channels_max = 8,
1061 .rate_min = 8000,
1062 .rate_max = 48000,
1063 },
1064 .ops = &msm_fe_dai_ops,
1065 .name = "PRI_TDM_RX_2_HOSTLESS",
1066 .probe = fe_dai_probe,
1067 },
1068 {
1069 .capture = {
1070 .stream_name = "Primary TDM3 Hostless Capture",
1071 .aif_name = "PRI_TDM_TX_3_UL_HL",
1072 .rates = SNDRV_PCM_RATE_8000_48000,
1073 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1074 SNDRV_PCM_FMTBIT_S24_LE),
1075 .channels_min = 1,
1076 .channels_max = 8,
1077 .rate_min = 8000,
1078 .rate_max = 48000,
1079 },
1080 .ops = &msm_fe_dai_ops,
1081 .name = "PRI_TDM_TX_3_HOSTLESS",
1082 .probe = fe_dai_probe,
1083 },
1084 {
1085 .playback = {
1086 .stream_name = "Primary TDM3 Hostless Playback",
1087 .aif_name = "PRI_TDM_RX_3_DL_HL",
1088 .rates = SNDRV_PCM_RATE_8000_48000,
1089 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1090 SNDRV_PCM_FMTBIT_S24_LE),
1091 .channels_min = 1,
1092 .channels_max = 8,
1093 .rate_min = 8000,
1094 .rate_max = 48000,
1095 },
1096 .ops = &msm_fe_dai_ops,
1097 .name = "PRI_TDM_RX_3_HOSTLESS",
1098 .probe = fe_dai_probe,
1099 },
1100 {
1101 .capture = {
1102 .stream_name = "Primary TDM4 Hostless Capture",
1103 .aif_name = "PRI_TDM_TX_4_UL_HL",
1104 .rates = SNDRV_PCM_RATE_8000_48000,
1105 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1106 SNDRV_PCM_FMTBIT_S24_LE),
1107 .channels_min = 1,
1108 .channels_max = 8,
1109 .rate_min = 8000,
1110 .rate_max = 48000,
1111 },
1112 .ops = &msm_fe_dai_ops,
1113 .name = "PRI_TDM_TX_4_HOSTLESS",
1114 .probe = fe_dai_probe,
1115 },
1116 {
1117 .playback = {
1118 .stream_name = "Primary TDM4 Hostless Playback",
1119 .aif_name = "PRI_TDM_RX_4_DL_HL",
1120 .rates = SNDRV_PCM_RATE_8000_48000,
1121 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1122 SNDRV_PCM_FMTBIT_S24_LE),
1123 .channels_min = 1,
1124 .channels_max = 8,
1125 .rate_min = 8000,
1126 .rate_max = 48000,
1127 },
1128 .ops = &msm_fe_dai_ops,
1129 .name = "PRI_TDM_RX_4_HOSTLESS",
1130 .probe = fe_dai_probe,
1131 },
1132 {
1133 .capture = {
1134 .stream_name = "Primary TDM5 Hostless Capture",
1135 .aif_name = "PRI_TDM_TX_5_UL_HL",
1136 .rates = SNDRV_PCM_RATE_8000_48000,
1137 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1138 SNDRV_PCM_FMTBIT_S24_LE),
1139 .channels_min = 1,
1140 .channels_max = 8,
1141 .rate_min = 8000,
1142 .rate_max = 48000,
1143 },
1144 .ops = &msm_fe_dai_ops,
1145 .name = "PRI_TDM_TX_5_HOSTLESS",
1146 .probe = fe_dai_probe,
1147 },
1148 {
1149 .playback = {
1150 .stream_name = "Primary TDM5 Hostless Playback",
1151 .aif_name = "PRI_TDM_RX_5_DL_HL",
1152 .rates = SNDRV_PCM_RATE_8000_48000,
1153 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1154 SNDRV_PCM_FMTBIT_S24_LE),
1155 .channels_min = 1,
1156 .channels_max = 8,
1157 .rate_min = 8000,
1158 .rate_max = 48000,
1159 },
1160 .ops = &msm_fe_dai_ops,
1161 .name = "PRI_TDM_RX_5_HOSTLESS",
1162 .probe = fe_dai_probe,
1163 },
1164 {
1165 .capture = {
1166 .stream_name = "Primary TDM6 Hostless Capture",
1167 .aif_name = "PRI_TDM_TX_6_UL_HL",
1168 .rates = SNDRV_PCM_RATE_8000_48000,
1169 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1170 SNDRV_PCM_FMTBIT_S24_LE),
1171 .channels_min = 1,
1172 .channels_max = 8,
1173 .rate_min = 8000,
1174 .rate_max = 48000,
1175 },
1176 .ops = &msm_fe_dai_ops,
1177 .name = "PRI_TDM_TX_6_HOSTLESS",
1178 .probe = fe_dai_probe,
1179 },
1180 {
1181 .playback = {
1182 .stream_name = "Primary TDM6 Hostless Playback",
1183 .aif_name = "PRI_TDM_RX_6_DL_HL",
1184 .rates = SNDRV_PCM_RATE_8000_48000,
1185 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1186 SNDRV_PCM_FMTBIT_S24_LE),
1187 .channels_min = 1,
1188 .channels_max = 8,
1189 .rate_min = 8000,
1190 .rate_max = 48000,
1191 },
1192 .ops = &msm_fe_dai_ops,
1193 .name = "PRI_TDM_RX_6_HOSTLESS",
1194 .probe = fe_dai_probe,
1195 },
1196 {
1197 .capture = {
1198 .stream_name = "Primary TDM7 Hostless Capture",
1199 .aif_name = "PRI_TDM_TX_7_UL_HL",
1200 .rates = SNDRV_PCM_RATE_8000_48000,
1201 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1202 SNDRV_PCM_FMTBIT_S24_LE),
1203 .channels_min = 1,
1204 .channels_max = 8,
1205 .rate_min = 8000,
1206 .rate_max = 48000,
1207 },
1208 .ops = &msm_fe_dai_ops,
1209 .name = "PRI_TDM_TX_7_HOSTLESS",
1210 .probe = fe_dai_probe,
1211 },
1212 {
1213 .playback = {
1214 .stream_name = "Primary TDM7 Hostless Playback",
1215 .aif_name = "PRI_TDM_RX_7_DL_HL",
1216 .rates = SNDRV_PCM_RATE_8000_48000,
1217 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1218 SNDRV_PCM_FMTBIT_S24_LE),
1219 .channels_min = 1,
1220 .channels_max = 8,
1221 .rate_min = 8000,
1222 .rate_max = 48000,
1223 },
1224 .ops = &msm_fe_dai_ops,
1225 .name = "PRI_TDM_RX_7_HOSTLESS",
1226 .probe = fe_dai_probe,
1227 },
1228 {
1229 .capture = {
1230 .stream_name = "Secondary TDM0 Hostless Capture",
1231 .aif_name = "SEC_TDM_TX_0_UL_HL",
1232 .rates = SNDRV_PCM_RATE_8000_48000,
1233 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1234 SNDRV_PCM_FMTBIT_S24_LE),
1235 .channels_min = 1,
1236 .channels_max = 8,
1237 .rate_min = 8000,
1238 .rate_max = 48000,
1239 },
1240 .ops = &msm_fe_dai_ops,
1241 .name = "SEC_TDM_TX_0_HOSTLESS",
1242 .probe = fe_dai_probe,
1243 },
1244 {
1245 .playback = {
1246 .stream_name = "Secondary TDM0 Hostless Playback",
1247 .aif_name = "SEC_TDM_RX_0_DL_HL",
1248 .rates = SNDRV_PCM_RATE_8000_48000,
1249 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1250 SNDRV_PCM_FMTBIT_S24_LE),
1251 .channels_min = 1,
1252 .channels_max = 8,
1253 .rate_min = 8000,
1254 .rate_max = 48000,
1255 },
1256 .ops = &msm_fe_dai_ops,
1257 .name = "SEC_TDM_RX_0_HOSTLESS",
1258 .probe = fe_dai_probe,
1259 },
1260 {
1261 .capture = {
1262 .stream_name = "Secondary TDM1 Hostless Capture",
1263 .aif_name = "SEC_TDM_TX_1_UL_HL",
1264 .rates = SNDRV_PCM_RATE_8000_48000,
1265 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1266 SNDRV_PCM_FMTBIT_S24_LE),
1267 .channels_min = 1,
1268 .channels_max = 8,
1269 .rate_min = 8000,
1270 .rate_max = 48000,
1271 },
1272 .ops = &msm_fe_dai_ops,
1273 .name = "SEC_TDM_TX_1_HOSTLESS",
1274 .probe = fe_dai_probe,
1275 },
1276 {
1277 .playback = {
1278 .stream_name = "Secondary TDM1 Hostless Playback",
1279 .aif_name = "SEC_TDM_RX_1_DL_HL",
1280 .rates = SNDRV_PCM_RATE_8000_48000,
1281 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1282 SNDRV_PCM_FMTBIT_S24_LE),
1283 .channels_min = 1,
1284 .channels_max = 8,
1285 .rate_min = 8000,
1286 .rate_max = 48000,
1287 },
1288 .ops = &msm_fe_dai_ops,
1289 .name = "SEC_TDM_RX_1_HOSTLESS",
1290 .probe = fe_dai_probe,
1291 },
1292 {
1293 .capture = {
1294 .stream_name = "Secondary TDM2 Hostless Capture",
1295 .aif_name = "SEC_TDM_TX_2_UL_HL",
1296 .rates = SNDRV_PCM_RATE_8000_48000,
1297 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1298 SNDRV_PCM_FMTBIT_S24_LE),
1299 .channels_min = 1,
1300 .channels_max = 8,
1301 .rate_min = 8000,
1302 .rate_max = 48000,
1303 },
1304 .ops = &msm_fe_dai_ops,
1305 .name = "SEC_TDM_TX_2_HOSTLESS",
1306 .probe = fe_dai_probe,
1307 },
1308 {
1309 .playback = {
1310 .stream_name = "Secondary TDM2 Hostless Playback",
1311 .aif_name = "SEC_TDM_RX_2_DL_HL",
1312 .rates = SNDRV_PCM_RATE_8000_48000,
1313 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1314 SNDRV_PCM_FMTBIT_S24_LE),
1315 .channels_min = 1,
1316 .channels_max = 8,
1317 .rate_min = 8000,
1318 .rate_max = 48000,
1319 },
1320 .ops = &msm_fe_dai_ops,
1321 .name = "SEC_TDM_RX_2_HOSTLESS",
1322 .probe = fe_dai_probe,
1323 },
1324 {
1325 .capture = {
1326 .stream_name = "Secondary TDM3 Hostless Capture",
1327 .aif_name = "SEC_TDM_TX_3_UL_HL",
1328 .rates = SNDRV_PCM_RATE_8000_48000,
1329 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1330 SNDRV_PCM_FMTBIT_S24_LE),
1331 .channels_min = 1,
1332 .channels_max = 8,
1333 .rate_min = 8000,
1334 .rate_max = 48000,
1335 },
1336 .ops = &msm_fe_dai_ops,
1337 .name = "SEC_TDM_TX_3_HOSTLESS",
1338 .probe = fe_dai_probe,
1339 },
1340 {
1341 .playback = {
1342 .stream_name = "Secondary TDM3 Hostless Playback",
1343 .aif_name = "SEC_TDM_RX_3_DL_HL",
1344 .rates = SNDRV_PCM_RATE_8000_48000,
1345 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1346 SNDRV_PCM_FMTBIT_S24_LE),
1347 .channels_min = 1,
1348 .channels_max = 8,
1349 .rate_min = 8000,
1350 .rate_max = 48000,
1351 },
1352 .ops = &msm_fe_dai_ops,
1353 .name = "SEC_TDM_RX_3_HOSTLESS",
1354 .probe = fe_dai_probe,
1355 },
1356 {
1357 .capture = {
1358 .stream_name = "Secondary TDM4 Hostless Capture",
1359 .aif_name = "SEC_TDM_TX_4_UL_HL",
1360 .rates = SNDRV_PCM_RATE_8000_48000,
1361 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1362 SNDRV_PCM_FMTBIT_S24_LE),
1363 .channels_min = 1,
1364 .channels_max = 8,
1365 .rate_min = 8000,
1366 .rate_max = 48000,
1367 },
1368 .ops = &msm_fe_dai_ops,
1369 .name = "SEC_TDM_TX_4_HOSTLESS",
1370 .probe = fe_dai_probe,
1371 },
1372 {
1373 .playback = {
1374 .stream_name = "Secondary TDM4 Hostless Playback",
1375 .aif_name = "SEC_TDM_RX_4_DL_HL",
1376 .rates = SNDRV_PCM_RATE_8000_48000,
1377 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1378 SNDRV_PCM_FMTBIT_S24_LE),
1379 .channels_min = 1,
1380 .channels_max = 8,
1381 .rate_min = 8000,
1382 .rate_max = 48000,
1383 },
1384 .ops = &msm_fe_dai_ops,
1385 .name = "SEC_TDM_RX_4_HOSTLESS",
1386 .probe = fe_dai_probe,
1387 },
1388 {
1389 .capture = {
1390 .stream_name = "Secondary TDM5 Hostless Capture",
1391 .aif_name = "SEC_TDM_TX_5_UL_HL",
1392 .rates = SNDRV_PCM_RATE_8000_48000,
1393 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1394 SNDRV_PCM_FMTBIT_S24_LE),
1395 .channels_min = 1,
1396 .channels_max = 8,
1397 .rate_min = 8000,
1398 .rate_max = 48000,
1399 },
1400 .ops = &msm_fe_dai_ops,
1401 .name = "SEC_TDM_TX_5_HOSTLESS",
1402 .probe = fe_dai_probe,
1403 },
1404 {
1405 .playback = {
1406 .stream_name = "Secondary TDM5 Hostless Playback",
1407 .aif_name = "SEC_TDM_RX_5_DL_HL",
1408 .rates = SNDRV_PCM_RATE_8000_48000,
1409 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1410 SNDRV_PCM_FMTBIT_S24_LE),
1411 .channels_min = 1,
1412 .channels_max = 8,
1413 .rate_min = 8000,
1414 .rate_max = 48000,
1415 },
1416 .ops = &msm_fe_dai_ops,
1417 .name = "SEC_TDM_RX_5_HOSTLESS",
1418 .probe = fe_dai_probe,
1419 },
1420 {
1421 .capture = {
1422 .stream_name = "Secondary TDM6 Hostless Capture",
1423 .aif_name = "SEC_TDM_TX_6_UL_HL",
1424 .rates = SNDRV_PCM_RATE_8000_48000,
1425 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1426 SNDRV_PCM_FMTBIT_S24_LE),
1427 .channels_min = 1,
1428 .channels_max = 8,
1429 .rate_min = 8000,
1430 .rate_max = 48000,
1431 },
1432 .ops = &msm_fe_dai_ops,
1433 .name = "SEC_TDM_TX_6_HOSTLESS",
1434 .probe = fe_dai_probe,
1435 },
1436 {
1437 .playback = {
1438 .stream_name = "Secondary TDM6 Hostless Playback",
1439 .aif_name = "SEC_TDM_RX_6_DL_HL",
1440 .rates = SNDRV_PCM_RATE_8000_48000,
1441 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1442 SNDRV_PCM_FMTBIT_S24_LE),
1443 .channels_min = 1,
1444 .channels_max = 8,
1445 .rate_min = 8000,
1446 .rate_max = 48000,
1447 },
1448 .ops = &msm_fe_dai_ops,
1449 .name = "SEC_TDM_RX_6_HOSTLESS",
1450 .probe = fe_dai_probe,
1451 },
1452 {
1453 .capture = {
1454 .stream_name = "Secondary TDM7 Hostless Capture",
1455 .aif_name = "SEC_TDM_TX_7_UL_HL",
1456 .rates = SNDRV_PCM_RATE_8000_48000,
1457 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1458 SNDRV_PCM_FMTBIT_S24_LE),
1459 .channels_min = 1,
1460 .channels_max = 8,
1461 .rate_min = 8000,
1462 .rate_max = 48000,
1463 },
1464 .ops = &msm_fe_dai_ops,
1465 .name = "SEC_TDM_TX_7_HOSTLESS",
1466 .probe = fe_dai_probe,
1467 },
1468 {
1469 .playback = {
1470 .stream_name = "Secondary TDM7 Hostless Playback",
1471 .aif_name = "SEC_TDM_RX_7_DL_HL",
1472 .rates = SNDRV_PCM_RATE_8000_48000,
1473 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1474 SNDRV_PCM_FMTBIT_S24_LE),
1475 .channels_min = 1,
1476 .channels_max = 8,
1477 .rate_min = 8000,
1478 .rate_max = 48000,
1479 },
1480 .ops = &msm_fe_dai_ops,
1481 .name = "SEC_TDM_RX_7_HOSTLESS",
1482 .probe = fe_dai_probe,
1483 },
1484 {
1485 .capture = {
1486 .stream_name = "Tertiary TDM0 Hostless Capture",
1487 .aif_name = "TERT_TDM_TX_0_UL_HL",
1488 .rates = SNDRV_PCM_RATE_8000_48000,
1489 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1490 SNDRV_PCM_FMTBIT_S24_LE),
1491 .channels_min = 1,
1492 .channels_max = 8,
1493 .rate_min = 8000,
1494 .rate_max = 48000,
1495 },
1496 .ops = &msm_fe_dai_ops,
1497 .name = "TERT_TDM_TX_0_HOSTLESS",
1498 .probe = fe_dai_probe,
1499 },
1500 {
1501 .playback = {
1502 .stream_name = "Tertiary TDM0 Hostless Playback",
1503 .aif_name = "TERT_TDM_RX_0_DL_HL",
1504 .rates = SNDRV_PCM_RATE_8000_48000,
1505 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1506 SNDRV_PCM_FMTBIT_S24_LE),
1507 .channels_min = 1,
1508 .channels_max = 8,
1509 .rate_min = 8000,
1510 .rate_max = 48000,
1511 },
1512 .ops = &msm_fe_dai_ops,
1513 .name = "TERT_TDM_RX_0_HOSTLESS",
1514 .probe = fe_dai_probe,
1515 },
1516 {
1517 .capture = {
1518 .stream_name = "Tertiary TDM1 Hostless Capture",
1519 .aif_name = "TERT_TDM_TX_1_UL_HL",
1520 .rates = SNDRV_PCM_RATE_8000_48000,
1521 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1522 SNDRV_PCM_FMTBIT_S24_LE),
1523 .channels_min = 1,
1524 .channels_max = 8,
1525 .rate_min = 8000,
1526 .rate_max = 48000,
1527 },
1528 .ops = &msm_fe_dai_ops,
1529 .name = "TERT_TDM_TX_1_HOSTLESS",
1530 .probe = fe_dai_probe,
1531 },
1532 {
1533 .playback = {
1534 .stream_name = "Tertiary TDM1 Hostless Playback",
1535 .aif_name = "TERT_TDM_RX_1_DL_HL",
1536 .rates = SNDRV_PCM_RATE_8000_48000,
1537 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1538 SNDRV_PCM_FMTBIT_S24_LE),
1539 .channels_min = 1,
1540 .channels_max = 8,
1541 .rate_min = 8000,
1542 .rate_max = 48000,
1543 },
1544 .ops = &msm_fe_dai_ops,
1545 .name = "TERT_TDM_RX_1_HOSTLESS",
1546 .probe = fe_dai_probe,
1547 },
1548 {
1549 .capture = {
1550 .stream_name = "Tertiary TDM2 Hostless Capture",
1551 .aif_name = "TERT_TDM_TX_2_UL_HL",
1552 .rates = SNDRV_PCM_RATE_8000_48000,
1553 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1554 SNDRV_PCM_FMTBIT_S24_LE),
1555 .channels_min = 1,
1556 .channels_max = 8,
1557 .rate_min = 8000,
1558 .rate_max = 48000,
1559 },
1560 .ops = &msm_fe_dai_ops,
1561 .name = "TERT_TDM_TX_2_HOSTLESS",
1562 .probe = fe_dai_probe,
1563 },
1564 {
1565 .playback = {
1566 .stream_name = "Tertiary TDM2 Hostless Playback",
1567 .aif_name = "TERT_TDM_RX_2_DL_HL",
1568 .rates = SNDRV_PCM_RATE_8000_48000,
1569 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1570 SNDRV_PCM_FMTBIT_S24_LE),
1571 .channels_min = 1,
1572 .channels_max = 8,
1573 .rate_min = 8000,
1574 .rate_max = 48000,
1575 },
1576 .ops = &msm_fe_dai_ops,
1577 .name = "TERT_TDM_RX_2_HOSTLESS",
1578 .probe = fe_dai_probe,
1579 },
1580 {
1581 .capture = {
1582 .stream_name = "Tertiary TDM3 Hostless Capture",
1583 .aif_name = "TERT_TDM_TX_3_UL_HL",
1584 .rates = SNDRV_PCM_RATE_8000_48000,
1585 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1586 SNDRV_PCM_FMTBIT_S24_LE),
1587 .channels_min = 1,
1588 .channels_max = 8,
1589 .rate_min = 8000,
1590 .rate_max = 48000,
1591 },
1592 .ops = &msm_fe_dai_ops,
1593 .name = "TERT_TDM_TX_3_HOSTLESS",
1594 .probe = fe_dai_probe,
1595 },
1596 {
1597 .playback = {
1598 .stream_name = "Tertiary TDM3 Hostless Playback",
1599 .aif_name = "TERT_TDM_RX_3_DL_HL",
1600 .rates = SNDRV_PCM_RATE_8000_48000,
1601 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1602 SNDRV_PCM_FMTBIT_S24_LE),
1603 .channels_min = 1,
1604 .channels_max = 8,
1605 .rate_min = 8000,
1606 .rate_max = 48000,
1607 },
1608 .ops = &msm_fe_dai_ops,
1609 .name = "TERT_TDM_RX_3_HOSTLESS",
1610 .probe = fe_dai_probe,
1611 },
1612 {
1613 .capture = {
1614 .stream_name = "Tertiary TDM4 Hostless Capture",
1615 .aif_name = "TERT_TDM_TX_4_UL_HL",
1616 .rates = SNDRV_PCM_RATE_8000_48000,
1617 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1618 SNDRV_PCM_FMTBIT_S24_LE),
1619 .channels_min = 1,
1620 .channels_max = 8,
1621 .rate_min = 8000,
1622 .rate_max = 48000,
1623 },
1624 .ops = &msm_fe_dai_ops,
1625 .name = "TERT_TDM_TX_4_HOSTLESS",
1626 .probe = fe_dai_probe,
1627 },
1628 {
1629 .playback = {
1630 .stream_name = "Tertiary TDM4 Hostless Playback",
1631 .aif_name = "TERT_TDM_RX_4_DL_HL",
1632 .rates = SNDRV_PCM_RATE_8000_48000,
1633 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1634 SNDRV_PCM_FMTBIT_S24_LE),
1635 .channels_min = 1,
1636 .channels_max = 8,
1637 .rate_min = 8000,
1638 .rate_max = 48000,
1639 },
1640 .ops = &msm_fe_dai_ops,
1641 .name = "TERT_TDM_RX_4_HOSTLESS",
1642 .probe = fe_dai_probe,
1643 },
1644 {
1645 .capture = {
1646 .stream_name = "Tertiary TDM5 Hostless Capture",
1647 .aif_name = "TERT_TDM_TX_5_UL_HL",
1648 .rates = SNDRV_PCM_RATE_8000_48000,
1649 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1650 SNDRV_PCM_FMTBIT_S24_LE),
1651 .channels_min = 1,
1652 .channels_max = 8,
1653 .rate_min = 8000,
1654 .rate_max = 48000,
1655 },
1656 .ops = &msm_fe_dai_ops,
1657 .name = "TERT_TDM_TX_5_HOSTLESS",
1658 .probe = fe_dai_probe,
1659 },
1660 {
1661 .playback = {
1662 .stream_name = "Tertiary TDM5 Hostless Playback",
1663 .aif_name = "TERT_TDM_RX_5_DL_HL",
1664 .rates = SNDRV_PCM_RATE_8000_48000,
1665 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1666 SNDRV_PCM_FMTBIT_S24_LE),
1667 .channels_min = 1,
1668 .channels_max = 8,
1669 .rate_min = 8000,
1670 .rate_max = 48000,
1671 },
1672 .ops = &msm_fe_dai_ops,
1673 .name = "TERT_TDM_RX_5_HOSTLESS",
1674 .probe = fe_dai_probe,
1675 },
1676 {
1677 .capture = {
1678 .stream_name = "Tertiary TDM6 Hostless Capture",
1679 .aif_name = "TERT_TDM_TX_6_UL_HL",
1680 .rates = SNDRV_PCM_RATE_8000_48000,
1681 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1682 SNDRV_PCM_FMTBIT_S24_LE),
1683 .channels_min = 1,
1684 .channels_max = 8,
1685 .rate_min = 8000,
1686 .rate_max = 48000,
1687 },
1688 .ops = &msm_fe_dai_ops,
1689 .name = "TERT_TDM_TX_6_HOSTLESS",
1690 .probe = fe_dai_probe,
1691 },
1692 {
1693 .playback = {
1694 .stream_name = "Tertiary TDM6 Hostless Playback",
1695 .aif_name = "TERT_TDM_RX_6_DL_HL",
1696 .rates = SNDRV_PCM_RATE_8000_48000,
1697 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1698 SNDRV_PCM_FMTBIT_S24_LE),
1699 .channels_min = 1,
1700 .channels_max = 8,
1701 .rate_min = 8000,
1702 .rate_max = 48000,
1703 },
1704 .ops = &msm_fe_dai_ops,
1705 .name = "TERT_TDM_RX_6_HOSTLESS",
1706 .probe = fe_dai_probe,
1707 },
1708 {
1709 .capture = {
1710 .stream_name = "Tertiary TDM7 Hostless Capture",
1711 .aif_name = "TERT_TDM_TX_7_UL_HL",
1712 .rates = SNDRV_PCM_RATE_8000_48000,
1713 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1714 SNDRV_PCM_FMTBIT_S24_LE),
1715 .channels_min = 1,
1716 .channels_max = 8,
1717 .rate_min = 8000,
1718 .rate_max = 48000,
1719 },
1720 .ops = &msm_fe_dai_ops,
1721 .name = "TERT_TDM_TX_7_HOSTLESS",
1722 .probe = fe_dai_probe,
1723 },
1724 {
1725 .playback = {
1726 .stream_name = "Tertiary TDM7 Hostless Playback",
1727 .aif_name = "TERT_TDM_RX_7_DL_HL",
1728 .rates = SNDRV_PCM_RATE_8000_48000,
1729 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1730 SNDRV_PCM_FMTBIT_S24_LE),
1731 .channels_min = 1,
1732 .channels_max = 8,
1733 .rate_min = 8000,
1734 .rate_max = 48000,
1735 },
1736 .ops = &msm_fe_dai_ops,
1737 .name = "TERT_TDM_RX_7_HOSTLESS",
1738 .probe = fe_dai_probe,
1739 },
1740 {
1741 .capture = {
1742 .stream_name = "Quaternary TDM0 Hostless Capture",
1743 .aif_name = "QUAT_TDM_TX_0_UL_HL",
1744 .rates = SNDRV_PCM_RATE_8000_48000,
1745 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1746 SNDRV_PCM_FMTBIT_S24_LE),
1747 .channels_min = 1,
1748 .channels_max = 8,
1749 .rate_min = 8000,
1750 .rate_max = 48000,
1751 },
1752 .ops = &msm_fe_dai_ops,
1753 .name = "QUAT_TDM_TX_0_HOSTLESS",
1754 .probe = fe_dai_probe,
1755 },
1756 {
1757 .playback = {
1758 .stream_name = "Quaternary TDM0 Hostless Playback",
1759 .aif_name = "QUAT_TDM_RX_0_DL_HL",
1760 .rates = SNDRV_PCM_RATE_8000_48000,
1761 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1762 SNDRV_PCM_FMTBIT_S24_LE),
1763 .channels_min = 1,
1764 .channels_max = 8,
1765 .rate_min = 8000,
1766 .rate_max = 48000,
1767 },
1768 .ops = &msm_fe_dai_ops,
1769 .name = "QUAT_TDM_RX_0_HOSTLESS",
1770 .probe = fe_dai_probe,
1771 },
1772 {
1773 .capture = {
1774 .stream_name = "Quaternary TDM1 Hostless Capture",
1775 .aif_name = "QUAT_TDM_TX_1_UL_HL",
1776 .rates = SNDRV_PCM_RATE_8000_48000,
1777 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1778 SNDRV_PCM_FMTBIT_S24_LE),
1779 .channels_min = 1,
1780 .channels_max = 8,
1781 .rate_min = 8000,
1782 .rate_max = 48000,
1783 },
1784 .ops = &msm_fe_dai_ops,
1785 .name = "QUAT_TDM_TX_1_HOSTLESS",
1786 .probe = fe_dai_probe,
1787 },
1788 {
1789 .playback = {
1790 .stream_name = "Quaternary TDM1 Hostless Playback",
1791 .aif_name = "QUAT_TDM_RX_1_DL_HL",
1792 .rates = SNDRV_PCM_RATE_8000_48000,
1793 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1794 SNDRV_PCM_FMTBIT_S24_LE),
1795 .channels_min = 1,
1796 .channels_max = 8,
1797 .rate_min = 8000,
1798 .rate_max = 48000,
1799 },
1800 .ops = &msm_fe_dai_ops,
1801 .name = "QUAT_TDM_RX_1_HOSTLESS",
1802 .probe = fe_dai_probe,
1803 },
1804 {
1805 .capture = {
1806 .stream_name = "Quaternary TDM2 Hostless Capture",
1807 .aif_name = "QUAT_TDM_TX_2_UL_HL",
1808 .rates = SNDRV_PCM_RATE_8000_48000,
1809 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1810 SNDRV_PCM_FMTBIT_S24_LE),
1811 .channels_min = 1,
1812 .channels_max = 8,
1813 .rate_min = 8000,
1814 .rate_max = 48000,
1815 },
1816 .ops = &msm_fe_dai_ops,
1817 .name = "QUAT_TDM_TX_2_HOSTLESS",
1818 .probe = fe_dai_probe,
1819 },
1820 {
1821 .playback = {
1822 .stream_name = "Quaternary TDM2 Hostless Playback",
1823 .aif_name = "QUAT_TDM_RX_2_DL_HL",
1824 .rates = SNDRV_PCM_RATE_8000_48000,
1825 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1826 SNDRV_PCM_FMTBIT_S24_LE),
1827 .channels_min = 1,
1828 .channels_max = 8,
1829 .rate_min = 8000,
1830 .rate_max = 48000,
1831 },
1832 .ops = &msm_fe_dai_ops,
1833 .name = "QUAT_TDM_RX_2_HOSTLESS",
1834 .probe = fe_dai_probe,
1835 },
1836 {
1837 .capture = {
1838 .stream_name = "Quaternary TDM3 Hostless Capture",
1839 .aif_name = "QUAT_TDM_TX_3_UL_HL",
1840 .rates = SNDRV_PCM_RATE_8000_48000,
1841 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1842 SNDRV_PCM_FMTBIT_S24_LE),
1843 .channels_min = 1,
1844 .channels_max = 8,
1845 .rate_min = 8000,
1846 .rate_max = 48000,
1847 },
1848 .ops = &msm_fe_dai_ops,
1849 .name = "QUAT_TDM_TX_3_HOSTLESS",
1850 .probe = fe_dai_probe,
1851 },
1852 {
1853 .playback = {
1854 .stream_name = "Quaternary TDM3 Hostless Playback",
1855 .aif_name = "QUAT_TDM_RX_3_DL_HL",
1856 .rates = SNDRV_PCM_RATE_8000_48000,
1857 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1858 SNDRV_PCM_FMTBIT_S24_LE),
1859 .channels_min = 1,
1860 .channels_max = 8,
1861 .rate_min = 8000,
1862 .rate_max = 48000,
1863 },
1864 .ops = &msm_fe_dai_ops,
1865 .name = "QUAT_TDM_RX_3_HOSTLESS",
1866 .probe = fe_dai_probe,
1867 },
1868 {
1869 .capture = {
1870 .stream_name = "Quaternary TDM4 Hostless Capture",
1871 .aif_name = "QUAT_TDM_TX_4_UL_HL",
1872 .rates = SNDRV_PCM_RATE_8000_48000,
1873 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1874 SNDRV_PCM_FMTBIT_S24_LE),
1875 .channels_min = 1,
1876 .channels_max = 8,
1877 .rate_min = 8000,
1878 .rate_max = 48000,
1879 },
1880 .ops = &msm_fe_dai_ops,
1881 .name = "QUAT_TDM_TX_4_HOSTLESS",
1882 .probe = fe_dai_probe,
1883 },
1884 {
1885 .playback = {
1886 .stream_name = "Quaternary TDM4 Hostless Playback",
1887 .aif_name = "QUAT_TDM_RX_4_DL_HL",
1888 .rates = SNDRV_PCM_RATE_8000_48000,
1889 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1890 SNDRV_PCM_FMTBIT_S24_LE),
1891 .channels_min = 1,
1892 .channels_max = 8,
1893 .rate_min = 8000,
1894 .rate_max = 48000,
1895 },
1896 .ops = &msm_fe_dai_ops,
1897 .name = "QUAT_TDM_RX_4_HOSTLESS",
1898 .probe = fe_dai_probe,
1899 },
1900 {
1901 .capture = {
1902 .stream_name = "Quaternary TDM5 Hostless Capture",
1903 .aif_name = "QUAT_TDM_TX_5_UL_HL",
1904 .rates = SNDRV_PCM_RATE_8000_48000,
1905 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1906 SNDRV_PCM_FMTBIT_S24_LE),
1907 .channels_min = 1,
1908 .channels_max = 8,
1909 .rate_min = 8000,
1910 .rate_max = 48000,
1911 },
1912 .ops = &msm_fe_dai_ops,
1913 .name = "QUAT_TDM_TX_5_HOSTLESS",
1914 .probe = fe_dai_probe,
1915 },
1916 {
1917 .playback = {
1918 .stream_name = "Quaternary TDM5 Hostless Playback",
1919 .aif_name = "QUAT_TDM_RX_5_DL_HL",
1920 .rates = SNDRV_PCM_RATE_8000_48000,
1921 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1922 SNDRV_PCM_FMTBIT_S24_LE),
1923 .channels_min = 1,
1924 .channels_max = 8,
1925 .rate_min = 8000,
1926 .rate_max = 48000,
1927 },
1928 .ops = &msm_fe_dai_ops,
1929 .name = "QUAT_TDM_RX_5_HOSTLESS",
1930 .probe = fe_dai_probe,
1931 },
1932 {
1933 .capture = {
1934 .stream_name = "Quaternary TDM6 Hostless Capture",
1935 .aif_name = "QUAT_TDM_TX_6_UL_HL",
1936 .rates = SNDRV_PCM_RATE_8000_48000,
1937 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1938 SNDRV_PCM_FMTBIT_S24_LE),
1939 .channels_min = 1,
1940 .channels_max = 8,
1941 .rate_min = 8000,
1942 .rate_max = 48000,
1943 },
1944 .ops = &msm_fe_dai_ops,
1945 .name = "QUAT_TDM_TX_6_HOSTLESS",
1946 .probe = fe_dai_probe,
1947 },
1948 {
1949 .playback = {
1950 .stream_name = "Quaternary TDM6 Hostless Playback",
1951 .aif_name = "QUAT_TDM_RX_6_DL_HL",
1952 .rates = SNDRV_PCM_RATE_8000_48000,
1953 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1954 SNDRV_PCM_FMTBIT_S24_LE),
1955 .channels_min = 1,
1956 .channels_max = 8,
1957 .rate_min = 8000,
1958 .rate_max = 48000,
1959 },
1960 .ops = &msm_fe_dai_ops,
1961 .name = "QUAT_TDM_RX_6_HOSTLESS",
1962 .probe = fe_dai_probe,
1963 },
1964 {
1965 .capture = {
1966 .stream_name = "Quaternary TDM7 Hostless Capture",
1967 .aif_name = "QUAT_TDM_TX_7_UL_HL",
1968 .rates = SNDRV_PCM_RATE_8000_48000,
1969 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1970 SNDRV_PCM_FMTBIT_S24_LE),
1971 .channels_min = 1,
1972 .channels_max = 8,
1973 .rate_min = 8000,
1974 .rate_max = 48000,
1975 },
1976 .ops = &msm_fe_dai_ops,
1977 .name = "QUAT_TDM_TX_7_HOSTLESS",
1978 .probe = fe_dai_probe,
1979 },
1980 {
1981 .playback = {
1982 .stream_name = "Quaternary TDM7 Hostless Playback",
1983 .aif_name = "QUAT_TDM_RX_7_DL_HL",
1984 .rates = SNDRV_PCM_RATE_8000_48000,
1985 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1986 SNDRV_PCM_FMTBIT_S24_LE),
1987 .channels_min = 1,
1988 .channels_max = 8,
1989 .rate_min = 8000,
1990 .rate_max = 48000,
1991 },
1992 .ops = &msm_fe_dai_ops,
1993 .name = "QUAT_TDM_RX_7_HOSTLESS",
1994 .probe = fe_dai_probe,
1995 },
1996 {
1997 .playback = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301998 .stream_name = "DTMF_RX_HOSTLESS Playback",
1999 .aif_name = "DTMF_DL_HL",
2000 .rates = SNDRV_PCM_RATE_8000_48000,
2001 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2002 .channels_min = 1,
2003 .channels_max = 2,
2004 .rate_min = 8000,
2005 .rate_max = 48000,
2006 },
2007 .ops = &msm_fe_dai_ops,
2008 .name = "DTMF_RX_HOSTLESS",
2009 .probe = fe_dai_probe,
2010 },
2011 {
2012 .capture = {
2013 .stream_name = "CPE Listen Audio capture",
2014 .aif_name = "CPE_LSM_UL_HL",
2015 .rates = SNDRV_PCM_RATE_8000_48000,
2016 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2017 SNDRV_PCM_FMTBIT_S24_LE),
2018 .channels_min = 1,
2019 .channels_max = 1,
2020 .rate_min = 8000,
2021 .rate_max = 48000,
2022 },
2023 .ops = &msm_fe_dai_ops,
2024 .name = "CPE_LSM_NOHOST",
2025 },
2026 {
2027 .playback = {
2028 .stream_name = "VOLTE_STUB Playback",
2029 .aif_name = "VOLTE_STUB_DL",
2030 .rates = SNDRV_PCM_RATE_8000_48000,
2031 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2032 .channels_min = 1,
2033 .channels_max = 2,
2034 .rate_min = 8000,
2035 .rate_max = 48000,
2036 },
2037 .capture = {
2038 .stream_name = "VOLTE_STUB Capture",
2039 .aif_name = "VOLTE_STUB_UL",
2040 .rates = SNDRV_PCM_RATE_8000_48000,
2041 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2042 .channels_min = 1,
2043 .channels_max = 2,
2044 .rate_min = 8000,
2045 .rate_max = 48000,
2046 },
2047 .ops = &msm_fe_dai_ops,
2048 .name = "VOLTE_STUB",
2049 .probe = fe_dai_probe,
2050 },
2051 {
2052 .playback = {
2053 .stream_name = "VOICE2_STUB Playback",
2054 .aif_name = "VOICE2_STUB_DL",
2055 .rates = SNDRV_PCM_RATE_8000_48000,
2056 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2057 .channels_min = 1,
2058 .channels_max = 2,
2059 .rate_min = 8000,
2060 .rate_max = 48000,
2061 },
2062 .capture = {
2063 .stream_name = "VOICE2_STUB Capture",
2064 .aif_name = "VOICE2_STUB_UL",
2065 .rates = SNDRV_PCM_RATE_8000_48000,
2066 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2067 .channels_min = 1,
2068 .channels_max = 2,
2069 .rate_min = 8000,
2070 .rate_max = 48000,
2071 },
2072 .ops = &msm_fe_dai_ops,
2073 .name = "VOICE2_STUB",
2074 .probe = fe_dai_probe,
2075 },
2076 {
2077 .playback = {
2078 .stream_name = "MultiMedia9 Playback",
2079 .aif_name = "MM_DL9",
2080 .rates = (SNDRV_PCM_RATE_8000_384000|
2081 SNDRV_PCM_RATE_KNOT),
2082 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2083 SNDRV_PCM_FMTBIT_S24_LE |
2084 SNDRV_PCM_FMTBIT_S24_3LE),
2085 .channels_min = 1,
2086 .channels_max = 8,
2087 .rate_min = 8000,
2088 .rate_max = 384000,
2089 },
2090 .capture = {
2091 .stream_name = "MultiMedia9 Capture",
2092 .aif_name = "MM_UL9",
2093 .rates = (SNDRV_PCM_RATE_8000_48000|
2094 SNDRV_PCM_RATE_KNOT),
2095 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2096 .channels_min = 1,
2097 .channels_max = 8,
2098 .rate_min = 8000,
2099 .rate_max = 48000,
2100 },
2101 .ops = &msm_fe_Multimedia_dai_ops,
2102 .name = "MultiMedia9",
2103 .probe = fe_dai_probe,
2104 },
2105 {
2106 .playback = {
2107 .stream_name = "QCHAT Playback",
2108 .aif_name = "QCHAT_DL",
2109 .rates = SNDRV_PCM_RATE_8000_48000,
2110 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2111 .channels_min = 1,
2112 .channels_max = 2,
2113 .rate_min = 8000,
2114 .rate_max = 48000,
2115 },
2116 .capture = {
2117 .stream_name = "QCHAT Capture",
2118 .aif_name = "QCHAT_UL",
2119 .rates = SNDRV_PCM_RATE_8000_48000,
2120 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2121 .channels_min = 1,
2122 .channels_max = 2,
2123 .rate_min = 8000,
2124 .rate_max = 48000,
2125 },
2126 .ops = &msm_fe_dai_ops,
2127 .name = "QCHAT",
2128 .probe = fe_dai_probe,
2129 },
2130 {
2131 .capture = {
2132 .stream_name = "Listen 1 Audio Service Capture",
2133 .aif_name = "LSM1_UL_HL",
2134 .rates = (SNDRV_PCM_RATE_16000 |
2135 SNDRV_PCM_RATE_48000),
2136 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2137 SNDRV_PCM_FMTBIT_S24_LE),
2138 .channels_min = 1,
2139 .channels_max = 4,
2140 .rate_min = 16000,
2141 .rate_max = 48000,
2142 },
2143 .ops = &msm_fe_dai_ops,
2144 .name = "LSM1",
2145 .probe = fe_dai_probe,
2146 },
2147 {
2148 .capture = {
2149 .stream_name = "Listen 2 Audio Service Capture",
2150 .aif_name = "LSM2_UL_HL",
2151 .rates = (SNDRV_PCM_RATE_16000 |
2152 SNDRV_PCM_RATE_48000),
2153 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2154 SNDRV_PCM_FMTBIT_S24_LE),
2155 .channels_min = 1,
2156 .channels_max = 4,
2157 .rate_min = 16000,
2158 .rate_max = 48000,
2159 },
2160 .ops = &msm_fe_dai_ops,
2161 .name = "LSM2",
2162 .probe = fe_dai_probe,
2163 },
2164 {
2165 .capture = {
2166 .stream_name = "Listen 3 Audio Service Capture",
2167 .aif_name = "LSM3_UL_HL",
2168 .rates = (SNDRV_PCM_RATE_16000 |
2169 SNDRV_PCM_RATE_48000),
2170 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2171 SNDRV_PCM_FMTBIT_S24_LE),
2172 .channels_min = 1,
2173 .channels_max = 4,
2174 .rate_min = 16000,
2175 .rate_max = 48000,
2176 },
2177 .ops = &msm_fe_dai_ops,
2178 .name = "LSM3",
2179 .probe = fe_dai_probe,
2180 },
2181 {
2182 .capture = {
2183 .stream_name = "Listen 4 Audio Service Capture",
2184 .aif_name = "LSM4_UL_HL",
2185 .rates = (SNDRV_PCM_RATE_16000 |
2186 SNDRV_PCM_RATE_48000),
2187 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2188 SNDRV_PCM_FMTBIT_S24_LE),
2189 .channels_min = 1,
2190 .channels_max = 4,
2191 .rate_min = 16000,
2192 .rate_max = 48000,
2193 },
2194 .ops = &msm_fe_dai_ops,
2195 .name = "LSM4",
2196 .probe = fe_dai_probe,
2197 },
2198 {
2199 .capture = {
2200 .stream_name = "Listen 5 Audio Service Capture",
2201 .aif_name = "LSM5_UL_HL",
2202 .rates = (SNDRV_PCM_RATE_16000 |
2203 SNDRV_PCM_RATE_48000),
2204 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2205 SNDRV_PCM_FMTBIT_S24_LE),
2206 .channels_min = 1,
2207 .channels_max = 4,
2208 .rate_min = 16000,
2209 .rate_max = 48000,
2210 },
2211 .ops = &msm_fe_dai_ops,
2212 .name = "LSM5",
2213 .probe = fe_dai_probe,
2214 },
2215 {
2216 .capture = {
2217 .stream_name = "Listen 6 Audio Service Capture",
2218 .aif_name = "LSM6_UL_HL",
2219 .rates = (SNDRV_PCM_RATE_16000 |
2220 SNDRV_PCM_RATE_48000),
2221 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2222 SNDRV_PCM_FMTBIT_S24_LE),
2223 .channels_min = 1,
2224 .channels_max = 4,
2225 .rate_min = 16000,
2226 .rate_max = 48000,
2227 },
2228 .ops = &msm_fe_dai_ops,
2229 .name = "LSM6",
2230 .probe = fe_dai_probe,
2231 },
2232 {
2233 .capture = {
2234 .stream_name = "Listen 7 Audio Service Capture",
2235 .aif_name = "LSM7_UL_HL",
2236 .rates = (SNDRV_PCM_RATE_16000 |
2237 SNDRV_PCM_RATE_48000),
2238 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2239 SNDRV_PCM_FMTBIT_S24_LE),
2240 .channels_min = 1,
2241 .channels_max = 4,
2242 .rate_min = 16000,
2243 .rate_max = 48000,
2244 },
2245 .ops = &msm_fe_dai_ops,
2246 .name = "LSM7",
2247 .probe = fe_dai_probe,
2248 },
2249 {
2250 .capture = {
2251 .stream_name = "Listen 8 Audio Service Capture",
2252 .aif_name = "LSM8_UL_HL",
2253 .rates = (SNDRV_PCM_RATE_16000 |
2254 SNDRV_PCM_RATE_48000),
2255 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2256 SNDRV_PCM_FMTBIT_S24_LE),
2257 .channels_min = 1,
2258 .channels_max = 4,
2259 .rate_min = 16000,
2260 .rate_max = 48000,
2261 },
2262 .ops = &msm_fe_dai_ops,
2263 .name = "LSM8",
2264 .probe = fe_dai_probe,
2265 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302266 /* FE DAIs created for multiple instances of offload playback */
2267 {
2268 .playback = {
2269 .stream_name = "MultiMedia10 Playback",
2270 .aif_name = "MM_DL10",
2271 .rates = (SNDRV_PCM_RATE_8000_384000 |
2272 SNDRV_PCM_RATE_KNOT),
2273 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2274 SNDRV_PCM_FMTBIT_S24_LE |
2275 SNDRV_PCM_FMTBIT_S24_3LE |
2276 SNDRV_PCM_FMTBIT_S32_LE),
2277 .channels_min = 1,
2278 .channels_max = 8,
2279 .rate_min = 8000,
2280 .rate_max = 384000,
2281 },
Laxminath Kasam38070be2017-08-17 18:21:59 +05302282 .capture = {
2283 .stream_name = "MultiMedia10 Capture",
2284 .aif_name = "MM_UL10",
2285 .rates = (SNDRV_PCM_RATE_8000_48000 |
2286 SNDRV_PCM_RATE_KNOT),
2287 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2288 SNDRV_PCM_FMTBIT_S24_LE |
2289 SNDRV_PCM_FMTBIT_S24_3LE),
2290 .channels_min = 1,
2291 .channels_max = 8,
2292 .rate_min = 8000,
2293 .rate_max = 48000,
2294 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302295 .ops = &msm_fe_Multimedia_dai_ops,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302296 .name = "MultiMedia10",
2297 .probe = fe_dai_probe,
2298 },
2299 {
2300 .playback = {
2301 .stream_name = "MultiMedia11 Playback",
2302 .aif_name = "MM_DL11",
2303 .rates = (SNDRV_PCM_RATE_8000_384000 |
2304 SNDRV_PCM_RATE_KNOT),
2305 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2306 SNDRV_PCM_FMTBIT_S24_LE |
2307 SNDRV_PCM_FMTBIT_S24_3LE |
2308 SNDRV_PCM_FMTBIT_S32_LE),
2309 .channels_min = 1,
2310 .channels_max = 8,
2311 .rate_min = 8000,
2312 .rate_max = 384000,
2313 },
2314 .ops = &msm_fe_Multimedia_dai_ops,
2315 .compress_new = snd_soc_new_compress,
2316 .name = "MultiMedia11",
2317 .probe = fe_dai_probe,
2318 },
2319 {
2320 .playback = {
2321 .stream_name = "MultiMedia12 Playback",
2322 .aif_name = "MM_DL12",
2323 .rates = (SNDRV_PCM_RATE_8000_384000 |
2324 SNDRV_PCM_RATE_KNOT),
2325 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2326 SNDRV_PCM_FMTBIT_S24_LE |
2327 SNDRV_PCM_FMTBIT_S24_3LE |
2328 SNDRV_PCM_FMTBIT_S32_LE),
2329 .channels_min = 1,
2330 .channels_max = 8,
2331 .rate_min = 8000,
2332 .rate_max = 384000,
2333 },
2334 .ops = &msm_fe_Multimedia_dai_ops,
2335 .compress_new = snd_soc_new_compress,
2336 .name = "MultiMedia12",
2337 .probe = fe_dai_probe,
2338 },
2339 {
2340 .playback = {
2341 .stream_name = "MultiMedia13 Playback",
2342 .aif_name = "MM_DL13",
2343 .rates = (SNDRV_PCM_RATE_8000_384000 |
2344 SNDRV_PCM_RATE_KNOT),
2345 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2346 SNDRV_PCM_FMTBIT_S24_LE |
2347 SNDRV_PCM_FMTBIT_S24_3LE |
2348 SNDRV_PCM_FMTBIT_S32_LE),
2349 .channels_min = 1,
2350 .channels_max = 8,
2351 .rate_min = 8000,
2352 .rate_max = 384000,
2353 },
2354 .ops = &msm_fe_Multimedia_dai_ops,
2355 .compress_new = snd_soc_new_compress,
2356 .name = "MultiMedia13",
2357 .probe = fe_dai_probe,
2358 },
2359 {
2360 .playback = {
2361 .stream_name = "MultiMedia14 Playback",
2362 .aif_name = "MM_DL14",
2363 .rates = (SNDRV_PCM_RATE_8000_384000 |
2364 SNDRV_PCM_RATE_KNOT),
2365 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2366 SNDRV_PCM_FMTBIT_S24_LE |
2367 SNDRV_PCM_FMTBIT_S24_3LE |
2368 SNDRV_PCM_FMTBIT_S32_LE),
2369 .channels_min = 1,
2370 .channels_max = 8,
2371 .rate_min = 8000,
2372 .rate_max = 384000,
2373 },
2374 .ops = &msm_fe_Multimedia_dai_ops,
2375 .compress_new = snd_soc_new_compress,
2376 .name = "MultiMedia14",
2377 .probe = fe_dai_probe,
2378 },
2379 {
2380 .playback = {
2381 .stream_name = "MultiMedia15 Playback",
2382 .aif_name = "MM_DL15",
2383 .rates = (SNDRV_PCM_RATE_8000_384000 |
2384 SNDRV_PCM_RATE_KNOT),
2385 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2386 SNDRV_PCM_FMTBIT_S24_LE |
2387 SNDRV_PCM_FMTBIT_S24_3LE |
2388 SNDRV_PCM_FMTBIT_S32_LE),
2389 .channels_min = 1,
2390 .channels_max = 8,
2391 .rate_min = 8000,
2392 .rate_max = 384000,
2393 },
2394 .ops = &msm_fe_Multimedia_dai_ops,
2395 .compress_new = snd_soc_new_compress,
2396 .name = "MultiMedia15",
2397 .probe = fe_dai_probe,
2398 },
2399 {
2400 .playback = {
2401 .stream_name = "MultiMedia16 Playback",
2402 .aif_name = "MM_DL16",
2403 .rates = (SNDRV_PCM_RATE_8000_384000 |
2404 SNDRV_PCM_RATE_KNOT),
2405 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2406 SNDRV_PCM_FMTBIT_S24_LE |
2407 SNDRV_PCM_FMTBIT_S24_3LE |
2408 SNDRV_PCM_FMTBIT_S32_LE),
2409 .channels_min = 1,
2410 .channels_max = 8,
2411 .rate_min = 8000,
2412 .rate_max = 384000,
2413 },
Asish Bhattacharya34504582017-08-08 12:55:01 +05302414 .capture = {
2415 .stream_name = "MultiMedia16 Capture",
2416 .aif_name = "MM_UL16",
2417 .rates = (SNDRV_PCM_RATE_8000_48000|
2418 SNDRV_PCM_RATE_KNOT),
2419 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2420 SNDRV_PCM_FMTBIT_S24_LE |
2421 SNDRV_PCM_FMTBIT_S24_3LE |
2422 SNDRV_PCM_FMTBIT_S32_LE),
2423 .channels_min = 1,
2424 .channels_max = 8,
2425 .rate_min = 8000,
2426 .rate_max = 48000,
2427 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302428 .ops = &msm_fe_Multimedia_dai_ops,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302429 .name = "MultiMedia16",
2430 .probe = fe_dai_probe,
2431 },
2432 {
2433 .playback = {
2434 .stream_name = "VoiceMMode1 Playback",
2435 .aif_name = "VOICEMMODE1_DL",
2436 .rates = SNDRV_PCM_RATE_8000_48000,
2437 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2438 .channels_min = 1,
2439 .channels_max = 2,
2440 .rate_min = 8000,
2441 .rate_max = 48000,
2442 },
2443 .capture = {
2444 .stream_name = "VoiceMMode1 Capture",
2445 .aif_name = "VOICEMMODE1_UL",
2446 .rates = SNDRV_PCM_RATE_8000_48000,
2447 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2448 .channels_min = 1,
2449 .channels_max = 2,
2450 .rate_min = 8000,
2451 .rate_max = 48000,
2452 },
2453 .ops = &msm_fe_dai_ops,
2454 .name = "VoiceMMode1",
2455 .probe = fe_dai_probe,
2456 },
2457 {
2458 .playback = {
2459 .stream_name = "VoiceMMode2 Playback",
2460 .aif_name = "VOICEMMODE2_DL",
2461 .rates = SNDRV_PCM_RATE_8000_48000,
2462 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2463 .channels_min = 1,
2464 .channels_max = 2,
2465 .rate_min = 8000,
2466 .rate_max = 48000,
2467 },
2468 .capture = {
2469 .stream_name = "VoiceMMode2 Capture",
2470 .aif_name = "VOICEMMODE2_UL",
2471 .rates = SNDRV_PCM_RATE_8000_48000,
2472 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2473 .channels_min = 1,
2474 .channels_max = 2,
2475 .rate_min = 8000,
2476 .rate_max = 48000,
2477 },
2478 .ops = &msm_fe_dai_ops,
2479 .name = "VoiceMMode2",
2480 .probe = fe_dai_probe,
2481 },
2482 {
2483 .capture = {
2484 .stream_name = "MultiMedia17 Capture",
2485 .aif_name = "MM_UL17",
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05302486 .rates = (SNDRV_PCM_RATE_8000_192000|
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302487 SNDRV_PCM_RATE_KNOT),
2488 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2489 SNDRV_PCM_FMTBIT_S24_LE |
2490 SNDRV_PCM_FMTBIT_S24_3LE),
2491 .channels_min = 1,
2492 .channels_max = 8,
2493 .rate_min = 8000,
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05302494 .rate_max = 192000,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302495 },
2496 .ops = &msm_fe_Multimedia_dai_ops,
2497 .compress_new = snd_soc_new_compress,
2498 .name = "MultiMedia17",
2499 .probe = fe_dai_probe,
2500 },
2501 {
2502 .capture = {
2503 .stream_name = "MultiMedia18 Capture",
2504 .aif_name = "MM_UL18",
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05302505 .rates = (SNDRV_PCM_RATE_8000_192000|
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302506 SNDRV_PCM_RATE_KNOT),
2507 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2508 SNDRV_PCM_FMTBIT_S24_LE |
2509 SNDRV_PCM_FMTBIT_S24_3LE),
2510 .channels_min = 1,
2511 .channels_max = 8,
2512 .rate_min = 8000,
2513 .rate_max = 192000,
2514 },
2515 .ops = &msm_fe_Multimedia_dai_ops,
2516 .compress_new = snd_soc_new_compress,
2517 .name = "MultiMedia18",
2518 .probe = fe_dai_probe,
2519 },
2520 {
2521 .capture = {
2522 .stream_name = "MultiMedia19 Capture",
2523 .aif_name = "MM_UL19",
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05302524 .rates = (SNDRV_PCM_RATE_8000_192000|
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302525 SNDRV_PCM_RATE_KNOT),
2526 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2527 SNDRV_PCM_FMTBIT_S24_LE |
2528 SNDRV_PCM_FMTBIT_S24_3LE),
2529 .channels_min = 1,
2530 .channels_max = 8,
2531 .rate_min = 8000,
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05302532 .rate_max = 192000,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302533 },
2534 .ops = &msm_fe_Multimedia_dai_ops,
2535 .compress_new = snd_soc_new_compress,
2536 .name = "MultiMedia19",
2537 .probe = fe_dai_probe,
2538 },
2539 {
2540 .playback = {
2541 .stream_name = "MultiMedia20 Playback",
2542 .aif_name = "MM_DL20",
2543 .rates = (SNDRV_PCM_RATE_8000_384000|
2544 SNDRV_PCM_RATE_KNOT),
2545 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2546 SNDRV_PCM_FMTBIT_S24_LE |
2547 SNDRV_PCM_FMTBIT_S24_3LE |
2548 SNDRV_PCM_FMTBIT_S32_LE),
2549 .channels_min = 1,
2550 .channels_max = 8,
2551 .rate_min = 8000,
2552 .rate_max = 384000,
2553 },
2554 .capture = {
2555 .stream_name = "MultiMedia20 Capture",
2556 .aif_name = "MM_UL20",
2557 .rates = (SNDRV_PCM_RATE_8000_48000|
2558 SNDRV_PCM_RATE_KNOT),
2559 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2560 SNDRV_PCM_FMTBIT_S24_LE |
2561 SNDRV_PCM_FMTBIT_S24_3LE |
2562 SNDRV_PCM_FMTBIT_S32_LE),
2563 .channels_min = 1,
2564 .channels_max = 8,
2565 .rate_min = 8000,
2566 .rate_max = 48000,
2567 },
2568 .ops = &msm_fe_Multimedia_dai_ops,
2569 .name = "MultiMedia20",
2570 .probe = fe_dai_probe,
2571 },
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05302572 {
2573 .capture = {
2574 .stream_name = "MultiMedia28 Capture",
2575 .aif_name = "MM_UL28",
2576 .rates = (SNDRV_PCM_RATE_8000_192000|
2577 SNDRV_PCM_RATE_KNOT),
2578 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2579 SNDRV_PCM_FMTBIT_S24_LE |
2580 SNDRV_PCM_FMTBIT_S24_3LE),
2581 .channels_min = 1,
2582 .channels_max = 8,
2583 .rate_min = 8000,
2584 .rate_max = 192000,
2585 },
2586 .ops = &msm_fe_Multimedia_dai_ops,
2587 .compress_new = snd_soc_new_compress,
2588 .name = "MultiMedia28",
2589 .probe = fe_dai_probe,
2590 },
2591 {
2592 .capture = {
2593 .stream_name = "MultiMedia29 Capture",
2594 .aif_name = "MM_UL29",
2595 .rates = (SNDRV_PCM_RATE_8000_192000|
2596 SNDRV_PCM_RATE_KNOT),
2597 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2598 SNDRV_PCM_FMTBIT_S24_LE |
2599 SNDRV_PCM_FMTBIT_S24_3LE),
2600 .channels_min = 1,
2601 .channels_max = 8,
2602 .rate_min = 8000,
2603 .rate_max = 192000,
2604 },
2605 .ops = &msm_fe_Multimedia_dai_ops,
2606 .compress_new = snd_soc_new_compress,
2607 .name = "MultiMedia29",
2608 .probe = fe_dai_probe,
2609 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302610};
2611
2612static int msm_fe_dai_dev_probe(struct platform_device *pdev)
2613{
2614
2615 dev_dbg(&pdev->dev, "%s: dev name %s\n", __func__,
2616 dev_name(&pdev->dev));
2617 return snd_soc_register_component(&pdev->dev, &msm_fe_dai_component,
2618 msm_fe_dais, ARRAY_SIZE(msm_fe_dais));
2619}
2620
2621static int msm_fe_dai_dev_remove(struct platform_device *pdev)
2622{
2623 snd_soc_unregister_component(&pdev->dev);
2624 return 0;
2625}
2626
2627static const struct of_device_id msm_dai_fe_dt_match[] = {
2628 {.compatible = "qcom,msm-dai-fe"},
2629 {}
2630};
2631
2632static struct platform_driver msm_fe_dai_driver = {
2633 .probe = msm_fe_dai_dev_probe,
2634 .remove = msm_fe_dai_dev_remove,
2635 .driver = {
2636 .name = "msm-dai-fe",
2637 .owner = THIS_MODULE,
2638 .of_match_table = msm_dai_fe_dt_match,
2639 },
2640};
2641
Laxminath Kasam8b1366a2017-10-05 01:44:16 +05302642int __init msm_fe_dai_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302643{
2644 return platform_driver_register(&msm_fe_dai_driver);
2645}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302646
Asish Bhattacharya5faacb32017-12-04 17:23:15 +05302647void msm_fe_dai_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302648{
2649 platform_driver_unregister(&msm_fe_dai_driver);
2650}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302651
2652/* Module information */
2653MODULE_DESCRIPTION("MSM Frontend DAI driver");
2654MODULE_LICENSE("GPL v2");