blob: 9160a2d728b4fcd6c7abaf95607b639ed9d4d65f [file] [log] [blame]
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
2 *
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 = {
701 .stream_name = "VOICE_STUB Playback",
702 .aif_name = "VOICE_STUB_DL",
703 .rates = SNDRV_PCM_RATE_8000_48000,
704 .formats = SNDRV_PCM_FMTBIT_S16_LE,
705 .channels_min = 1,
706 .channels_max = 2,
707 .rate_min = 8000,
708 .rate_max = 48000,
709 },
710 .capture = {
711 .stream_name = "VOICE_STUB Capture",
712 .aif_name = "VOICE_STUB_UL",
713 .rates = SNDRV_PCM_RATE_8000_48000,
714 .formats = SNDRV_PCM_FMTBIT_S16_LE,
715 .channels_min = 1,
716 .channels_max = 2,
717 .rate_min = 8000,
718 .rate_max = 48000,
719 },
720 .ops = &msm_fe_dai_ops,
721 .name = "VOICE_STUB",
722 .probe = fe_dai_probe,
723 },
724 {
725 .playback = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530726 .stream_name = "MI2S_RX_HOSTLESS Playback",
727 .aif_name = "MI2S_DL_HL",
728 .rates = SNDRV_PCM_RATE_8000_48000,
729 .formats = SNDRV_PCM_FMTBIT_S16_LE,
730 .channels_min = 1,
731 .channels_max = 2,
732 .rate_min = 8000,
733 .rate_max = 48000,
734 },
735 .capture = {
736 .stream_name = "MI2S_TX_HOSTLESS Capture",
737 .aif_name = "MI2S_UL_HL",
738 .rates = SNDRV_PCM_RATE_8000_48000,
739 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
740 SNDRV_PCM_FMTBIT_S24_LE),
741 .channels_min = 1,
742 .channels_max = 2,
743 .rate_min = 8000,
744 .rate_max = 48000,
745 },
746 .ops = &msm_fe_dai_ops,
747 .name = "MI2S_TX_HOSTLESS",
748 .probe = fe_dai_probe,
749 },
750 {
751 .playback = {
752 .stream_name = "SEC_I2S_RX_HOSTLESS Playback",
753 .aif_name = "SEC_I2S_DL_HL",
754 .rates = SNDRV_PCM_RATE_8000_48000,
755 .formats = SNDRV_PCM_FMTBIT_S16_LE,
756 .channels_min = 1,
757 .channels_max = 2,
758 .rate_min = 8000,
759 .rate_max = 48000,
760 },
761 .ops = &msm_fe_dai_ops,
762 .name = "SEC_I2S_RX_HOSTLESS",
763 .probe = fe_dai_probe,
764 },
765 {
766 .capture = {
767 .stream_name = "Primary MI2S_TX Hostless Capture",
768 .aif_name = "PRI_MI2S_UL_HL",
769 .rates = SNDRV_PCM_RATE_8000_48000,
770 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
771 SNDRV_PCM_FMTBIT_S24_LE),
772 .channels_min = 1,
773 .channels_max = 2,
774 .rate_min = 8000,
775 .rate_max = 48000,
776 },
777 .ops = &msm_fe_dai_ops,
778 .name = "PRI_MI2S_TX_HOSTLESS",
779 .probe = fe_dai_probe,
780 },
781 {
782 .playback = {
783 .stream_name = "Primary MI2S_RX Hostless Playback",
784 .aif_name = "PRI_MI2S_DL_HL",
785 .rates = SNDRV_PCM_RATE_8000_384000,
786 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
787 SNDRV_PCM_FMTBIT_S24_LE),
788 .channels_min = 1,
789 .channels_max = 2,
790 .rate_min = 8000,
791 .rate_max = 384000,
792 },
793 .ops = &msm_fe_dai_ops,
794 .name = "PRI_MI2S_RX_HOSTLESS",
795 .probe = fe_dai_probe,
796 },
797 {
798 .capture = {
799 .stream_name = "Secondary MI2S_TX Hostless Capture",
800 .aif_name = "SEC_MI2S_UL_HL",
801 .rates = SNDRV_PCM_RATE_8000_48000,
802 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
803 SNDRV_PCM_FMTBIT_S24_LE),
804 .channels_min = 1,
805 .channels_max = 2,
806 .rate_min = 8000,
807 .rate_max = 48000,
808 },
809 .ops = &msm_fe_dai_ops,
810 .name = "SEC_MI2S_TX_HOSTLESS",
811 .probe = fe_dai_probe,
812 },
813 {
814 .playback = {
815 .stream_name = "Secondary MI2S_RX Hostless Playback",
816 .aif_name = "SEC_MI2S_DL_HL",
817 .rates = SNDRV_PCM_RATE_8000_384000,
818 .formats = SNDRV_PCM_FMTBIT_S16_LE |
819 SNDRV_PCM_FMTBIT_S24_LE,
820 .channels_min = 1,
821 .channels_max = 2,
822 .rate_min = 8000,
823 .rate_max = 384000,
824 },
825 .ops = &msm_fe_dai_ops,
826 .name = "SEC_MI2S_RX_HOSTLESS",
827 .probe = fe_dai_probe,
828 },
829 {
830 .capture = {
831 .stream_name = "Tertiary MI2S_TX Hostless Capture",
832 .aif_name = "TERT_MI2S_UL_HL",
833 .rates = SNDRV_PCM_RATE_8000_48000,
834 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
835 SNDRV_PCM_FMTBIT_S24_LE),
836 .channels_min = 1,
837 .channels_max = 2,
838 .rate_min = 8000,
839 .rate_max = 48000,
840 },
841 .ops = &msm_fe_dai_ops,
842 .name = "TERT_MI2S_TX_HOSTLESS",
843 .probe = fe_dai_probe,
844 },
845 {
846 .playback = {
847 .stream_name = "Tertiary MI2S_RX Hostless Playback",
848 .aif_name = "TERT_MI2S_DL_HL",
849 .rates = SNDRV_PCM_RATE_8000_384000,
850 .formats = SNDRV_PCM_FMTBIT_S16_LE |
851 SNDRV_PCM_FMTBIT_S24_LE,
852 .channels_min = 1,
853 .channels_max = 2,
854 .rate_min = 8000,
855 .rate_max = 384000,
856 },
857 .ops = &msm_fe_dai_ops,
858 .name = "TERT_MI2S_RX_HOSTLESS",
859 .probe = fe_dai_probe,
860 },
861 {
862 .capture = {
863 .stream_name = "Quaternary MI2S_TX Hostless Capture",
864 .aif_name = "QUAT_MI2S_UL_HL",
865 .rates = SNDRV_PCM_RATE_8000_48000,
866 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
867 SNDRV_PCM_FMTBIT_S24_LE),
868 .channels_min = 1,
869 .channels_max = 2,
870 .rate_min = 8000,
871 .rate_max = 48000,
872 },
873 .ops = &msm_fe_dai_ops,
874 .name = "QUAT_MI2S_TX_HOSTLESS",
875 .probe = fe_dai_probe,
876 },
877 {
878 .playback = {
879 .stream_name = "Quaternary MI2S_RX Hostless Playback",
880 .aif_name = "QUAT_MI2S_DL_HL",
881 .rates = SNDRV_PCM_RATE_8000_384000,
882 .formats = SNDRV_PCM_FMTBIT_S16_LE |
883 SNDRV_PCM_FMTBIT_S24_LE,
884 .channels_min = 1,
885 .channels_max = 8,
886 .rate_min = 8000,
887 .rate_max = 384000,
888 },
889 .ops = &msm_fe_dai_ops,
890 .name = "QUAT_MI2S_RX_HOSTLESS",
891 .probe = fe_dai_probe,
892 },
893 {
894 .playback = {
895 .stream_name = "INT0 MI2S_RX Hostless Playback",
896 .aif_name = "INT0_MI2S_DL_HL",
897 .rates = SNDRV_PCM_RATE_8000_192000,
898 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
899 SNDRV_PCM_FMTBIT_S24_LE),
900 .channels_min = 1,
901 .channels_max = 2,
902 .rate_min = 8000,
903 .rate_max = 192000,
904 },
905 .ops = &msm_fe_dai_ops,
906 .name = "INT0_MI2S_RX_HOSTLESS",
907 .probe = fe_dai_probe,
908 },
909 {
910 .playback = {
911 .stream_name = "INT4 MI2S_RX Hostless Playback",
912 .aif_name = "INT4_MI2S_DL_HL",
913 .rates = SNDRV_PCM_RATE_8000_192000,
914 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
915 SNDRV_PCM_FMTBIT_S24_LE),
916 .channels_min = 1,
917 .channels_max = 4,
918 .rate_min = 8000,
919 .rate_max = 192000,
920 },
921 .ops = &msm_fe_dai_ops,
922 .name = "INT4_MI2S_RX_HOSTLESS",
923 .probe = fe_dai_probe,
924 },
925 {
926 .capture = {
927 .stream_name = "INT3 MI2S_TX Hostless Capture",
928 .aif_name = "INT3_MI2S_UL_HL",
929 .rates = SNDRV_PCM_RATE_8000_48000,
930 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
931 SNDRV_PCM_FMTBIT_S24_LE),
932 .channels_min = 1,
933 .channels_max = 2,
934 .rate_min = 8000,
935 .rate_max = 48000,
936 },
937 .ops = &msm_fe_dai_ops,
938 .name = "INT3_MI2S_TX_HOSTLESS",
939 .probe = fe_dai_probe,
940 },
941 /* TDM Hostless */
942 {
943 .capture = {
944 .stream_name = "Primary TDM0 Hostless Capture",
945 .aif_name = "PRI_TDM_TX_0_UL_HL",
946 .rates = SNDRV_PCM_RATE_8000_48000,
947 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
948 SNDRV_PCM_FMTBIT_S24_LE),
949 .channels_min = 1,
950 .channels_max = 8,
951 .rate_min = 8000,
952 .rate_max = 48000,
953 },
954 .ops = &msm_fe_dai_ops,
955 .name = "PRI_TDM_TX_0_HOSTLESS",
956 .probe = fe_dai_probe,
957 },
958 {
959 .playback = {
960 .stream_name = "Primary TDM0 Hostless Playback",
961 .aif_name = "PRI_TDM_RX_0_DL_HL",
962 .rates = SNDRV_PCM_RATE_8000_48000,
963 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
964 SNDRV_PCM_FMTBIT_S24_LE),
965 .channels_min = 1,
966 .channels_max = 8,
967 .rate_min = 8000,
968 .rate_max = 48000,
969 },
970 .ops = &msm_fe_dai_ops,
971 .name = "PRI_TDM_RX_0_HOSTLESS",
972 .probe = fe_dai_probe,
973 },
974 {
975 .capture = {
976 .stream_name = "Primary TDM1 Hostless Capture",
977 .aif_name = "PRI_TDM_TX_1_UL_HL",
978 .rates = SNDRV_PCM_RATE_8000_48000,
979 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
980 SNDRV_PCM_FMTBIT_S24_LE),
981 .channels_min = 1,
982 .channels_max = 8,
983 .rate_min = 8000,
984 .rate_max = 48000,
985 },
986 .ops = &msm_fe_dai_ops,
987 .name = "PRI_TDM_TX_1_HOSTLESS",
988 .probe = fe_dai_probe,
989 },
990 {
991 .playback = {
992 .stream_name = "Primary TDM1 Hostless Playback",
993 .aif_name = "PRI_TDM_RX_1_DL_HL",
994 .rates = SNDRV_PCM_RATE_8000_48000,
995 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
996 SNDRV_PCM_FMTBIT_S24_LE),
997 .channels_min = 1,
998 .channels_max = 8,
999 .rate_min = 8000,
1000 .rate_max = 48000,
1001 },
1002 .ops = &msm_fe_dai_ops,
1003 .name = "PRI_TDM_RX_1_HOSTLESS",
1004 .probe = fe_dai_probe,
1005 },
1006 {
1007 .capture = {
1008 .stream_name = "Primary TDM2 Hostless Capture",
1009 .aif_name = "PRI_TDM_TX_2_UL_HL",
1010 .rates = SNDRV_PCM_RATE_8000_48000,
1011 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1012 SNDRV_PCM_FMTBIT_S24_LE),
1013 .channels_min = 1,
1014 .channels_max = 8,
1015 .rate_min = 8000,
1016 .rate_max = 48000,
1017 },
1018 .ops = &msm_fe_dai_ops,
1019 .name = "PRI_TDM_TX_2_HOSTLESS",
1020 .probe = fe_dai_probe,
1021 },
1022 {
1023 .playback = {
1024 .stream_name = "Primary TDM2 Hostless Playback",
1025 .aif_name = "PRI_TDM_RX_2_DL_HL",
1026 .rates = SNDRV_PCM_RATE_8000_48000,
1027 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1028 SNDRV_PCM_FMTBIT_S24_LE),
1029 .channels_min = 1,
1030 .channels_max = 8,
1031 .rate_min = 8000,
1032 .rate_max = 48000,
1033 },
1034 .ops = &msm_fe_dai_ops,
1035 .name = "PRI_TDM_RX_2_HOSTLESS",
1036 .probe = fe_dai_probe,
1037 },
1038 {
1039 .capture = {
1040 .stream_name = "Primary TDM3 Hostless Capture",
1041 .aif_name = "PRI_TDM_TX_3_UL_HL",
1042 .rates = SNDRV_PCM_RATE_8000_48000,
1043 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1044 SNDRV_PCM_FMTBIT_S24_LE),
1045 .channels_min = 1,
1046 .channels_max = 8,
1047 .rate_min = 8000,
1048 .rate_max = 48000,
1049 },
1050 .ops = &msm_fe_dai_ops,
1051 .name = "PRI_TDM_TX_3_HOSTLESS",
1052 .probe = fe_dai_probe,
1053 },
1054 {
1055 .playback = {
1056 .stream_name = "Primary TDM3 Hostless Playback",
1057 .aif_name = "PRI_TDM_RX_3_DL_HL",
1058 .rates = SNDRV_PCM_RATE_8000_48000,
1059 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1060 SNDRV_PCM_FMTBIT_S24_LE),
1061 .channels_min = 1,
1062 .channels_max = 8,
1063 .rate_min = 8000,
1064 .rate_max = 48000,
1065 },
1066 .ops = &msm_fe_dai_ops,
1067 .name = "PRI_TDM_RX_3_HOSTLESS",
1068 .probe = fe_dai_probe,
1069 },
1070 {
1071 .capture = {
1072 .stream_name = "Primary TDM4 Hostless Capture",
1073 .aif_name = "PRI_TDM_TX_4_UL_HL",
1074 .rates = SNDRV_PCM_RATE_8000_48000,
1075 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1076 SNDRV_PCM_FMTBIT_S24_LE),
1077 .channels_min = 1,
1078 .channels_max = 8,
1079 .rate_min = 8000,
1080 .rate_max = 48000,
1081 },
1082 .ops = &msm_fe_dai_ops,
1083 .name = "PRI_TDM_TX_4_HOSTLESS",
1084 .probe = fe_dai_probe,
1085 },
1086 {
1087 .playback = {
1088 .stream_name = "Primary TDM4 Hostless Playback",
1089 .aif_name = "PRI_TDM_RX_4_DL_HL",
1090 .rates = SNDRV_PCM_RATE_8000_48000,
1091 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1092 SNDRV_PCM_FMTBIT_S24_LE),
1093 .channels_min = 1,
1094 .channels_max = 8,
1095 .rate_min = 8000,
1096 .rate_max = 48000,
1097 },
1098 .ops = &msm_fe_dai_ops,
1099 .name = "PRI_TDM_RX_4_HOSTLESS",
1100 .probe = fe_dai_probe,
1101 },
1102 {
1103 .capture = {
1104 .stream_name = "Primary TDM5 Hostless Capture",
1105 .aif_name = "PRI_TDM_TX_5_UL_HL",
1106 .rates = SNDRV_PCM_RATE_8000_48000,
1107 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1108 SNDRV_PCM_FMTBIT_S24_LE),
1109 .channels_min = 1,
1110 .channels_max = 8,
1111 .rate_min = 8000,
1112 .rate_max = 48000,
1113 },
1114 .ops = &msm_fe_dai_ops,
1115 .name = "PRI_TDM_TX_5_HOSTLESS",
1116 .probe = fe_dai_probe,
1117 },
1118 {
1119 .playback = {
1120 .stream_name = "Primary TDM5 Hostless Playback",
1121 .aif_name = "PRI_TDM_RX_5_DL_HL",
1122 .rates = SNDRV_PCM_RATE_8000_48000,
1123 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1124 SNDRV_PCM_FMTBIT_S24_LE),
1125 .channels_min = 1,
1126 .channels_max = 8,
1127 .rate_min = 8000,
1128 .rate_max = 48000,
1129 },
1130 .ops = &msm_fe_dai_ops,
1131 .name = "PRI_TDM_RX_5_HOSTLESS",
1132 .probe = fe_dai_probe,
1133 },
1134 {
1135 .capture = {
1136 .stream_name = "Primary TDM6 Hostless Capture",
1137 .aif_name = "PRI_TDM_TX_6_UL_HL",
1138 .rates = SNDRV_PCM_RATE_8000_48000,
1139 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1140 SNDRV_PCM_FMTBIT_S24_LE),
1141 .channels_min = 1,
1142 .channels_max = 8,
1143 .rate_min = 8000,
1144 .rate_max = 48000,
1145 },
1146 .ops = &msm_fe_dai_ops,
1147 .name = "PRI_TDM_TX_6_HOSTLESS",
1148 .probe = fe_dai_probe,
1149 },
1150 {
1151 .playback = {
1152 .stream_name = "Primary TDM6 Hostless Playback",
1153 .aif_name = "PRI_TDM_RX_6_DL_HL",
1154 .rates = SNDRV_PCM_RATE_8000_48000,
1155 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1156 SNDRV_PCM_FMTBIT_S24_LE),
1157 .channels_min = 1,
1158 .channels_max = 8,
1159 .rate_min = 8000,
1160 .rate_max = 48000,
1161 },
1162 .ops = &msm_fe_dai_ops,
1163 .name = "PRI_TDM_RX_6_HOSTLESS",
1164 .probe = fe_dai_probe,
1165 },
1166 {
1167 .capture = {
1168 .stream_name = "Primary TDM7 Hostless Capture",
1169 .aif_name = "PRI_TDM_TX_7_UL_HL",
1170 .rates = SNDRV_PCM_RATE_8000_48000,
1171 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1172 SNDRV_PCM_FMTBIT_S24_LE),
1173 .channels_min = 1,
1174 .channels_max = 8,
1175 .rate_min = 8000,
1176 .rate_max = 48000,
1177 },
1178 .ops = &msm_fe_dai_ops,
1179 .name = "PRI_TDM_TX_7_HOSTLESS",
1180 .probe = fe_dai_probe,
1181 },
1182 {
1183 .playback = {
1184 .stream_name = "Primary TDM7 Hostless Playback",
1185 .aif_name = "PRI_TDM_RX_7_DL_HL",
1186 .rates = SNDRV_PCM_RATE_8000_48000,
1187 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1188 SNDRV_PCM_FMTBIT_S24_LE),
1189 .channels_min = 1,
1190 .channels_max = 8,
1191 .rate_min = 8000,
1192 .rate_max = 48000,
1193 },
1194 .ops = &msm_fe_dai_ops,
1195 .name = "PRI_TDM_RX_7_HOSTLESS",
1196 .probe = fe_dai_probe,
1197 },
1198 {
1199 .capture = {
1200 .stream_name = "Secondary TDM0 Hostless Capture",
1201 .aif_name = "SEC_TDM_TX_0_UL_HL",
1202 .rates = SNDRV_PCM_RATE_8000_48000,
1203 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1204 SNDRV_PCM_FMTBIT_S24_LE),
1205 .channels_min = 1,
1206 .channels_max = 8,
1207 .rate_min = 8000,
1208 .rate_max = 48000,
1209 },
1210 .ops = &msm_fe_dai_ops,
1211 .name = "SEC_TDM_TX_0_HOSTLESS",
1212 .probe = fe_dai_probe,
1213 },
1214 {
1215 .playback = {
1216 .stream_name = "Secondary TDM0 Hostless Playback",
1217 .aif_name = "SEC_TDM_RX_0_DL_HL",
1218 .rates = SNDRV_PCM_RATE_8000_48000,
1219 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1220 SNDRV_PCM_FMTBIT_S24_LE),
1221 .channels_min = 1,
1222 .channels_max = 8,
1223 .rate_min = 8000,
1224 .rate_max = 48000,
1225 },
1226 .ops = &msm_fe_dai_ops,
1227 .name = "SEC_TDM_RX_0_HOSTLESS",
1228 .probe = fe_dai_probe,
1229 },
1230 {
1231 .capture = {
1232 .stream_name = "Secondary TDM1 Hostless Capture",
1233 .aif_name = "SEC_TDM_TX_1_UL_HL",
1234 .rates = SNDRV_PCM_RATE_8000_48000,
1235 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1236 SNDRV_PCM_FMTBIT_S24_LE),
1237 .channels_min = 1,
1238 .channels_max = 8,
1239 .rate_min = 8000,
1240 .rate_max = 48000,
1241 },
1242 .ops = &msm_fe_dai_ops,
1243 .name = "SEC_TDM_TX_1_HOSTLESS",
1244 .probe = fe_dai_probe,
1245 },
1246 {
1247 .playback = {
1248 .stream_name = "Secondary TDM1 Hostless Playback",
1249 .aif_name = "SEC_TDM_RX_1_DL_HL",
1250 .rates = SNDRV_PCM_RATE_8000_48000,
1251 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1252 SNDRV_PCM_FMTBIT_S24_LE),
1253 .channels_min = 1,
1254 .channels_max = 8,
1255 .rate_min = 8000,
1256 .rate_max = 48000,
1257 },
1258 .ops = &msm_fe_dai_ops,
1259 .name = "SEC_TDM_RX_1_HOSTLESS",
1260 .probe = fe_dai_probe,
1261 },
1262 {
1263 .capture = {
1264 .stream_name = "Secondary TDM2 Hostless Capture",
1265 .aif_name = "SEC_TDM_TX_2_UL_HL",
1266 .rates = SNDRV_PCM_RATE_8000_48000,
1267 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1268 SNDRV_PCM_FMTBIT_S24_LE),
1269 .channels_min = 1,
1270 .channels_max = 8,
1271 .rate_min = 8000,
1272 .rate_max = 48000,
1273 },
1274 .ops = &msm_fe_dai_ops,
1275 .name = "SEC_TDM_TX_2_HOSTLESS",
1276 .probe = fe_dai_probe,
1277 },
1278 {
1279 .playback = {
1280 .stream_name = "Secondary TDM2 Hostless Playback",
1281 .aif_name = "SEC_TDM_RX_2_DL_HL",
1282 .rates = SNDRV_PCM_RATE_8000_48000,
1283 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1284 SNDRV_PCM_FMTBIT_S24_LE),
1285 .channels_min = 1,
1286 .channels_max = 8,
1287 .rate_min = 8000,
1288 .rate_max = 48000,
1289 },
1290 .ops = &msm_fe_dai_ops,
1291 .name = "SEC_TDM_RX_2_HOSTLESS",
1292 .probe = fe_dai_probe,
1293 },
1294 {
1295 .capture = {
1296 .stream_name = "Secondary TDM3 Hostless Capture",
1297 .aif_name = "SEC_TDM_TX_3_UL_HL",
1298 .rates = SNDRV_PCM_RATE_8000_48000,
1299 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1300 SNDRV_PCM_FMTBIT_S24_LE),
1301 .channels_min = 1,
1302 .channels_max = 8,
1303 .rate_min = 8000,
1304 .rate_max = 48000,
1305 },
1306 .ops = &msm_fe_dai_ops,
1307 .name = "SEC_TDM_TX_3_HOSTLESS",
1308 .probe = fe_dai_probe,
1309 },
1310 {
1311 .playback = {
1312 .stream_name = "Secondary TDM3 Hostless Playback",
1313 .aif_name = "SEC_TDM_RX_3_DL_HL",
1314 .rates = SNDRV_PCM_RATE_8000_48000,
1315 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1316 SNDRV_PCM_FMTBIT_S24_LE),
1317 .channels_min = 1,
1318 .channels_max = 8,
1319 .rate_min = 8000,
1320 .rate_max = 48000,
1321 },
1322 .ops = &msm_fe_dai_ops,
1323 .name = "SEC_TDM_RX_3_HOSTLESS",
1324 .probe = fe_dai_probe,
1325 },
1326 {
1327 .capture = {
1328 .stream_name = "Secondary TDM4 Hostless Capture",
1329 .aif_name = "SEC_TDM_TX_4_UL_HL",
1330 .rates = SNDRV_PCM_RATE_8000_48000,
1331 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1332 SNDRV_PCM_FMTBIT_S24_LE),
1333 .channels_min = 1,
1334 .channels_max = 8,
1335 .rate_min = 8000,
1336 .rate_max = 48000,
1337 },
1338 .ops = &msm_fe_dai_ops,
1339 .name = "SEC_TDM_TX_4_HOSTLESS",
1340 .probe = fe_dai_probe,
1341 },
1342 {
1343 .playback = {
1344 .stream_name = "Secondary TDM4 Hostless Playback",
1345 .aif_name = "SEC_TDM_RX_4_DL_HL",
1346 .rates = SNDRV_PCM_RATE_8000_48000,
1347 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1348 SNDRV_PCM_FMTBIT_S24_LE),
1349 .channels_min = 1,
1350 .channels_max = 8,
1351 .rate_min = 8000,
1352 .rate_max = 48000,
1353 },
1354 .ops = &msm_fe_dai_ops,
1355 .name = "SEC_TDM_RX_4_HOSTLESS",
1356 .probe = fe_dai_probe,
1357 },
1358 {
1359 .capture = {
1360 .stream_name = "Secondary TDM5 Hostless Capture",
1361 .aif_name = "SEC_TDM_TX_5_UL_HL",
1362 .rates = SNDRV_PCM_RATE_8000_48000,
1363 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1364 SNDRV_PCM_FMTBIT_S24_LE),
1365 .channels_min = 1,
1366 .channels_max = 8,
1367 .rate_min = 8000,
1368 .rate_max = 48000,
1369 },
1370 .ops = &msm_fe_dai_ops,
1371 .name = "SEC_TDM_TX_5_HOSTLESS",
1372 .probe = fe_dai_probe,
1373 },
1374 {
1375 .playback = {
1376 .stream_name = "Secondary TDM5 Hostless Playback",
1377 .aif_name = "SEC_TDM_RX_5_DL_HL",
1378 .rates = SNDRV_PCM_RATE_8000_48000,
1379 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1380 SNDRV_PCM_FMTBIT_S24_LE),
1381 .channels_min = 1,
1382 .channels_max = 8,
1383 .rate_min = 8000,
1384 .rate_max = 48000,
1385 },
1386 .ops = &msm_fe_dai_ops,
1387 .name = "SEC_TDM_RX_5_HOSTLESS",
1388 .probe = fe_dai_probe,
1389 },
1390 {
1391 .capture = {
1392 .stream_name = "Secondary TDM6 Hostless Capture",
1393 .aif_name = "SEC_TDM_TX_6_UL_HL",
1394 .rates = SNDRV_PCM_RATE_8000_48000,
1395 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1396 SNDRV_PCM_FMTBIT_S24_LE),
1397 .channels_min = 1,
1398 .channels_max = 8,
1399 .rate_min = 8000,
1400 .rate_max = 48000,
1401 },
1402 .ops = &msm_fe_dai_ops,
1403 .name = "SEC_TDM_TX_6_HOSTLESS",
1404 .probe = fe_dai_probe,
1405 },
1406 {
1407 .playback = {
1408 .stream_name = "Secondary TDM6 Hostless Playback",
1409 .aif_name = "SEC_TDM_RX_6_DL_HL",
1410 .rates = SNDRV_PCM_RATE_8000_48000,
1411 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1412 SNDRV_PCM_FMTBIT_S24_LE),
1413 .channels_min = 1,
1414 .channels_max = 8,
1415 .rate_min = 8000,
1416 .rate_max = 48000,
1417 },
1418 .ops = &msm_fe_dai_ops,
1419 .name = "SEC_TDM_RX_6_HOSTLESS",
1420 .probe = fe_dai_probe,
1421 },
1422 {
1423 .capture = {
1424 .stream_name = "Secondary TDM7 Hostless Capture",
1425 .aif_name = "SEC_TDM_TX_7_UL_HL",
1426 .rates = SNDRV_PCM_RATE_8000_48000,
1427 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1428 SNDRV_PCM_FMTBIT_S24_LE),
1429 .channels_min = 1,
1430 .channels_max = 8,
1431 .rate_min = 8000,
1432 .rate_max = 48000,
1433 },
1434 .ops = &msm_fe_dai_ops,
1435 .name = "SEC_TDM_TX_7_HOSTLESS",
1436 .probe = fe_dai_probe,
1437 },
1438 {
1439 .playback = {
1440 .stream_name = "Secondary TDM7 Hostless Playback",
1441 .aif_name = "SEC_TDM_RX_7_DL_HL",
1442 .rates = SNDRV_PCM_RATE_8000_48000,
1443 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1444 SNDRV_PCM_FMTBIT_S24_LE),
1445 .channels_min = 1,
1446 .channels_max = 8,
1447 .rate_min = 8000,
1448 .rate_max = 48000,
1449 },
1450 .ops = &msm_fe_dai_ops,
1451 .name = "SEC_TDM_RX_7_HOSTLESS",
1452 .probe = fe_dai_probe,
1453 },
1454 {
1455 .capture = {
1456 .stream_name = "Tertiary TDM0 Hostless Capture",
1457 .aif_name = "TERT_TDM_TX_0_UL_HL",
1458 .rates = SNDRV_PCM_RATE_8000_48000,
1459 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1460 SNDRV_PCM_FMTBIT_S24_LE),
1461 .channels_min = 1,
1462 .channels_max = 8,
1463 .rate_min = 8000,
1464 .rate_max = 48000,
1465 },
1466 .ops = &msm_fe_dai_ops,
1467 .name = "TERT_TDM_TX_0_HOSTLESS",
1468 .probe = fe_dai_probe,
1469 },
1470 {
1471 .playback = {
1472 .stream_name = "Tertiary TDM0 Hostless Playback",
1473 .aif_name = "TERT_TDM_RX_0_DL_HL",
1474 .rates = SNDRV_PCM_RATE_8000_48000,
1475 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1476 SNDRV_PCM_FMTBIT_S24_LE),
1477 .channels_min = 1,
1478 .channels_max = 8,
1479 .rate_min = 8000,
1480 .rate_max = 48000,
1481 },
1482 .ops = &msm_fe_dai_ops,
1483 .name = "TERT_TDM_RX_0_HOSTLESS",
1484 .probe = fe_dai_probe,
1485 },
1486 {
1487 .capture = {
1488 .stream_name = "Tertiary TDM1 Hostless Capture",
1489 .aif_name = "TERT_TDM_TX_1_UL_HL",
1490 .rates = SNDRV_PCM_RATE_8000_48000,
1491 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1492 SNDRV_PCM_FMTBIT_S24_LE),
1493 .channels_min = 1,
1494 .channels_max = 8,
1495 .rate_min = 8000,
1496 .rate_max = 48000,
1497 },
1498 .ops = &msm_fe_dai_ops,
1499 .name = "TERT_TDM_TX_1_HOSTLESS",
1500 .probe = fe_dai_probe,
1501 },
1502 {
1503 .playback = {
1504 .stream_name = "Tertiary TDM1 Hostless Playback",
1505 .aif_name = "TERT_TDM_RX_1_DL_HL",
1506 .rates = SNDRV_PCM_RATE_8000_48000,
1507 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1508 SNDRV_PCM_FMTBIT_S24_LE),
1509 .channels_min = 1,
1510 .channels_max = 8,
1511 .rate_min = 8000,
1512 .rate_max = 48000,
1513 },
1514 .ops = &msm_fe_dai_ops,
1515 .name = "TERT_TDM_RX_1_HOSTLESS",
1516 .probe = fe_dai_probe,
1517 },
1518 {
1519 .capture = {
1520 .stream_name = "Tertiary TDM2 Hostless Capture",
1521 .aif_name = "TERT_TDM_TX_2_UL_HL",
1522 .rates = SNDRV_PCM_RATE_8000_48000,
1523 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1524 SNDRV_PCM_FMTBIT_S24_LE),
1525 .channels_min = 1,
1526 .channels_max = 8,
1527 .rate_min = 8000,
1528 .rate_max = 48000,
1529 },
1530 .ops = &msm_fe_dai_ops,
1531 .name = "TERT_TDM_TX_2_HOSTLESS",
1532 .probe = fe_dai_probe,
1533 },
1534 {
1535 .playback = {
1536 .stream_name = "Tertiary TDM2 Hostless Playback",
1537 .aif_name = "TERT_TDM_RX_2_DL_HL",
1538 .rates = SNDRV_PCM_RATE_8000_48000,
1539 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1540 SNDRV_PCM_FMTBIT_S24_LE),
1541 .channels_min = 1,
1542 .channels_max = 8,
1543 .rate_min = 8000,
1544 .rate_max = 48000,
1545 },
1546 .ops = &msm_fe_dai_ops,
1547 .name = "TERT_TDM_RX_2_HOSTLESS",
1548 .probe = fe_dai_probe,
1549 },
1550 {
1551 .capture = {
1552 .stream_name = "Tertiary TDM3 Hostless Capture",
1553 .aif_name = "TERT_TDM_TX_3_UL_HL",
1554 .rates = SNDRV_PCM_RATE_8000_48000,
1555 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1556 SNDRV_PCM_FMTBIT_S24_LE),
1557 .channels_min = 1,
1558 .channels_max = 8,
1559 .rate_min = 8000,
1560 .rate_max = 48000,
1561 },
1562 .ops = &msm_fe_dai_ops,
1563 .name = "TERT_TDM_TX_3_HOSTLESS",
1564 .probe = fe_dai_probe,
1565 },
1566 {
1567 .playback = {
1568 .stream_name = "Tertiary TDM3 Hostless Playback",
1569 .aif_name = "TERT_TDM_RX_3_DL_HL",
1570 .rates = SNDRV_PCM_RATE_8000_48000,
1571 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1572 SNDRV_PCM_FMTBIT_S24_LE),
1573 .channels_min = 1,
1574 .channels_max = 8,
1575 .rate_min = 8000,
1576 .rate_max = 48000,
1577 },
1578 .ops = &msm_fe_dai_ops,
1579 .name = "TERT_TDM_RX_3_HOSTLESS",
1580 .probe = fe_dai_probe,
1581 },
1582 {
1583 .capture = {
1584 .stream_name = "Tertiary TDM4 Hostless Capture",
1585 .aif_name = "TERT_TDM_TX_4_UL_HL",
1586 .rates = SNDRV_PCM_RATE_8000_48000,
1587 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1588 SNDRV_PCM_FMTBIT_S24_LE),
1589 .channels_min = 1,
1590 .channels_max = 8,
1591 .rate_min = 8000,
1592 .rate_max = 48000,
1593 },
1594 .ops = &msm_fe_dai_ops,
1595 .name = "TERT_TDM_TX_4_HOSTLESS",
1596 .probe = fe_dai_probe,
1597 },
1598 {
1599 .playback = {
1600 .stream_name = "Tertiary TDM4 Hostless Playback",
1601 .aif_name = "TERT_TDM_RX_4_DL_HL",
1602 .rates = SNDRV_PCM_RATE_8000_48000,
1603 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1604 SNDRV_PCM_FMTBIT_S24_LE),
1605 .channels_min = 1,
1606 .channels_max = 8,
1607 .rate_min = 8000,
1608 .rate_max = 48000,
1609 },
1610 .ops = &msm_fe_dai_ops,
1611 .name = "TERT_TDM_RX_4_HOSTLESS",
1612 .probe = fe_dai_probe,
1613 },
1614 {
1615 .capture = {
1616 .stream_name = "Tertiary TDM5 Hostless Capture",
1617 .aif_name = "TERT_TDM_TX_5_UL_HL",
1618 .rates = SNDRV_PCM_RATE_8000_48000,
1619 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1620 SNDRV_PCM_FMTBIT_S24_LE),
1621 .channels_min = 1,
1622 .channels_max = 8,
1623 .rate_min = 8000,
1624 .rate_max = 48000,
1625 },
1626 .ops = &msm_fe_dai_ops,
1627 .name = "TERT_TDM_TX_5_HOSTLESS",
1628 .probe = fe_dai_probe,
1629 },
1630 {
1631 .playback = {
1632 .stream_name = "Tertiary TDM5 Hostless Playback",
1633 .aif_name = "TERT_TDM_RX_5_DL_HL",
1634 .rates = SNDRV_PCM_RATE_8000_48000,
1635 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1636 SNDRV_PCM_FMTBIT_S24_LE),
1637 .channels_min = 1,
1638 .channels_max = 8,
1639 .rate_min = 8000,
1640 .rate_max = 48000,
1641 },
1642 .ops = &msm_fe_dai_ops,
1643 .name = "TERT_TDM_RX_5_HOSTLESS",
1644 .probe = fe_dai_probe,
1645 },
1646 {
1647 .capture = {
1648 .stream_name = "Tertiary TDM6 Hostless Capture",
1649 .aif_name = "TERT_TDM_TX_6_UL_HL",
1650 .rates = SNDRV_PCM_RATE_8000_48000,
1651 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1652 SNDRV_PCM_FMTBIT_S24_LE),
1653 .channels_min = 1,
1654 .channels_max = 8,
1655 .rate_min = 8000,
1656 .rate_max = 48000,
1657 },
1658 .ops = &msm_fe_dai_ops,
1659 .name = "TERT_TDM_TX_6_HOSTLESS",
1660 .probe = fe_dai_probe,
1661 },
1662 {
1663 .playback = {
1664 .stream_name = "Tertiary TDM6 Hostless Playback",
1665 .aif_name = "TERT_TDM_RX_6_DL_HL",
1666 .rates = SNDRV_PCM_RATE_8000_48000,
1667 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1668 SNDRV_PCM_FMTBIT_S24_LE),
1669 .channels_min = 1,
1670 .channels_max = 8,
1671 .rate_min = 8000,
1672 .rate_max = 48000,
1673 },
1674 .ops = &msm_fe_dai_ops,
1675 .name = "TERT_TDM_RX_6_HOSTLESS",
1676 .probe = fe_dai_probe,
1677 },
1678 {
1679 .capture = {
1680 .stream_name = "Tertiary TDM7 Hostless Capture",
1681 .aif_name = "TERT_TDM_TX_7_UL_HL",
1682 .rates = SNDRV_PCM_RATE_8000_48000,
1683 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1684 SNDRV_PCM_FMTBIT_S24_LE),
1685 .channels_min = 1,
1686 .channels_max = 8,
1687 .rate_min = 8000,
1688 .rate_max = 48000,
1689 },
1690 .ops = &msm_fe_dai_ops,
1691 .name = "TERT_TDM_TX_7_HOSTLESS",
1692 .probe = fe_dai_probe,
1693 },
1694 {
1695 .playback = {
1696 .stream_name = "Tertiary TDM7 Hostless Playback",
1697 .aif_name = "TERT_TDM_RX_7_DL_HL",
1698 .rates = SNDRV_PCM_RATE_8000_48000,
1699 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1700 SNDRV_PCM_FMTBIT_S24_LE),
1701 .channels_min = 1,
1702 .channels_max = 8,
1703 .rate_min = 8000,
1704 .rate_max = 48000,
1705 },
1706 .ops = &msm_fe_dai_ops,
1707 .name = "TERT_TDM_RX_7_HOSTLESS",
1708 .probe = fe_dai_probe,
1709 },
1710 {
1711 .capture = {
1712 .stream_name = "Quaternary TDM0 Hostless Capture",
1713 .aif_name = "QUAT_TDM_TX_0_UL_HL",
1714 .rates = SNDRV_PCM_RATE_8000_48000,
1715 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1716 SNDRV_PCM_FMTBIT_S24_LE),
1717 .channels_min = 1,
1718 .channels_max = 8,
1719 .rate_min = 8000,
1720 .rate_max = 48000,
1721 },
1722 .ops = &msm_fe_dai_ops,
1723 .name = "QUAT_TDM_TX_0_HOSTLESS",
1724 .probe = fe_dai_probe,
1725 },
1726 {
1727 .playback = {
1728 .stream_name = "Quaternary TDM0 Hostless Playback",
1729 .aif_name = "QUAT_TDM_RX_0_DL_HL",
1730 .rates = SNDRV_PCM_RATE_8000_48000,
1731 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1732 SNDRV_PCM_FMTBIT_S24_LE),
1733 .channels_min = 1,
1734 .channels_max = 8,
1735 .rate_min = 8000,
1736 .rate_max = 48000,
1737 },
1738 .ops = &msm_fe_dai_ops,
1739 .name = "QUAT_TDM_RX_0_HOSTLESS",
1740 .probe = fe_dai_probe,
1741 },
1742 {
1743 .capture = {
1744 .stream_name = "Quaternary TDM1 Hostless Capture",
1745 .aif_name = "QUAT_TDM_TX_1_UL_HL",
1746 .rates = SNDRV_PCM_RATE_8000_48000,
1747 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1748 SNDRV_PCM_FMTBIT_S24_LE),
1749 .channels_min = 1,
1750 .channels_max = 8,
1751 .rate_min = 8000,
1752 .rate_max = 48000,
1753 },
1754 .ops = &msm_fe_dai_ops,
1755 .name = "QUAT_TDM_TX_1_HOSTLESS",
1756 .probe = fe_dai_probe,
1757 },
1758 {
1759 .playback = {
1760 .stream_name = "Quaternary TDM1 Hostless Playback",
1761 .aif_name = "QUAT_TDM_RX_1_DL_HL",
1762 .rates = SNDRV_PCM_RATE_8000_48000,
1763 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1764 SNDRV_PCM_FMTBIT_S24_LE),
1765 .channels_min = 1,
1766 .channels_max = 8,
1767 .rate_min = 8000,
1768 .rate_max = 48000,
1769 },
1770 .ops = &msm_fe_dai_ops,
1771 .name = "QUAT_TDM_RX_1_HOSTLESS",
1772 .probe = fe_dai_probe,
1773 },
1774 {
1775 .capture = {
1776 .stream_name = "Quaternary TDM2 Hostless Capture",
1777 .aif_name = "QUAT_TDM_TX_2_UL_HL",
1778 .rates = SNDRV_PCM_RATE_8000_48000,
1779 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1780 SNDRV_PCM_FMTBIT_S24_LE),
1781 .channels_min = 1,
1782 .channels_max = 8,
1783 .rate_min = 8000,
1784 .rate_max = 48000,
1785 },
1786 .ops = &msm_fe_dai_ops,
1787 .name = "QUAT_TDM_TX_2_HOSTLESS",
1788 .probe = fe_dai_probe,
1789 },
1790 {
1791 .playback = {
1792 .stream_name = "Quaternary TDM2 Hostless Playback",
1793 .aif_name = "QUAT_TDM_RX_2_DL_HL",
1794 .rates = SNDRV_PCM_RATE_8000_48000,
1795 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1796 SNDRV_PCM_FMTBIT_S24_LE),
1797 .channels_min = 1,
1798 .channels_max = 8,
1799 .rate_min = 8000,
1800 .rate_max = 48000,
1801 },
1802 .ops = &msm_fe_dai_ops,
1803 .name = "QUAT_TDM_RX_2_HOSTLESS",
1804 .probe = fe_dai_probe,
1805 },
1806 {
1807 .capture = {
1808 .stream_name = "Quaternary TDM3 Hostless Capture",
1809 .aif_name = "QUAT_TDM_TX_3_UL_HL",
1810 .rates = SNDRV_PCM_RATE_8000_48000,
1811 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1812 SNDRV_PCM_FMTBIT_S24_LE),
1813 .channels_min = 1,
1814 .channels_max = 8,
1815 .rate_min = 8000,
1816 .rate_max = 48000,
1817 },
1818 .ops = &msm_fe_dai_ops,
1819 .name = "QUAT_TDM_TX_3_HOSTLESS",
1820 .probe = fe_dai_probe,
1821 },
1822 {
1823 .playback = {
1824 .stream_name = "Quaternary TDM3 Hostless Playback",
1825 .aif_name = "QUAT_TDM_RX_3_DL_HL",
1826 .rates = SNDRV_PCM_RATE_8000_48000,
1827 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1828 SNDRV_PCM_FMTBIT_S24_LE),
1829 .channels_min = 1,
1830 .channels_max = 8,
1831 .rate_min = 8000,
1832 .rate_max = 48000,
1833 },
1834 .ops = &msm_fe_dai_ops,
1835 .name = "QUAT_TDM_RX_3_HOSTLESS",
1836 .probe = fe_dai_probe,
1837 },
1838 {
1839 .capture = {
1840 .stream_name = "Quaternary TDM4 Hostless Capture",
1841 .aif_name = "QUAT_TDM_TX_4_UL_HL",
1842 .rates = SNDRV_PCM_RATE_8000_48000,
1843 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1844 SNDRV_PCM_FMTBIT_S24_LE),
1845 .channels_min = 1,
1846 .channels_max = 8,
1847 .rate_min = 8000,
1848 .rate_max = 48000,
1849 },
1850 .ops = &msm_fe_dai_ops,
1851 .name = "QUAT_TDM_TX_4_HOSTLESS",
1852 .probe = fe_dai_probe,
1853 },
1854 {
1855 .playback = {
1856 .stream_name = "Quaternary TDM4 Hostless Playback",
1857 .aif_name = "QUAT_TDM_RX_4_DL_HL",
1858 .rates = SNDRV_PCM_RATE_8000_48000,
1859 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1860 SNDRV_PCM_FMTBIT_S24_LE),
1861 .channels_min = 1,
1862 .channels_max = 8,
1863 .rate_min = 8000,
1864 .rate_max = 48000,
1865 },
1866 .ops = &msm_fe_dai_ops,
1867 .name = "QUAT_TDM_RX_4_HOSTLESS",
1868 .probe = fe_dai_probe,
1869 },
1870 {
1871 .capture = {
1872 .stream_name = "Quaternary TDM5 Hostless Capture",
1873 .aif_name = "QUAT_TDM_TX_5_UL_HL",
1874 .rates = SNDRV_PCM_RATE_8000_48000,
1875 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1876 SNDRV_PCM_FMTBIT_S24_LE),
1877 .channels_min = 1,
1878 .channels_max = 8,
1879 .rate_min = 8000,
1880 .rate_max = 48000,
1881 },
1882 .ops = &msm_fe_dai_ops,
1883 .name = "QUAT_TDM_TX_5_HOSTLESS",
1884 .probe = fe_dai_probe,
1885 },
1886 {
1887 .playback = {
1888 .stream_name = "Quaternary TDM5 Hostless Playback",
1889 .aif_name = "QUAT_TDM_RX_5_DL_HL",
1890 .rates = SNDRV_PCM_RATE_8000_48000,
1891 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1892 SNDRV_PCM_FMTBIT_S24_LE),
1893 .channels_min = 1,
1894 .channels_max = 8,
1895 .rate_min = 8000,
1896 .rate_max = 48000,
1897 },
1898 .ops = &msm_fe_dai_ops,
1899 .name = "QUAT_TDM_RX_5_HOSTLESS",
1900 .probe = fe_dai_probe,
1901 },
1902 {
1903 .capture = {
1904 .stream_name = "Quaternary TDM6 Hostless Capture",
1905 .aif_name = "QUAT_TDM_TX_6_UL_HL",
1906 .rates = SNDRV_PCM_RATE_8000_48000,
1907 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1908 SNDRV_PCM_FMTBIT_S24_LE),
1909 .channels_min = 1,
1910 .channels_max = 8,
1911 .rate_min = 8000,
1912 .rate_max = 48000,
1913 },
1914 .ops = &msm_fe_dai_ops,
1915 .name = "QUAT_TDM_TX_6_HOSTLESS",
1916 .probe = fe_dai_probe,
1917 },
1918 {
1919 .playback = {
1920 .stream_name = "Quaternary TDM6 Hostless Playback",
1921 .aif_name = "QUAT_TDM_RX_6_DL_HL",
1922 .rates = SNDRV_PCM_RATE_8000_48000,
1923 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1924 SNDRV_PCM_FMTBIT_S24_LE),
1925 .channels_min = 1,
1926 .channels_max = 8,
1927 .rate_min = 8000,
1928 .rate_max = 48000,
1929 },
1930 .ops = &msm_fe_dai_ops,
1931 .name = "QUAT_TDM_RX_6_HOSTLESS",
1932 .probe = fe_dai_probe,
1933 },
1934 {
1935 .capture = {
1936 .stream_name = "Quaternary TDM7 Hostless Capture",
1937 .aif_name = "QUAT_TDM_TX_7_UL_HL",
1938 .rates = SNDRV_PCM_RATE_8000_48000,
1939 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1940 SNDRV_PCM_FMTBIT_S24_LE),
1941 .channels_min = 1,
1942 .channels_max = 8,
1943 .rate_min = 8000,
1944 .rate_max = 48000,
1945 },
1946 .ops = &msm_fe_dai_ops,
1947 .name = "QUAT_TDM_TX_7_HOSTLESS",
1948 .probe = fe_dai_probe,
1949 },
1950 {
1951 .playback = {
1952 .stream_name = "Quaternary TDM7 Hostless Playback",
1953 .aif_name = "QUAT_TDM_RX_7_DL_HL",
1954 .rates = SNDRV_PCM_RATE_8000_48000,
1955 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1956 SNDRV_PCM_FMTBIT_S24_LE),
1957 .channels_min = 1,
1958 .channels_max = 8,
1959 .rate_min = 8000,
1960 .rate_max = 48000,
1961 },
1962 .ops = &msm_fe_dai_ops,
1963 .name = "QUAT_TDM_RX_7_HOSTLESS",
1964 .probe = fe_dai_probe,
1965 },
1966 {
1967 .playback = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301968 .stream_name = "DTMF_RX_HOSTLESS Playback",
1969 .aif_name = "DTMF_DL_HL",
1970 .rates = SNDRV_PCM_RATE_8000_48000,
1971 .formats = SNDRV_PCM_FMTBIT_S16_LE,
1972 .channels_min = 1,
1973 .channels_max = 2,
1974 .rate_min = 8000,
1975 .rate_max = 48000,
1976 },
1977 .ops = &msm_fe_dai_ops,
1978 .name = "DTMF_RX_HOSTLESS",
1979 .probe = fe_dai_probe,
1980 },
1981 {
1982 .capture = {
1983 .stream_name = "CPE Listen Audio capture",
1984 .aif_name = "CPE_LSM_UL_HL",
1985 .rates = SNDRV_PCM_RATE_8000_48000,
1986 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1987 SNDRV_PCM_FMTBIT_S24_LE),
1988 .channels_min = 1,
1989 .channels_max = 1,
1990 .rate_min = 8000,
1991 .rate_max = 48000,
1992 },
1993 .ops = &msm_fe_dai_ops,
1994 .name = "CPE_LSM_NOHOST",
1995 },
1996 {
1997 .playback = {
1998 .stream_name = "VOLTE_STUB Playback",
1999 .aif_name = "VOLTE_STUB_DL",
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 .capture = {
2008 .stream_name = "VOLTE_STUB Capture",
2009 .aif_name = "VOLTE_STUB_UL",
2010 .rates = SNDRV_PCM_RATE_8000_48000,
2011 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2012 .channels_min = 1,
2013 .channels_max = 2,
2014 .rate_min = 8000,
2015 .rate_max = 48000,
2016 },
2017 .ops = &msm_fe_dai_ops,
2018 .name = "VOLTE_STUB",
2019 .probe = fe_dai_probe,
2020 },
2021 {
2022 .playback = {
2023 .stream_name = "VOICE2_STUB Playback",
2024 .aif_name = "VOICE2_STUB_DL",
2025 .rates = SNDRV_PCM_RATE_8000_48000,
2026 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2027 .channels_min = 1,
2028 .channels_max = 2,
2029 .rate_min = 8000,
2030 .rate_max = 48000,
2031 },
2032 .capture = {
2033 .stream_name = "VOICE2_STUB Capture",
2034 .aif_name = "VOICE2_STUB_UL",
2035 .rates = SNDRV_PCM_RATE_8000_48000,
2036 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2037 .channels_min = 1,
2038 .channels_max = 2,
2039 .rate_min = 8000,
2040 .rate_max = 48000,
2041 },
2042 .ops = &msm_fe_dai_ops,
2043 .name = "VOICE2_STUB",
2044 .probe = fe_dai_probe,
2045 },
2046 {
2047 .playback = {
2048 .stream_name = "MultiMedia9 Playback",
2049 .aif_name = "MM_DL9",
2050 .rates = (SNDRV_PCM_RATE_8000_384000|
2051 SNDRV_PCM_RATE_KNOT),
2052 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2053 SNDRV_PCM_FMTBIT_S24_LE |
2054 SNDRV_PCM_FMTBIT_S24_3LE),
2055 .channels_min = 1,
2056 .channels_max = 8,
2057 .rate_min = 8000,
2058 .rate_max = 384000,
2059 },
2060 .capture = {
2061 .stream_name = "MultiMedia9 Capture",
2062 .aif_name = "MM_UL9",
2063 .rates = (SNDRV_PCM_RATE_8000_48000|
2064 SNDRV_PCM_RATE_KNOT),
2065 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2066 .channels_min = 1,
2067 .channels_max = 8,
2068 .rate_min = 8000,
2069 .rate_max = 48000,
2070 },
2071 .ops = &msm_fe_Multimedia_dai_ops,
2072 .name = "MultiMedia9",
2073 .probe = fe_dai_probe,
2074 },
2075 {
2076 .playback = {
2077 .stream_name = "QCHAT Playback",
2078 .aif_name = "QCHAT_DL",
2079 .rates = SNDRV_PCM_RATE_8000_48000,
2080 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2081 .channels_min = 1,
2082 .channels_max = 2,
2083 .rate_min = 8000,
2084 .rate_max = 48000,
2085 },
2086 .capture = {
2087 .stream_name = "QCHAT Capture",
2088 .aif_name = "QCHAT_UL",
2089 .rates = SNDRV_PCM_RATE_8000_48000,
2090 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2091 .channels_min = 1,
2092 .channels_max = 2,
2093 .rate_min = 8000,
2094 .rate_max = 48000,
2095 },
2096 .ops = &msm_fe_dai_ops,
2097 .name = "QCHAT",
2098 .probe = fe_dai_probe,
2099 },
2100 {
2101 .capture = {
2102 .stream_name = "Listen 1 Audio Service Capture",
2103 .aif_name = "LSM1_UL_HL",
2104 .rates = (SNDRV_PCM_RATE_16000 |
2105 SNDRV_PCM_RATE_48000),
2106 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2107 SNDRV_PCM_FMTBIT_S24_LE),
2108 .channels_min = 1,
2109 .channels_max = 4,
2110 .rate_min = 16000,
2111 .rate_max = 48000,
2112 },
2113 .ops = &msm_fe_dai_ops,
2114 .name = "LSM1",
2115 .probe = fe_dai_probe,
2116 },
2117 {
2118 .capture = {
2119 .stream_name = "Listen 2 Audio Service Capture",
2120 .aif_name = "LSM2_UL_HL",
2121 .rates = (SNDRV_PCM_RATE_16000 |
2122 SNDRV_PCM_RATE_48000),
2123 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2124 SNDRV_PCM_FMTBIT_S24_LE),
2125 .channels_min = 1,
2126 .channels_max = 4,
2127 .rate_min = 16000,
2128 .rate_max = 48000,
2129 },
2130 .ops = &msm_fe_dai_ops,
2131 .name = "LSM2",
2132 .probe = fe_dai_probe,
2133 },
2134 {
2135 .capture = {
2136 .stream_name = "Listen 3 Audio Service Capture",
2137 .aif_name = "LSM3_UL_HL",
2138 .rates = (SNDRV_PCM_RATE_16000 |
2139 SNDRV_PCM_RATE_48000),
2140 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2141 SNDRV_PCM_FMTBIT_S24_LE),
2142 .channels_min = 1,
2143 .channels_max = 4,
2144 .rate_min = 16000,
2145 .rate_max = 48000,
2146 },
2147 .ops = &msm_fe_dai_ops,
2148 .name = "LSM3",
2149 .probe = fe_dai_probe,
2150 },
2151 {
2152 .capture = {
2153 .stream_name = "Listen 4 Audio Service Capture",
2154 .aif_name = "LSM4_UL_HL",
2155 .rates = (SNDRV_PCM_RATE_16000 |
2156 SNDRV_PCM_RATE_48000),
2157 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2158 SNDRV_PCM_FMTBIT_S24_LE),
2159 .channels_min = 1,
2160 .channels_max = 4,
2161 .rate_min = 16000,
2162 .rate_max = 48000,
2163 },
2164 .ops = &msm_fe_dai_ops,
2165 .name = "LSM4",
2166 .probe = fe_dai_probe,
2167 },
2168 {
2169 .capture = {
2170 .stream_name = "Listen 5 Audio Service Capture",
2171 .aif_name = "LSM5_UL_HL",
2172 .rates = (SNDRV_PCM_RATE_16000 |
2173 SNDRV_PCM_RATE_48000),
2174 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2175 SNDRV_PCM_FMTBIT_S24_LE),
2176 .channels_min = 1,
2177 .channels_max = 4,
2178 .rate_min = 16000,
2179 .rate_max = 48000,
2180 },
2181 .ops = &msm_fe_dai_ops,
2182 .name = "LSM5",
2183 .probe = fe_dai_probe,
2184 },
2185 {
2186 .capture = {
2187 .stream_name = "Listen 6 Audio Service Capture",
2188 .aif_name = "LSM6_UL_HL",
2189 .rates = (SNDRV_PCM_RATE_16000 |
2190 SNDRV_PCM_RATE_48000),
2191 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2192 SNDRV_PCM_FMTBIT_S24_LE),
2193 .channels_min = 1,
2194 .channels_max = 4,
2195 .rate_min = 16000,
2196 .rate_max = 48000,
2197 },
2198 .ops = &msm_fe_dai_ops,
2199 .name = "LSM6",
2200 .probe = fe_dai_probe,
2201 },
2202 {
2203 .capture = {
2204 .stream_name = "Listen 7 Audio Service Capture",
2205 .aif_name = "LSM7_UL_HL",
2206 .rates = (SNDRV_PCM_RATE_16000 |
2207 SNDRV_PCM_RATE_48000),
2208 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2209 SNDRV_PCM_FMTBIT_S24_LE),
2210 .channels_min = 1,
2211 .channels_max = 4,
2212 .rate_min = 16000,
2213 .rate_max = 48000,
2214 },
2215 .ops = &msm_fe_dai_ops,
2216 .name = "LSM7",
2217 .probe = fe_dai_probe,
2218 },
2219 {
2220 .capture = {
2221 .stream_name = "Listen 8 Audio Service Capture",
2222 .aif_name = "LSM8_UL_HL",
2223 .rates = (SNDRV_PCM_RATE_16000 |
2224 SNDRV_PCM_RATE_48000),
2225 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2226 SNDRV_PCM_FMTBIT_S24_LE),
2227 .channels_min = 1,
2228 .channels_max = 4,
2229 .rate_min = 16000,
2230 .rate_max = 48000,
2231 },
2232 .ops = &msm_fe_dai_ops,
2233 .name = "LSM8",
2234 .probe = fe_dai_probe,
2235 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302236 /* FE DAIs created for multiple instances of offload playback */
2237 {
2238 .playback = {
2239 .stream_name = "MultiMedia10 Playback",
2240 .aif_name = "MM_DL10",
2241 .rates = (SNDRV_PCM_RATE_8000_384000 |
2242 SNDRV_PCM_RATE_KNOT),
2243 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2244 SNDRV_PCM_FMTBIT_S24_LE |
2245 SNDRV_PCM_FMTBIT_S24_3LE |
2246 SNDRV_PCM_FMTBIT_S32_LE),
2247 .channels_min = 1,
2248 .channels_max = 8,
2249 .rate_min = 8000,
2250 .rate_max = 384000,
2251 },
Laxminath Kasam38070be2017-08-17 18:21:59 +05302252 .capture = {
2253 .stream_name = "MultiMedia10 Capture",
2254 .aif_name = "MM_UL10",
2255 .rates = (SNDRV_PCM_RATE_8000_48000 |
2256 SNDRV_PCM_RATE_KNOT),
2257 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2258 SNDRV_PCM_FMTBIT_S24_LE |
2259 SNDRV_PCM_FMTBIT_S24_3LE),
2260 .channels_min = 1,
2261 .channels_max = 8,
2262 .rate_min = 8000,
2263 .rate_max = 48000,
2264 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302265 .ops = &msm_fe_Multimedia_dai_ops,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302266 .name = "MultiMedia10",
2267 .probe = fe_dai_probe,
2268 },
2269 {
2270 .playback = {
2271 .stream_name = "MultiMedia11 Playback",
2272 .aif_name = "MM_DL11",
2273 .rates = (SNDRV_PCM_RATE_8000_384000 |
2274 SNDRV_PCM_RATE_KNOT),
2275 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2276 SNDRV_PCM_FMTBIT_S24_LE |
2277 SNDRV_PCM_FMTBIT_S24_3LE |
2278 SNDRV_PCM_FMTBIT_S32_LE),
2279 .channels_min = 1,
2280 .channels_max = 8,
2281 .rate_min = 8000,
2282 .rate_max = 384000,
2283 },
2284 .ops = &msm_fe_Multimedia_dai_ops,
2285 .compress_new = snd_soc_new_compress,
2286 .name = "MultiMedia11",
2287 .probe = fe_dai_probe,
2288 },
2289 {
2290 .playback = {
2291 .stream_name = "MultiMedia12 Playback",
2292 .aif_name = "MM_DL12",
2293 .rates = (SNDRV_PCM_RATE_8000_384000 |
2294 SNDRV_PCM_RATE_KNOT),
2295 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2296 SNDRV_PCM_FMTBIT_S24_LE |
2297 SNDRV_PCM_FMTBIT_S24_3LE |
2298 SNDRV_PCM_FMTBIT_S32_LE),
2299 .channels_min = 1,
2300 .channels_max = 8,
2301 .rate_min = 8000,
2302 .rate_max = 384000,
2303 },
2304 .ops = &msm_fe_Multimedia_dai_ops,
2305 .compress_new = snd_soc_new_compress,
2306 .name = "MultiMedia12",
2307 .probe = fe_dai_probe,
2308 },
2309 {
2310 .playback = {
2311 .stream_name = "MultiMedia13 Playback",
2312 .aif_name = "MM_DL13",
2313 .rates = (SNDRV_PCM_RATE_8000_384000 |
2314 SNDRV_PCM_RATE_KNOT),
2315 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2316 SNDRV_PCM_FMTBIT_S24_LE |
2317 SNDRV_PCM_FMTBIT_S24_3LE |
2318 SNDRV_PCM_FMTBIT_S32_LE),
2319 .channels_min = 1,
2320 .channels_max = 8,
2321 .rate_min = 8000,
2322 .rate_max = 384000,
2323 },
2324 .ops = &msm_fe_Multimedia_dai_ops,
2325 .compress_new = snd_soc_new_compress,
2326 .name = "MultiMedia13",
2327 .probe = fe_dai_probe,
2328 },
2329 {
2330 .playback = {
2331 .stream_name = "MultiMedia14 Playback",
2332 .aif_name = "MM_DL14",
2333 .rates = (SNDRV_PCM_RATE_8000_384000 |
2334 SNDRV_PCM_RATE_KNOT),
2335 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2336 SNDRV_PCM_FMTBIT_S24_LE |
2337 SNDRV_PCM_FMTBIT_S24_3LE |
2338 SNDRV_PCM_FMTBIT_S32_LE),
2339 .channels_min = 1,
2340 .channels_max = 8,
2341 .rate_min = 8000,
2342 .rate_max = 384000,
2343 },
2344 .ops = &msm_fe_Multimedia_dai_ops,
2345 .compress_new = snd_soc_new_compress,
2346 .name = "MultiMedia14",
2347 .probe = fe_dai_probe,
2348 },
2349 {
2350 .playback = {
2351 .stream_name = "MultiMedia15 Playback",
2352 .aif_name = "MM_DL15",
2353 .rates = (SNDRV_PCM_RATE_8000_384000 |
2354 SNDRV_PCM_RATE_KNOT),
2355 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2356 SNDRV_PCM_FMTBIT_S24_LE |
2357 SNDRV_PCM_FMTBIT_S24_3LE |
2358 SNDRV_PCM_FMTBIT_S32_LE),
2359 .channels_min = 1,
2360 .channels_max = 8,
2361 .rate_min = 8000,
2362 .rate_max = 384000,
2363 },
2364 .ops = &msm_fe_Multimedia_dai_ops,
2365 .compress_new = snd_soc_new_compress,
2366 .name = "MultiMedia15",
2367 .probe = fe_dai_probe,
2368 },
2369 {
2370 .playback = {
2371 .stream_name = "MultiMedia16 Playback",
2372 .aif_name = "MM_DL16",
2373 .rates = (SNDRV_PCM_RATE_8000_384000 |
2374 SNDRV_PCM_RATE_KNOT),
2375 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2376 SNDRV_PCM_FMTBIT_S24_LE |
2377 SNDRV_PCM_FMTBIT_S24_3LE |
2378 SNDRV_PCM_FMTBIT_S32_LE),
2379 .channels_min = 1,
2380 .channels_max = 8,
2381 .rate_min = 8000,
2382 .rate_max = 384000,
2383 },
Asish Bhattacharya34504582017-08-08 12:55:01 +05302384 .capture = {
2385 .stream_name = "MultiMedia16 Capture",
2386 .aif_name = "MM_UL16",
2387 .rates = (SNDRV_PCM_RATE_8000_48000|
2388 SNDRV_PCM_RATE_KNOT),
2389 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2390 SNDRV_PCM_FMTBIT_S24_LE |
2391 SNDRV_PCM_FMTBIT_S24_3LE |
2392 SNDRV_PCM_FMTBIT_S32_LE),
2393 .channels_min = 1,
2394 .channels_max = 8,
2395 .rate_min = 8000,
2396 .rate_max = 48000,
2397 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302398 .ops = &msm_fe_Multimedia_dai_ops,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302399 .name = "MultiMedia16",
2400 .probe = fe_dai_probe,
2401 },
2402 {
2403 .playback = {
2404 .stream_name = "VoiceMMode1 Playback",
2405 .aif_name = "VOICEMMODE1_DL",
2406 .rates = SNDRV_PCM_RATE_8000_48000,
2407 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2408 .channels_min = 1,
2409 .channels_max = 2,
2410 .rate_min = 8000,
2411 .rate_max = 48000,
2412 },
2413 .capture = {
2414 .stream_name = "VoiceMMode1 Capture",
2415 .aif_name = "VOICEMMODE1_UL",
2416 .rates = SNDRV_PCM_RATE_8000_48000,
2417 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2418 .channels_min = 1,
2419 .channels_max = 2,
2420 .rate_min = 8000,
2421 .rate_max = 48000,
2422 },
2423 .ops = &msm_fe_dai_ops,
2424 .name = "VoiceMMode1",
2425 .probe = fe_dai_probe,
2426 },
2427 {
2428 .playback = {
2429 .stream_name = "VoiceMMode2 Playback",
2430 .aif_name = "VOICEMMODE2_DL",
2431 .rates = SNDRV_PCM_RATE_8000_48000,
2432 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2433 .channels_min = 1,
2434 .channels_max = 2,
2435 .rate_min = 8000,
2436 .rate_max = 48000,
2437 },
2438 .capture = {
2439 .stream_name = "VoiceMMode2 Capture",
2440 .aif_name = "VOICEMMODE2_UL",
2441 .rates = SNDRV_PCM_RATE_8000_48000,
2442 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2443 .channels_min = 1,
2444 .channels_max = 2,
2445 .rate_min = 8000,
2446 .rate_max = 48000,
2447 },
2448 .ops = &msm_fe_dai_ops,
2449 .name = "VoiceMMode2",
2450 .probe = fe_dai_probe,
2451 },
2452 {
2453 .capture = {
2454 .stream_name = "MultiMedia17 Capture",
2455 .aif_name = "MM_UL17",
2456 .rates = (SNDRV_PCM_RATE_8000_48000|
2457 SNDRV_PCM_RATE_KNOT),
2458 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2459 SNDRV_PCM_FMTBIT_S24_LE |
2460 SNDRV_PCM_FMTBIT_S24_3LE),
2461 .channels_min = 1,
2462 .channels_max = 8,
2463 .rate_min = 8000,
2464 .rate_max = 48000,
2465 },
2466 .ops = &msm_fe_Multimedia_dai_ops,
2467 .compress_new = snd_soc_new_compress,
2468 .name = "MultiMedia17",
2469 .probe = fe_dai_probe,
2470 },
2471 {
2472 .capture = {
2473 .stream_name = "MultiMedia18 Capture",
2474 .aif_name = "MM_UL18",
2475 .rates = (SNDRV_PCM_RATE_8000_48000|
2476 SNDRV_PCM_RATE_KNOT),
2477 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2478 SNDRV_PCM_FMTBIT_S24_LE |
2479 SNDRV_PCM_FMTBIT_S24_3LE),
2480 .channels_min = 1,
2481 .channels_max = 8,
2482 .rate_min = 8000,
2483 .rate_max = 192000,
2484 },
2485 .ops = &msm_fe_Multimedia_dai_ops,
2486 .compress_new = snd_soc_new_compress,
2487 .name = "MultiMedia18",
2488 .probe = fe_dai_probe,
2489 },
2490 {
2491 .capture = {
2492 .stream_name = "MultiMedia19 Capture",
2493 .aif_name = "MM_UL19",
2494 .rates = (SNDRV_PCM_RATE_8000_48000|
2495 SNDRV_PCM_RATE_KNOT),
2496 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2497 SNDRV_PCM_FMTBIT_S24_LE |
2498 SNDRV_PCM_FMTBIT_S24_3LE),
2499 .channels_min = 1,
2500 .channels_max = 8,
2501 .rate_min = 8000,
2502 .rate_max = 48000,
2503 },
2504 .ops = &msm_fe_Multimedia_dai_ops,
2505 .compress_new = snd_soc_new_compress,
2506 .name = "MultiMedia19",
2507 .probe = fe_dai_probe,
2508 },
2509 {
2510 .playback = {
2511 .stream_name = "MultiMedia20 Playback",
2512 .aif_name = "MM_DL20",
2513 .rates = (SNDRV_PCM_RATE_8000_384000|
2514 SNDRV_PCM_RATE_KNOT),
2515 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2516 SNDRV_PCM_FMTBIT_S24_LE |
2517 SNDRV_PCM_FMTBIT_S24_3LE |
2518 SNDRV_PCM_FMTBIT_S32_LE),
2519 .channels_min = 1,
2520 .channels_max = 8,
2521 .rate_min = 8000,
2522 .rate_max = 384000,
2523 },
2524 .capture = {
2525 .stream_name = "MultiMedia20 Capture",
2526 .aif_name = "MM_UL20",
2527 .rates = (SNDRV_PCM_RATE_8000_48000|
2528 SNDRV_PCM_RATE_KNOT),
2529 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2530 SNDRV_PCM_FMTBIT_S24_LE |
2531 SNDRV_PCM_FMTBIT_S24_3LE |
2532 SNDRV_PCM_FMTBIT_S32_LE),
2533 .channels_min = 1,
2534 .channels_max = 8,
2535 .rate_min = 8000,
2536 .rate_max = 48000,
2537 },
2538 .ops = &msm_fe_Multimedia_dai_ops,
2539 .name = "MultiMedia20",
2540 .probe = fe_dai_probe,
2541 },
2542};
2543
2544static int msm_fe_dai_dev_probe(struct platform_device *pdev)
2545{
2546
2547 dev_dbg(&pdev->dev, "%s: dev name %s\n", __func__,
2548 dev_name(&pdev->dev));
2549 return snd_soc_register_component(&pdev->dev, &msm_fe_dai_component,
2550 msm_fe_dais, ARRAY_SIZE(msm_fe_dais));
2551}
2552
2553static int msm_fe_dai_dev_remove(struct platform_device *pdev)
2554{
2555 snd_soc_unregister_component(&pdev->dev);
2556 return 0;
2557}
2558
2559static const struct of_device_id msm_dai_fe_dt_match[] = {
2560 {.compatible = "qcom,msm-dai-fe"},
2561 {}
2562};
2563
2564static struct platform_driver msm_fe_dai_driver = {
2565 .probe = msm_fe_dai_dev_probe,
2566 .remove = msm_fe_dai_dev_remove,
2567 .driver = {
2568 .name = "msm-dai-fe",
2569 .owner = THIS_MODULE,
2570 .of_match_table = msm_dai_fe_dt_match,
2571 },
2572};
2573
Laxminath Kasam8b1366a2017-10-05 01:44:16 +05302574int __init msm_fe_dai_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302575{
2576 return platform_driver_register(&msm_fe_dai_driver);
2577}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302578
Laxminath Kasam8b1366a2017-10-05 01:44:16 +05302579void __exit msm_fe_dai_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302580{
2581 platform_driver_unregister(&msm_fe_dai_driver);
2582}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302583
2584/* Module information */
2585MODULE_DESCRIPTION("MSM Frontend DAI driver");
2586MODULE_LICENSE("GPL v2");