blob: 7654e561f00d88be49c1fabf45c38e53b7b4df6f [file] [log] [blame]
Sachin Mohan Gadag7c944232018-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,
Dieter Luecking92c6a5f2018-09-28 15:05:43 +0200102 .channels_max = 16,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530103 .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,
Dieter Luecking92c6a5f2018-09-28 15:05:43 +0200116 .channels_max = 16,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530117 .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,
Dieter Luecking92c6a5f2018-09-28 15:05:43 +0200314 .channels_max = 16,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530315 .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 = {
Mangesh Kunchamwar91c21732018-07-10 17:02:46 +0530538 .stream_name = "CDC_DMA_HOSTLESS Playback",
539 .aif_name = "CDC_DMA_DL_HL",
540 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
541 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
542 SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
543 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
544 SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
545 SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
546 SNDRV_PCM_RATE_384000,
547 .formats = SNDRV_PCM_FMTBIT_S16_LE |
548 SNDRV_PCM_FMTBIT_S24_LE |
549 SNDRV_PCM_FMTBIT_S24_3LE |
550 SNDRV_PCM_FMTBIT_S32_LE,
551 .channels_min = 1,
Vatsal Bucha680384a2018-08-31 11:50:42 +0530552 .channels_max = 4,
Mangesh Kunchamwar91c21732018-07-10 17:02:46 +0530553 .rate_min = 8000,
554 .rate_max = 384000,
555 },
556 .capture = {
557 .stream_name = "CDC_DMA_HOSTLESS Capture",
558 .aif_name = "CDC_DMA_UL_HL",
559 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
560 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
561 SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
562 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
563 SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
564 SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
565 SNDRV_PCM_RATE_384000,
566 .formats = SNDRV_PCM_FMTBIT_S16_LE |
567 SNDRV_PCM_FMTBIT_S24_LE |
568 SNDRV_PCM_FMTBIT_S24_3LE,
569 .channels_min = 1,
570 .channels_max = 8,
571 .rate_min = 8000,
572 .rate_max = 384000,
573 },
574 .ops = &msm_fe_dai_ops,
575 .name = "CDC_DMA_HOSTLESS",
576 .probe = fe_dai_probe,
577 },
578 {
Aditya Bavanari54ca7d12018-08-08 13:59:54 +0530579 .capture = {
580 .stream_name = "TX3_CDC_DMA_HOSTLESS Capture",
581 .aif_name = "TX3_CDC_DMA_UL_HL",
582 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
583 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
584 SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
585 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
586 SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
587 SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
588 SNDRV_PCM_RATE_384000,
589 .formats = SNDRV_PCM_FMTBIT_S16_LE |
590 SNDRV_PCM_FMTBIT_S24_LE |
591 SNDRV_PCM_FMTBIT_S24_3LE,
592 .channels_min = 1,
593 .channels_max = 8,
594 .rate_min = 8000,
595 .rate_max = 384000,
596 },
597 .ops = &msm_fe_dai_ops,
598 .name = "TX3_CDC_DMA_HOSTLESS",
599 .probe = fe_dai_probe,
600 },
601 {
Mangesh Kunchamwar91c21732018-07-10 17:02:46 +0530602 .playback = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530603 .stream_name = "INT_FM_HOSTLESS Playback",
604 .aif_name = "INTFM_DL_HL",
605 .rates = SNDRV_PCM_RATE_8000_48000,
606 .formats = SNDRV_PCM_FMTBIT_S16_LE,
607 .channels_min = 1,
608 .channels_max = 2,
609 .rate_min = 8000,
610 .rate_max = 48000,
611 },
612 .capture = {
613 .stream_name = "INT_FM_HOSTLESS Capture",
614 .aif_name = "INTFM_UL_HL",
615 .rates = SNDRV_PCM_RATE_8000_48000,
616 .formats = SNDRV_PCM_FMTBIT_S16_LE,
617 .channels_min = 1,
618 .channels_max = 2,
619 .rate_min = 8000,
620 .rate_max = 48000,
621 },
622 .ops = &msm_fe_dai_ops,
623 .name = "INT_FM_HOSTLESS",
624 .probe = fe_dai_probe,
625 },
626 {
627 .playback = {
628 .stream_name = "INT_HFP_BT Hostless Playback",
629 .aif_name = "INTHFP_DL_HL",
630 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
631 .formats = SNDRV_PCM_FMTBIT_S16_LE,
632 .channels_min = 1,
633 .channels_max = 2,
634 .rate_min = 8000,
635 .rate_max = 16000,
636 },
637 .capture = {
638 .stream_name = "INT_HFP_BT Hostless Capture",
639 .aif_name = "INTHFP_UL_HL",
640 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
641 .formats = SNDRV_PCM_FMTBIT_S16_LE,
642 .channels_min = 1,
643 .channels_max = 2,
644 .rate_min = 8000,
645 .rate_max = 16000,
646 },
647 .ops = &msm_fe_dai_ops,
648 .name = "INT_HFP_BT_HOSTLESS",
649 .probe = fe_dai_probe,
650 },
651 {
652 .playback = {
653 .stream_name = "USBAUDIO_HOSTLESS Playback",
654 .aif_name = "USBAUDIO_DL_HL",
655 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
656 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
657 SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
658 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
659 SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
660 SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
661 SNDRV_PCM_RATE_384000,
662 .formats = SNDRV_PCM_FMTBIT_S16_LE |
663 SNDRV_PCM_FMTBIT_S24_LE |
664 SNDRV_PCM_FMTBIT_S24_3LE |
665 SNDRV_PCM_FMTBIT_S32_LE,
666 .channels_min = 1,
667 .channels_max = 8,
668 .rate_min = 8000,
669 .rate_max = 384000,
670 },
671 .capture = {
672 .stream_name = "USBAUDIO_HOSTLESS Capture",
673 .aif_name = "USBAUDIO_UL_HL",
674 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
675 SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
676 SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
677 SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 |
678 SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 |
679 SNDRV_PCM_RATE_192000 | SNDRV_PCM_RATE_352800 |
680 SNDRV_PCM_RATE_384000,
681 .formats = SNDRV_PCM_FMTBIT_S16_LE |
682 SNDRV_PCM_FMTBIT_S24_LE |
683 SNDRV_PCM_FMTBIT_S24_3LE |
684 SNDRV_PCM_FMTBIT_S32_LE,
685 .channels_min = 1,
686 .channels_max = 8,
687 .rate_min = 8000,
688 .rate_max = 384000,
689 },
690 .ops = &msm_fe_dai_ops,
691 .name = "USBAUDIO_HOSTLESS",
692 .probe = fe_dai_probe,
693 },
694 {
695 .playback = {
696 .stream_name = "AFE Playback",
697 .aif_name = "PCM_RX",
698 .rates = (SNDRV_PCM_RATE_8000 |
699 SNDRV_PCM_RATE_16000 |
700 SNDRV_PCM_RATE_48000),
701 .formats = SNDRV_PCM_FMTBIT_S16_LE,
702 .channels_min = 1,
703 .channels_max = 2,
704 .rate_min = 8000,
705 .rate_max = 48000,
706 },
707 .capture = {
708 .stream_name = "AFE Capture",
709 .aif_name = "PCM_TX",
710 .rates = (SNDRV_PCM_RATE_8000 |
711 SNDRV_PCM_RATE_16000 |
712 SNDRV_PCM_RATE_48000),
713 .formats = SNDRV_PCM_FMTBIT_S16_LE,
714 .channels_min = 1,
715 .channels_max = 2,
716 .rate_min = 8000,
717 .rate_max = 48000,
718 },
719 .ops = &msm_fe_dai_ops,
720 .name = "AFE-PROXY",
721 .probe = fe_dai_probe,
722 },
723 {
724 .playback = {
725 .stream_name = "HDMI_HOSTLESS Playback",
726 .aif_name = "HDMI_DL_HL",
727 .rates = SNDRV_PCM_RATE_8000_48000,
728 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
729 SNDRV_PCM_FMTBIT_S24_LE),
730 .channels_min = 1,
731 .channels_max = 2,
732 .rate_min = 8000,
733 .rate_max = 48000,
734 },
735 .ops = &msm_fe_dai_ops,
736 .name = "HDMI_HOSTLESS",
737 .probe = fe_dai_probe,
738 },
739 {
740 .playback = {
741 .stream_name = "AUXPCM_HOSTLESS Playback",
742 .aif_name = "AUXPCM_DL_HL",
743 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
744 .formats = SNDRV_PCM_FMTBIT_S16_LE,
745 .channels_min = 1,
746 .channels_max = 1,
747 .rate_min = 8000,
748 .rate_max = 16000,
749 },
750 .capture = {
751 .stream_name = "AUXPCM_HOSTLESS Capture",
752 .aif_name = "AUXPCM_UL_HL",
753 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
754 .formats = SNDRV_PCM_FMTBIT_S16_LE,
755 .channels_min = 1,
756 .channels_max = 1,
757 .rate_min = 8000,
758 .rate_max = 16000,
759 },
760 .ops = &msm_fe_dai_ops,
761 .name = "AUXPCM_HOSTLESS",
762 .probe = fe_dai_probe,
763 },
764 {
765 .playback = {
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -0800766 .stream_name = "SEC_AUXPCM_HOSTLESS Playback",
767 .aif_name = "SEC_AUXPCM_DL_HL",
768 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
769 .formats = SNDRV_PCM_FMTBIT_S16_LE,
770 .channels_min = 1,
771 .channels_max = 1,
772 .rate_min = 8000,
773 .rate_max = 16000,
774 },
775 .ops = &msm_fe_dai_ops,
776 .name = "SEC_AUXPCM_RX_HOSTLESS",
777 .probe = fe_dai_probe,
778 },
779 {
780 .capture = {
781 .stream_name = "SEC_AUXPCM_HOSTLESS Capture",
782 .aif_name = "SEC_AUXPCM_UL_HL",
783 .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000,
784 .formats = SNDRV_PCM_FMTBIT_S16_LE,
785 .channels_min = 1,
786 .channels_max = 1,
787 .rate_min = 8000,
788 .rate_max = 16000,
789 },
790 .ops = &msm_fe_dai_ops,
791 .name = "SEC_AUXPCM_TX_HOSTLESS",
792 .probe = fe_dai_probe,
793 },
794 {
795 .playback = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530796 .stream_name = "VOICE_STUB Playback",
797 .aif_name = "VOICE_STUB_DL",
798 .rates = SNDRV_PCM_RATE_8000_48000,
799 .formats = SNDRV_PCM_FMTBIT_S16_LE,
800 .channels_min = 1,
801 .channels_max = 2,
802 .rate_min = 8000,
803 .rate_max = 48000,
804 },
805 .capture = {
806 .stream_name = "VOICE_STUB Capture",
807 .aif_name = "VOICE_STUB_UL",
808 .rates = SNDRV_PCM_RATE_8000_48000,
809 .formats = SNDRV_PCM_FMTBIT_S16_LE,
810 .channels_min = 1,
811 .channels_max = 2,
812 .rate_min = 8000,
813 .rate_max = 48000,
814 },
815 .ops = &msm_fe_dai_ops,
816 .name = "VOICE_STUB",
817 .probe = fe_dai_probe,
818 },
819 {
820 .playback = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530821 .stream_name = "MI2S_RX_HOSTLESS Playback",
822 .aif_name = "MI2S_DL_HL",
823 .rates = SNDRV_PCM_RATE_8000_48000,
824 .formats = SNDRV_PCM_FMTBIT_S16_LE,
825 .channels_min = 1,
826 .channels_max = 2,
827 .rate_min = 8000,
828 .rate_max = 48000,
829 },
830 .capture = {
831 .stream_name = "MI2S_TX_HOSTLESS Capture",
832 .aif_name = "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 = "MI2S_TX_HOSTLESS",
843 .probe = fe_dai_probe,
844 },
845 {
846 .playback = {
847 .stream_name = "SEC_I2S_RX_HOSTLESS Playback",
848 .aif_name = "SEC_I2S_DL_HL",
849 .rates = SNDRV_PCM_RATE_8000_48000,
850 .formats = SNDRV_PCM_FMTBIT_S16_LE,
851 .channels_min = 1,
852 .channels_max = 2,
853 .rate_min = 8000,
854 .rate_max = 48000,
855 },
856 .ops = &msm_fe_dai_ops,
857 .name = "SEC_I2S_RX_HOSTLESS",
858 .probe = fe_dai_probe,
859 },
860 {
861 .capture = {
862 .stream_name = "Primary MI2S_TX Hostless Capture",
863 .aif_name = "PRI_MI2S_UL_HL",
864 .rates = SNDRV_PCM_RATE_8000_48000,
865 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
866 SNDRV_PCM_FMTBIT_S24_LE),
867 .channels_min = 1,
868 .channels_max = 2,
869 .rate_min = 8000,
870 .rate_max = 48000,
871 },
872 .ops = &msm_fe_dai_ops,
873 .name = "PRI_MI2S_TX_HOSTLESS",
874 .probe = fe_dai_probe,
875 },
876 {
877 .playback = {
878 .stream_name = "Primary MI2S_RX Hostless Playback",
879 .aif_name = "PRI_MI2S_DL_HL",
880 .rates = SNDRV_PCM_RATE_8000_384000,
881 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
882 SNDRV_PCM_FMTBIT_S24_LE),
883 .channels_min = 1,
884 .channels_max = 2,
885 .rate_min = 8000,
886 .rate_max = 384000,
887 },
888 .ops = &msm_fe_dai_ops,
889 .name = "PRI_MI2S_RX_HOSTLESS",
890 .probe = fe_dai_probe,
891 },
892 {
893 .capture = {
894 .stream_name = "Secondary MI2S_TX Hostless Capture",
895 .aif_name = "SEC_MI2S_UL_HL",
896 .rates = SNDRV_PCM_RATE_8000_48000,
897 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
898 SNDRV_PCM_FMTBIT_S24_LE),
899 .channels_min = 1,
900 .channels_max = 2,
901 .rate_min = 8000,
902 .rate_max = 48000,
903 },
904 .ops = &msm_fe_dai_ops,
905 .name = "SEC_MI2S_TX_HOSTLESS",
906 .probe = fe_dai_probe,
907 },
908 {
909 .playback = {
910 .stream_name = "Secondary MI2S_RX Hostless Playback",
911 .aif_name = "SEC_MI2S_DL_HL",
912 .rates = SNDRV_PCM_RATE_8000_384000,
913 .formats = SNDRV_PCM_FMTBIT_S16_LE |
914 SNDRV_PCM_FMTBIT_S24_LE,
915 .channels_min = 1,
916 .channels_max = 2,
917 .rate_min = 8000,
918 .rate_max = 384000,
919 },
920 .ops = &msm_fe_dai_ops,
921 .name = "SEC_MI2S_RX_HOSTLESS",
922 .probe = fe_dai_probe,
923 },
924 {
925 .capture = {
926 .stream_name = "Tertiary MI2S_TX Hostless Capture",
927 .aif_name = "TERT_MI2S_UL_HL",
928 .rates = SNDRV_PCM_RATE_8000_48000,
929 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
930 SNDRV_PCM_FMTBIT_S24_LE),
931 .channels_min = 1,
932 .channels_max = 2,
933 .rate_min = 8000,
934 .rate_max = 48000,
935 },
936 .ops = &msm_fe_dai_ops,
937 .name = "TERT_MI2S_TX_HOSTLESS",
938 .probe = fe_dai_probe,
939 },
940 {
941 .playback = {
942 .stream_name = "Tertiary MI2S_RX Hostless Playback",
943 .aif_name = "TERT_MI2S_DL_HL",
944 .rates = SNDRV_PCM_RATE_8000_384000,
945 .formats = SNDRV_PCM_FMTBIT_S16_LE |
946 SNDRV_PCM_FMTBIT_S24_LE,
947 .channels_min = 1,
948 .channels_max = 2,
949 .rate_min = 8000,
950 .rate_max = 384000,
951 },
952 .ops = &msm_fe_dai_ops,
953 .name = "TERT_MI2S_RX_HOSTLESS",
954 .probe = fe_dai_probe,
955 },
956 {
957 .capture = {
958 .stream_name = "Quaternary MI2S_TX Hostless Capture",
959 .aif_name = "QUAT_MI2S_UL_HL",
960 .rates = SNDRV_PCM_RATE_8000_48000,
961 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
962 SNDRV_PCM_FMTBIT_S24_LE),
963 .channels_min = 1,
964 .channels_max = 2,
965 .rate_min = 8000,
966 .rate_max = 48000,
967 },
968 .ops = &msm_fe_dai_ops,
969 .name = "QUAT_MI2S_TX_HOSTLESS",
970 .probe = fe_dai_probe,
971 },
972 {
973 .playback = {
974 .stream_name = "Quaternary MI2S_RX Hostless Playback",
975 .aif_name = "QUAT_MI2S_DL_HL",
976 .rates = SNDRV_PCM_RATE_8000_384000,
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 = 384000,
983 },
984 .ops = &msm_fe_dai_ops,
985 .name = "QUAT_MI2S_RX_HOSTLESS",
986 .probe = fe_dai_probe,
987 },
988 {
989 .playback = {
990 .stream_name = "INT0 MI2S_RX Hostless Playback",
991 .aif_name = "INT0_MI2S_DL_HL",
992 .rates = SNDRV_PCM_RATE_8000_192000,
993 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
994 SNDRV_PCM_FMTBIT_S24_LE),
995 .channels_min = 1,
996 .channels_max = 2,
997 .rate_min = 8000,
998 .rate_max = 192000,
999 },
1000 .ops = &msm_fe_dai_ops,
1001 .name = "INT0_MI2S_RX_HOSTLESS",
1002 .probe = fe_dai_probe,
1003 },
1004 {
1005 .playback = {
1006 .stream_name = "INT4 MI2S_RX Hostless Playback",
1007 .aif_name = "INT4_MI2S_DL_HL",
1008 .rates = SNDRV_PCM_RATE_8000_192000,
1009 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1010 SNDRV_PCM_FMTBIT_S24_LE),
1011 .channels_min = 1,
1012 .channels_max = 4,
1013 .rate_min = 8000,
1014 .rate_max = 192000,
1015 },
1016 .ops = &msm_fe_dai_ops,
1017 .name = "INT4_MI2S_RX_HOSTLESS",
1018 .probe = fe_dai_probe,
1019 },
1020 {
1021 .capture = {
1022 .stream_name = "INT3 MI2S_TX Hostless Capture",
1023 .aif_name = "INT3_MI2S_UL_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 = 2,
1029 .rate_min = 8000,
1030 .rate_max = 48000,
1031 },
1032 .ops = &msm_fe_dai_ops,
1033 .name = "INT3_MI2S_TX_HOSTLESS",
1034 .probe = fe_dai_probe,
1035 },
1036 /* TDM Hostless */
1037 {
1038 .capture = {
1039 .stream_name = "Primary TDM0 Hostless Capture",
1040 .aif_name = "PRI_TDM_TX_0_UL_HL",
1041 .rates = SNDRV_PCM_RATE_8000_48000,
1042 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1043 SNDRV_PCM_FMTBIT_S24_LE),
1044 .channels_min = 1,
1045 .channels_max = 8,
1046 .rate_min = 8000,
1047 .rate_max = 48000,
1048 },
1049 .ops = &msm_fe_dai_ops,
1050 .name = "PRI_TDM_TX_0_HOSTLESS",
1051 .probe = fe_dai_probe,
1052 },
1053 {
1054 .playback = {
1055 .stream_name = "Primary TDM0 Hostless Playback",
1056 .aif_name = "PRI_TDM_RX_0_DL_HL",
1057 .rates = SNDRV_PCM_RATE_8000_48000,
1058 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1059 SNDRV_PCM_FMTBIT_S24_LE),
1060 .channels_min = 1,
1061 .channels_max = 8,
1062 .rate_min = 8000,
1063 .rate_max = 48000,
1064 },
1065 .ops = &msm_fe_dai_ops,
1066 .name = "PRI_TDM_RX_0_HOSTLESS",
1067 .probe = fe_dai_probe,
1068 },
1069 {
1070 .capture = {
1071 .stream_name = "Primary TDM1 Hostless Capture",
1072 .aif_name = "PRI_TDM_TX_1_UL_HL",
1073 .rates = SNDRV_PCM_RATE_8000_48000,
1074 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1075 SNDRV_PCM_FMTBIT_S24_LE),
1076 .channels_min = 1,
1077 .channels_max = 8,
1078 .rate_min = 8000,
1079 .rate_max = 48000,
1080 },
1081 .ops = &msm_fe_dai_ops,
1082 .name = "PRI_TDM_TX_1_HOSTLESS",
1083 .probe = fe_dai_probe,
1084 },
1085 {
1086 .playback = {
1087 .stream_name = "Primary TDM1 Hostless Playback",
1088 .aif_name = "PRI_TDM_RX_1_DL_HL",
1089 .rates = SNDRV_PCM_RATE_8000_48000,
1090 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1091 SNDRV_PCM_FMTBIT_S24_LE),
1092 .channels_min = 1,
1093 .channels_max = 8,
1094 .rate_min = 8000,
1095 .rate_max = 48000,
1096 },
1097 .ops = &msm_fe_dai_ops,
1098 .name = "PRI_TDM_RX_1_HOSTLESS",
1099 .probe = fe_dai_probe,
1100 },
1101 {
1102 .capture = {
1103 .stream_name = "Primary TDM2 Hostless Capture",
1104 .aif_name = "PRI_TDM_TX_2_UL_HL",
1105 .rates = SNDRV_PCM_RATE_8000_48000,
1106 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1107 SNDRV_PCM_FMTBIT_S24_LE),
1108 .channels_min = 1,
1109 .channels_max = 8,
1110 .rate_min = 8000,
1111 .rate_max = 48000,
1112 },
1113 .ops = &msm_fe_dai_ops,
1114 .name = "PRI_TDM_TX_2_HOSTLESS",
1115 .probe = fe_dai_probe,
1116 },
1117 {
1118 .playback = {
1119 .stream_name = "Primary TDM2 Hostless Playback",
1120 .aif_name = "PRI_TDM_RX_2_DL_HL",
1121 .rates = SNDRV_PCM_RATE_8000_48000,
1122 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1123 SNDRV_PCM_FMTBIT_S24_LE),
1124 .channels_min = 1,
1125 .channels_max = 8,
1126 .rate_min = 8000,
1127 .rate_max = 48000,
1128 },
1129 .ops = &msm_fe_dai_ops,
1130 .name = "PRI_TDM_RX_2_HOSTLESS",
1131 .probe = fe_dai_probe,
1132 },
1133 {
1134 .capture = {
1135 .stream_name = "Primary TDM3 Hostless Capture",
1136 .aif_name = "PRI_TDM_TX_3_UL_HL",
1137 .rates = SNDRV_PCM_RATE_8000_48000,
1138 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1139 SNDRV_PCM_FMTBIT_S24_LE),
1140 .channels_min = 1,
1141 .channels_max = 8,
1142 .rate_min = 8000,
1143 .rate_max = 48000,
1144 },
1145 .ops = &msm_fe_dai_ops,
1146 .name = "PRI_TDM_TX_3_HOSTLESS",
1147 .probe = fe_dai_probe,
1148 },
1149 {
1150 .playback = {
1151 .stream_name = "Primary TDM3 Hostless Playback",
1152 .aif_name = "PRI_TDM_RX_3_DL_HL",
1153 .rates = SNDRV_PCM_RATE_8000_48000,
1154 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1155 SNDRV_PCM_FMTBIT_S24_LE),
1156 .channels_min = 1,
1157 .channels_max = 8,
1158 .rate_min = 8000,
1159 .rate_max = 48000,
1160 },
1161 .ops = &msm_fe_dai_ops,
1162 .name = "PRI_TDM_RX_3_HOSTLESS",
1163 .probe = fe_dai_probe,
1164 },
1165 {
1166 .capture = {
1167 .stream_name = "Primary TDM4 Hostless Capture",
1168 .aif_name = "PRI_TDM_TX_4_UL_HL",
1169 .rates = SNDRV_PCM_RATE_8000_48000,
1170 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1171 SNDRV_PCM_FMTBIT_S24_LE),
1172 .channels_min = 1,
1173 .channels_max = 8,
1174 .rate_min = 8000,
1175 .rate_max = 48000,
1176 },
1177 .ops = &msm_fe_dai_ops,
1178 .name = "PRI_TDM_TX_4_HOSTLESS",
1179 .probe = fe_dai_probe,
1180 },
1181 {
1182 .playback = {
1183 .stream_name = "Primary TDM4 Hostless Playback",
1184 .aif_name = "PRI_TDM_RX_4_DL_HL",
1185 .rates = SNDRV_PCM_RATE_8000_48000,
1186 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1187 SNDRV_PCM_FMTBIT_S24_LE),
1188 .channels_min = 1,
1189 .channels_max = 8,
1190 .rate_min = 8000,
1191 .rate_max = 48000,
1192 },
1193 .ops = &msm_fe_dai_ops,
1194 .name = "PRI_TDM_RX_4_HOSTLESS",
1195 .probe = fe_dai_probe,
1196 },
1197 {
1198 .capture = {
1199 .stream_name = "Primary TDM5 Hostless Capture",
1200 .aif_name = "PRI_TDM_TX_5_UL_HL",
1201 .rates = SNDRV_PCM_RATE_8000_48000,
1202 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1203 SNDRV_PCM_FMTBIT_S24_LE),
1204 .channels_min = 1,
1205 .channels_max = 8,
1206 .rate_min = 8000,
1207 .rate_max = 48000,
1208 },
1209 .ops = &msm_fe_dai_ops,
1210 .name = "PRI_TDM_TX_5_HOSTLESS",
1211 .probe = fe_dai_probe,
1212 },
1213 {
1214 .playback = {
1215 .stream_name = "Primary TDM5 Hostless Playback",
1216 .aif_name = "PRI_TDM_RX_5_DL_HL",
1217 .rates = SNDRV_PCM_RATE_8000_48000,
1218 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1219 SNDRV_PCM_FMTBIT_S24_LE),
1220 .channels_min = 1,
1221 .channels_max = 8,
1222 .rate_min = 8000,
1223 .rate_max = 48000,
1224 },
1225 .ops = &msm_fe_dai_ops,
1226 .name = "PRI_TDM_RX_5_HOSTLESS",
1227 .probe = fe_dai_probe,
1228 },
1229 {
1230 .capture = {
1231 .stream_name = "Primary TDM6 Hostless Capture",
1232 .aif_name = "PRI_TDM_TX_6_UL_HL",
1233 .rates = SNDRV_PCM_RATE_8000_48000,
1234 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1235 SNDRV_PCM_FMTBIT_S24_LE),
1236 .channels_min = 1,
1237 .channels_max = 8,
1238 .rate_min = 8000,
1239 .rate_max = 48000,
1240 },
1241 .ops = &msm_fe_dai_ops,
1242 .name = "PRI_TDM_TX_6_HOSTLESS",
1243 .probe = fe_dai_probe,
1244 },
1245 {
1246 .playback = {
1247 .stream_name = "Primary TDM6 Hostless Playback",
1248 .aif_name = "PRI_TDM_RX_6_DL_HL",
1249 .rates = SNDRV_PCM_RATE_8000_48000,
1250 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1251 SNDRV_PCM_FMTBIT_S24_LE),
1252 .channels_min = 1,
1253 .channels_max = 8,
1254 .rate_min = 8000,
1255 .rate_max = 48000,
1256 },
1257 .ops = &msm_fe_dai_ops,
1258 .name = "PRI_TDM_RX_6_HOSTLESS",
1259 .probe = fe_dai_probe,
1260 },
1261 {
1262 .capture = {
1263 .stream_name = "Primary TDM7 Hostless Capture",
1264 .aif_name = "PRI_TDM_TX_7_UL_HL",
1265 .rates = SNDRV_PCM_RATE_8000_48000,
1266 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1267 SNDRV_PCM_FMTBIT_S24_LE),
1268 .channels_min = 1,
1269 .channels_max = 8,
1270 .rate_min = 8000,
1271 .rate_max = 48000,
1272 },
1273 .ops = &msm_fe_dai_ops,
1274 .name = "PRI_TDM_TX_7_HOSTLESS",
1275 .probe = fe_dai_probe,
1276 },
1277 {
1278 .playback = {
1279 .stream_name = "Primary TDM7 Hostless Playback",
1280 .aif_name = "PRI_TDM_RX_7_DL_HL",
1281 .rates = SNDRV_PCM_RATE_8000_48000,
1282 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1283 SNDRV_PCM_FMTBIT_S24_LE),
1284 .channels_min = 1,
1285 .channels_max = 8,
1286 .rate_min = 8000,
1287 .rate_max = 48000,
1288 },
1289 .ops = &msm_fe_dai_ops,
1290 .name = "PRI_TDM_RX_7_HOSTLESS",
1291 .probe = fe_dai_probe,
1292 },
1293 {
1294 .capture = {
1295 .stream_name = "Secondary TDM0 Hostless Capture",
1296 .aif_name = "SEC_TDM_TX_0_UL_HL",
1297 .rates = SNDRV_PCM_RATE_8000_48000,
1298 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1299 SNDRV_PCM_FMTBIT_S24_LE),
1300 .channels_min = 1,
1301 .channels_max = 8,
1302 .rate_min = 8000,
1303 .rate_max = 48000,
1304 },
1305 .ops = &msm_fe_dai_ops,
1306 .name = "SEC_TDM_TX_0_HOSTLESS",
1307 .probe = fe_dai_probe,
1308 },
1309 {
1310 .playback = {
1311 .stream_name = "Secondary TDM0 Hostless Playback",
1312 .aif_name = "SEC_TDM_RX_0_DL_HL",
1313 .rates = SNDRV_PCM_RATE_8000_48000,
1314 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1315 SNDRV_PCM_FMTBIT_S24_LE),
1316 .channels_min = 1,
1317 .channels_max = 8,
1318 .rate_min = 8000,
1319 .rate_max = 48000,
1320 },
1321 .ops = &msm_fe_dai_ops,
1322 .name = "SEC_TDM_RX_0_HOSTLESS",
1323 .probe = fe_dai_probe,
1324 },
1325 {
1326 .capture = {
1327 .stream_name = "Secondary TDM1 Hostless Capture",
1328 .aif_name = "SEC_TDM_TX_1_UL_HL",
1329 .rates = SNDRV_PCM_RATE_8000_48000,
1330 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1331 SNDRV_PCM_FMTBIT_S24_LE),
1332 .channels_min = 1,
1333 .channels_max = 8,
1334 .rate_min = 8000,
1335 .rate_max = 48000,
1336 },
1337 .ops = &msm_fe_dai_ops,
1338 .name = "SEC_TDM_TX_1_HOSTLESS",
1339 .probe = fe_dai_probe,
1340 },
1341 {
1342 .playback = {
1343 .stream_name = "Secondary TDM1 Hostless Playback",
1344 .aif_name = "SEC_TDM_RX_1_DL_HL",
1345 .rates = SNDRV_PCM_RATE_8000_48000,
1346 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1347 SNDRV_PCM_FMTBIT_S24_LE),
1348 .channels_min = 1,
1349 .channels_max = 8,
1350 .rate_min = 8000,
1351 .rate_max = 48000,
1352 },
1353 .ops = &msm_fe_dai_ops,
1354 .name = "SEC_TDM_RX_1_HOSTLESS",
1355 .probe = fe_dai_probe,
1356 },
1357 {
1358 .capture = {
1359 .stream_name = "Secondary TDM2 Hostless Capture",
1360 .aif_name = "SEC_TDM_TX_2_UL_HL",
1361 .rates = SNDRV_PCM_RATE_8000_48000,
1362 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1363 SNDRV_PCM_FMTBIT_S24_LE),
1364 .channels_min = 1,
1365 .channels_max = 8,
1366 .rate_min = 8000,
1367 .rate_max = 48000,
1368 },
1369 .ops = &msm_fe_dai_ops,
1370 .name = "SEC_TDM_TX_2_HOSTLESS",
1371 .probe = fe_dai_probe,
1372 },
1373 {
1374 .playback = {
1375 .stream_name = "Secondary TDM2 Hostless Playback",
1376 .aif_name = "SEC_TDM_RX_2_DL_HL",
1377 .rates = SNDRV_PCM_RATE_8000_48000,
1378 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1379 SNDRV_PCM_FMTBIT_S24_LE),
1380 .channels_min = 1,
1381 .channels_max = 8,
1382 .rate_min = 8000,
1383 .rate_max = 48000,
1384 },
1385 .ops = &msm_fe_dai_ops,
1386 .name = "SEC_TDM_RX_2_HOSTLESS",
1387 .probe = fe_dai_probe,
1388 },
1389 {
1390 .capture = {
1391 .stream_name = "Secondary TDM3 Hostless Capture",
1392 .aif_name = "SEC_TDM_TX_3_UL_HL",
1393 .rates = SNDRV_PCM_RATE_8000_48000,
1394 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1395 SNDRV_PCM_FMTBIT_S24_LE),
1396 .channels_min = 1,
1397 .channels_max = 8,
1398 .rate_min = 8000,
1399 .rate_max = 48000,
1400 },
1401 .ops = &msm_fe_dai_ops,
1402 .name = "SEC_TDM_TX_3_HOSTLESS",
1403 .probe = fe_dai_probe,
1404 },
1405 {
1406 .playback = {
1407 .stream_name = "Secondary TDM3 Hostless Playback",
1408 .aif_name = "SEC_TDM_RX_3_DL_HL",
1409 .rates = SNDRV_PCM_RATE_8000_48000,
1410 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1411 SNDRV_PCM_FMTBIT_S24_LE),
1412 .channels_min = 1,
1413 .channels_max = 8,
1414 .rate_min = 8000,
1415 .rate_max = 48000,
1416 },
1417 .ops = &msm_fe_dai_ops,
1418 .name = "SEC_TDM_RX_3_HOSTLESS",
1419 .probe = fe_dai_probe,
1420 },
1421 {
1422 .capture = {
1423 .stream_name = "Secondary TDM4 Hostless Capture",
1424 .aif_name = "SEC_TDM_TX_4_UL_HL",
1425 .rates = SNDRV_PCM_RATE_8000_48000,
1426 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1427 SNDRV_PCM_FMTBIT_S24_LE),
1428 .channels_min = 1,
1429 .channels_max = 8,
1430 .rate_min = 8000,
1431 .rate_max = 48000,
1432 },
1433 .ops = &msm_fe_dai_ops,
1434 .name = "SEC_TDM_TX_4_HOSTLESS",
1435 .probe = fe_dai_probe,
1436 },
1437 {
1438 .playback = {
1439 .stream_name = "Secondary TDM4 Hostless Playback",
1440 .aif_name = "SEC_TDM_RX_4_DL_HL",
1441 .rates = SNDRV_PCM_RATE_8000_48000,
1442 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1443 SNDRV_PCM_FMTBIT_S24_LE),
1444 .channels_min = 1,
1445 .channels_max = 8,
1446 .rate_min = 8000,
1447 .rate_max = 48000,
1448 },
1449 .ops = &msm_fe_dai_ops,
1450 .name = "SEC_TDM_RX_4_HOSTLESS",
1451 .probe = fe_dai_probe,
1452 },
1453 {
1454 .capture = {
1455 .stream_name = "Secondary TDM5 Hostless Capture",
1456 .aif_name = "SEC_TDM_TX_5_UL_HL",
1457 .rates = SNDRV_PCM_RATE_8000_48000,
1458 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1459 SNDRV_PCM_FMTBIT_S24_LE),
1460 .channels_min = 1,
1461 .channels_max = 8,
1462 .rate_min = 8000,
1463 .rate_max = 48000,
1464 },
1465 .ops = &msm_fe_dai_ops,
1466 .name = "SEC_TDM_TX_5_HOSTLESS",
1467 .probe = fe_dai_probe,
1468 },
1469 {
1470 .playback = {
1471 .stream_name = "Secondary TDM5 Hostless Playback",
1472 .aif_name = "SEC_TDM_RX_5_DL_HL",
1473 .rates = SNDRV_PCM_RATE_8000_48000,
1474 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1475 SNDRV_PCM_FMTBIT_S24_LE),
1476 .channels_min = 1,
1477 .channels_max = 8,
1478 .rate_min = 8000,
1479 .rate_max = 48000,
1480 },
1481 .ops = &msm_fe_dai_ops,
1482 .name = "SEC_TDM_RX_5_HOSTLESS",
1483 .probe = fe_dai_probe,
1484 },
1485 {
1486 .capture = {
1487 .stream_name = "Secondary TDM6 Hostless Capture",
1488 .aif_name = "SEC_TDM_TX_6_UL_HL",
1489 .rates = SNDRV_PCM_RATE_8000_48000,
1490 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1491 SNDRV_PCM_FMTBIT_S24_LE),
1492 .channels_min = 1,
1493 .channels_max = 8,
1494 .rate_min = 8000,
1495 .rate_max = 48000,
1496 },
1497 .ops = &msm_fe_dai_ops,
1498 .name = "SEC_TDM_TX_6_HOSTLESS",
1499 .probe = fe_dai_probe,
1500 },
1501 {
1502 .playback = {
1503 .stream_name = "Secondary TDM6 Hostless Playback",
1504 .aif_name = "SEC_TDM_RX_6_DL_HL",
1505 .rates = SNDRV_PCM_RATE_8000_48000,
1506 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1507 SNDRV_PCM_FMTBIT_S24_LE),
1508 .channels_min = 1,
1509 .channels_max = 8,
1510 .rate_min = 8000,
1511 .rate_max = 48000,
1512 },
1513 .ops = &msm_fe_dai_ops,
1514 .name = "SEC_TDM_RX_6_HOSTLESS",
1515 .probe = fe_dai_probe,
1516 },
1517 {
1518 .capture = {
1519 .stream_name = "Secondary TDM7 Hostless Capture",
1520 .aif_name = "SEC_TDM_TX_7_UL_HL",
1521 .rates = SNDRV_PCM_RATE_8000_48000,
1522 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1523 SNDRV_PCM_FMTBIT_S24_LE),
1524 .channels_min = 1,
1525 .channels_max = 8,
1526 .rate_min = 8000,
1527 .rate_max = 48000,
1528 },
1529 .ops = &msm_fe_dai_ops,
1530 .name = "SEC_TDM_TX_7_HOSTLESS",
1531 .probe = fe_dai_probe,
1532 },
1533 {
1534 .playback = {
1535 .stream_name = "Secondary TDM7 Hostless Playback",
1536 .aif_name = "SEC_TDM_RX_7_DL_HL",
1537 .rates = SNDRV_PCM_RATE_8000_48000,
1538 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1539 SNDRV_PCM_FMTBIT_S24_LE),
1540 .channels_min = 1,
1541 .channels_max = 8,
1542 .rate_min = 8000,
1543 .rate_max = 48000,
1544 },
1545 .ops = &msm_fe_dai_ops,
1546 .name = "SEC_TDM_RX_7_HOSTLESS",
1547 .probe = fe_dai_probe,
1548 },
1549 {
1550 .capture = {
1551 .stream_name = "Tertiary TDM0 Hostless Capture",
1552 .aif_name = "TERT_TDM_TX_0_UL_HL",
1553 .rates = SNDRV_PCM_RATE_8000_48000,
1554 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1555 SNDRV_PCM_FMTBIT_S24_LE),
1556 .channels_min = 1,
1557 .channels_max = 8,
1558 .rate_min = 8000,
1559 .rate_max = 48000,
1560 },
1561 .ops = &msm_fe_dai_ops,
1562 .name = "TERT_TDM_TX_0_HOSTLESS",
1563 .probe = fe_dai_probe,
1564 },
1565 {
1566 .playback = {
1567 .stream_name = "Tertiary TDM0 Hostless Playback",
1568 .aif_name = "TERT_TDM_RX_0_DL_HL",
1569 .rates = SNDRV_PCM_RATE_8000_48000,
1570 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1571 SNDRV_PCM_FMTBIT_S24_LE),
1572 .channels_min = 1,
1573 .channels_max = 8,
1574 .rate_min = 8000,
1575 .rate_max = 48000,
1576 },
1577 .ops = &msm_fe_dai_ops,
1578 .name = "TERT_TDM_RX_0_HOSTLESS",
1579 .probe = fe_dai_probe,
1580 },
1581 {
1582 .capture = {
1583 .stream_name = "Tertiary TDM1 Hostless Capture",
1584 .aif_name = "TERT_TDM_TX_1_UL_HL",
1585 .rates = SNDRV_PCM_RATE_8000_48000,
1586 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1587 SNDRV_PCM_FMTBIT_S24_LE),
1588 .channels_min = 1,
1589 .channels_max = 8,
1590 .rate_min = 8000,
1591 .rate_max = 48000,
1592 },
1593 .ops = &msm_fe_dai_ops,
1594 .name = "TERT_TDM_TX_1_HOSTLESS",
1595 .probe = fe_dai_probe,
1596 },
1597 {
1598 .playback = {
1599 .stream_name = "Tertiary TDM1 Hostless Playback",
1600 .aif_name = "TERT_TDM_RX_1_DL_HL",
1601 .rates = SNDRV_PCM_RATE_8000_48000,
1602 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1603 SNDRV_PCM_FMTBIT_S24_LE),
1604 .channels_min = 1,
1605 .channels_max = 8,
1606 .rate_min = 8000,
1607 .rate_max = 48000,
1608 },
1609 .ops = &msm_fe_dai_ops,
1610 .name = "TERT_TDM_RX_1_HOSTLESS",
1611 .probe = fe_dai_probe,
1612 },
1613 {
1614 .capture = {
1615 .stream_name = "Tertiary TDM2 Hostless Capture",
1616 .aif_name = "TERT_TDM_TX_2_UL_HL",
1617 .rates = SNDRV_PCM_RATE_8000_48000,
1618 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1619 SNDRV_PCM_FMTBIT_S24_LE),
1620 .channels_min = 1,
1621 .channels_max = 8,
1622 .rate_min = 8000,
1623 .rate_max = 48000,
1624 },
1625 .ops = &msm_fe_dai_ops,
1626 .name = "TERT_TDM_TX_2_HOSTLESS",
1627 .probe = fe_dai_probe,
1628 },
1629 {
1630 .playback = {
1631 .stream_name = "Tertiary TDM2 Hostless Playback",
1632 .aif_name = "TERT_TDM_RX_2_DL_HL",
1633 .rates = SNDRV_PCM_RATE_8000_48000,
1634 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1635 SNDRV_PCM_FMTBIT_S24_LE),
1636 .channels_min = 1,
1637 .channels_max = 8,
1638 .rate_min = 8000,
1639 .rate_max = 48000,
1640 },
1641 .ops = &msm_fe_dai_ops,
1642 .name = "TERT_TDM_RX_2_HOSTLESS",
1643 .probe = fe_dai_probe,
1644 },
1645 {
1646 .capture = {
1647 .stream_name = "Tertiary TDM3 Hostless Capture",
1648 .aif_name = "TERT_TDM_TX_3_UL_HL",
1649 .rates = SNDRV_PCM_RATE_8000_48000,
1650 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1651 SNDRV_PCM_FMTBIT_S24_LE),
1652 .channels_min = 1,
1653 .channels_max = 8,
1654 .rate_min = 8000,
1655 .rate_max = 48000,
1656 },
1657 .ops = &msm_fe_dai_ops,
1658 .name = "TERT_TDM_TX_3_HOSTLESS",
1659 .probe = fe_dai_probe,
1660 },
1661 {
1662 .playback = {
1663 .stream_name = "Tertiary TDM3 Hostless Playback",
1664 .aif_name = "TERT_TDM_RX_3_DL_HL",
1665 .rates = SNDRV_PCM_RATE_8000_48000,
1666 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1667 SNDRV_PCM_FMTBIT_S24_LE),
1668 .channels_min = 1,
1669 .channels_max = 8,
1670 .rate_min = 8000,
1671 .rate_max = 48000,
1672 },
1673 .ops = &msm_fe_dai_ops,
1674 .name = "TERT_TDM_RX_3_HOSTLESS",
1675 .probe = fe_dai_probe,
1676 },
1677 {
1678 .capture = {
1679 .stream_name = "Tertiary TDM4 Hostless Capture",
1680 .aif_name = "TERT_TDM_TX_4_UL_HL",
1681 .rates = SNDRV_PCM_RATE_8000_48000,
1682 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1683 SNDRV_PCM_FMTBIT_S24_LE),
1684 .channels_min = 1,
1685 .channels_max = 8,
1686 .rate_min = 8000,
1687 .rate_max = 48000,
1688 },
1689 .ops = &msm_fe_dai_ops,
1690 .name = "TERT_TDM_TX_4_HOSTLESS",
1691 .probe = fe_dai_probe,
1692 },
1693 {
1694 .playback = {
1695 .stream_name = "Tertiary TDM4 Hostless Playback",
1696 .aif_name = "TERT_TDM_RX_4_DL_HL",
1697 .rates = SNDRV_PCM_RATE_8000_48000,
1698 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1699 SNDRV_PCM_FMTBIT_S24_LE),
1700 .channels_min = 1,
1701 .channels_max = 8,
1702 .rate_min = 8000,
1703 .rate_max = 48000,
1704 },
1705 .ops = &msm_fe_dai_ops,
1706 .name = "TERT_TDM_RX_4_HOSTLESS",
1707 .probe = fe_dai_probe,
1708 },
1709 {
1710 .capture = {
1711 .stream_name = "Tertiary TDM5 Hostless Capture",
1712 .aif_name = "TERT_TDM_TX_5_UL_HL",
1713 .rates = SNDRV_PCM_RATE_8000_48000,
1714 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1715 SNDRV_PCM_FMTBIT_S24_LE),
1716 .channels_min = 1,
1717 .channels_max = 8,
1718 .rate_min = 8000,
1719 .rate_max = 48000,
1720 },
1721 .ops = &msm_fe_dai_ops,
1722 .name = "TERT_TDM_TX_5_HOSTLESS",
1723 .probe = fe_dai_probe,
1724 },
1725 {
1726 .playback = {
1727 .stream_name = "Tertiary TDM5 Hostless Playback",
1728 .aif_name = "TERT_TDM_RX_5_DL_HL",
1729 .rates = SNDRV_PCM_RATE_8000_48000,
1730 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1731 SNDRV_PCM_FMTBIT_S24_LE),
1732 .channels_min = 1,
1733 .channels_max = 8,
1734 .rate_min = 8000,
1735 .rate_max = 48000,
1736 },
1737 .ops = &msm_fe_dai_ops,
1738 .name = "TERT_TDM_RX_5_HOSTLESS",
1739 .probe = fe_dai_probe,
1740 },
1741 {
1742 .capture = {
1743 .stream_name = "Tertiary TDM6 Hostless Capture",
1744 .aif_name = "TERT_TDM_TX_6_UL_HL",
1745 .rates = SNDRV_PCM_RATE_8000_48000,
1746 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1747 SNDRV_PCM_FMTBIT_S24_LE),
1748 .channels_min = 1,
1749 .channels_max = 8,
1750 .rate_min = 8000,
1751 .rate_max = 48000,
1752 },
1753 .ops = &msm_fe_dai_ops,
1754 .name = "TERT_TDM_TX_6_HOSTLESS",
1755 .probe = fe_dai_probe,
1756 },
1757 {
1758 .playback = {
1759 .stream_name = "Tertiary TDM6 Hostless Playback",
1760 .aif_name = "TERT_TDM_RX_6_DL_HL",
1761 .rates = SNDRV_PCM_RATE_8000_48000,
1762 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1763 SNDRV_PCM_FMTBIT_S24_LE),
1764 .channels_min = 1,
1765 .channels_max = 8,
1766 .rate_min = 8000,
1767 .rate_max = 48000,
1768 },
1769 .ops = &msm_fe_dai_ops,
1770 .name = "TERT_TDM_RX_6_HOSTLESS",
1771 .probe = fe_dai_probe,
1772 },
1773 {
1774 .capture = {
1775 .stream_name = "Tertiary TDM7 Hostless Capture",
1776 .aif_name = "TERT_TDM_TX_7_UL_HL",
1777 .rates = SNDRV_PCM_RATE_8000_48000,
1778 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1779 SNDRV_PCM_FMTBIT_S24_LE),
1780 .channels_min = 1,
1781 .channels_max = 8,
1782 .rate_min = 8000,
1783 .rate_max = 48000,
1784 },
1785 .ops = &msm_fe_dai_ops,
1786 .name = "TERT_TDM_TX_7_HOSTLESS",
1787 .probe = fe_dai_probe,
1788 },
1789 {
1790 .playback = {
1791 .stream_name = "Tertiary TDM7 Hostless Playback",
1792 .aif_name = "TERT_TDM_RX_7_DL_HL",
1793 .rates = SNDRV_PCM_RATE_8000_48000,
1794 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1795 SNDRV_PCM_FMTBIT_S24_LE),
1796 .channels_min = 1,
1797 .channels_max = 8,
1798 .rate_min = 8000,
1799 .rate_max = 48000,
1800 },
1801 .ops = &msm_fe_dai_ops,
1802 .name = "TERT_TDM_RX_7_HOSTLESS",
1803 .probe = fe_dai_probe,
1804 },
1805 {
1806 .capture = {
1807 .stream_name = "Quaternary TDM0 Hostless Capture",
1808 .aif_name = "QUAT_TDM_TX_0_UL_HL",
1809 .rates = SNDRV_PCM_RATE_8000_48000,
1810 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1811 SNDRV_PCM_FMTBIT_S24_LE),
1812 .channels_min = 1,
1813 .channels_max = 8,
1814 .rate_min = 8000,
1815 .rate_max = 48000,
1816 },
1817 .ops = &msm_fe_dai_ops,
1818 .name = "QUAT_TDM_TX_0_HOSTLESS",
1819 .probe = fe_dai_probe,
1820 },
1821 {
1822 .playback = {
1823 .stream_name = "Quaternary TDM0 Hostless Playback",
1824 .aif_name = "QUAT_TDM_RX_0_DL_HL",
1825 .rates = SNDRV_PCM_RATE_8000_48000,
1826 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1827 SNDRV_PCM_FMTBIT_S24_LE),
1828 .channels_min = 1,
1829 .channels_max = 8,
1830 .rate_min = 8000,
1831 .rate_max = 48000,
1832 },
1833 .ops = &msm_fe_dai_ops,
1834 .name = "QUAT_TDM_RX_0_HOSTLESS",
1835 .probe = fe_dai_probe,
1836 },
1837 {
1838 .capture = {
1839 .stream_name = "Quaternary TDM1 Hostless Capture",
1840 .aif_name = "QUAT_TDM_TX_1_UL_HL",
1841 .rates = SNDRV_PCM_RATE_8000_48000,
1842 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1843 SNDRV_PCM_FMTBIT_S24_LE),
1844 .channels_min = 1,
1845 .channels_max = 8,
1846 .rate_min = 8000,
1847 .rate_max = 48000,
1848 },
1849 .ops = &msm_fe_dai_ops,
1850 .name = "QUAT_TDM_TX_1_HOSTLESS",
1851 .probe = fe_dai_probe,
1852 },
1853 {
1854 .playback = {
1855 .stream_name = "Quaternary TDM1 Hostless Playback",
1856 .aif_name = "QUAT_TDM_RX_1_DL_HL",
1857 .rates = SNDRV_PCM_RATE_8000_48000,
1858 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1859 SNDRV_PCM_FMTBIT_S24_LE),
1860 .channels_min = 1,
1861 .channels_max = 8,
1862 .rate_min = 8000,
1863 .rate_max = 48000,
1864 },
1865 .ops = &msm_fe_dai_ops,
1866 .name = "QUAT_TDM_RX_1_HOSTLESS",
1867 .probe = fe_dai_probe,
1868 },
1869 {
1870 .capture = {
1871 .stream_name = "Quaternary TDM2 Hostless Capture",
1872 .aif_name = "QUAT_TDM_TX_2_UL_HL",
1873 .rates = SNDRV_PCM_RATE_8000_48000,
1874 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1875 SNDRV_PCM_FMTBIT_S24_LE),
1876 .channels_min = 1,
1877 .channels_max = 8,
1878 .rate_min = 8000,
1879 .rate_max = 48000,
1880 },
1881 .ops = &msm_fe_dai_ops,
1882 .name = "QUAT_TDM_TX_2_HOSTLESS",
1883 .probe = fe_dai_probe,
1884 },
1885 {
1886 .playback = {
1887 .stream_name = "Quaternary TDM2 Hostless Playback",
1888 .aif_name = "QUAT_TDM_RX_2_DL_HL",
1889 .rates = SNDRV_PCM_RATE_8000_48000,
1890 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1891 SNDRV_PCM_FMTBIT_S24_LE),
1892 .channels_min = 1,
1893 .channels_max = 8,
1894 .rate_min = 8000,
1895 .rate_max = 48000,
1896 },
1897 .ops = &msm_fe_dai_ops,
1898 .name = "QUAT_TDM_RX_2_HOSTLESS",
1899 .probe = fe_dai_probe,
1900 },
1901 {
1902 .capture = {
1903 .stream_name = "Quaternary TDM3 Hostless Capture",
1904 .aif_name = "QUAT_TDM_TX_3_UL_HL",
1905 .rates = SNDRV_PCM_RATE_8000_48000,
1906 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1907 SNDRV_PCM_FMTBIT_S24_LE),
1908 .channels_min = 1,
1909 .channels_max = 8,
1910 .rate_min = 8000,
1911 .rate_max = 48000,
1912 },
1913 .ops = &msm_fe_dai_ops,
1914 .name = "QUAT_TDM_TX_3_HOSTLESS",
1915 .probe = fe_dai_probe,
1916 },
1917 {
1918 .playback = {
1919 .stream_name = "Quaternary TDM3 Hostless Playback",
1920 .aif_name = "QUAT_TDM_RX_3_DL_HL",
1921 .rates = SNDRV_PCM_RATE_8000_48000,
1922 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1923 SNDRV_PCM_FMTBIT_S24_LE),
1924 .channels_min = 1,
1925 .channels_max = 8,
1926 .rate_min = 8000,
1927 .rate_max = 48000,
1928 },
1929 .ops = &msm_fe_dai_ops,
1930 .name = "QUAT_TDM_RX_3_HOSTLESS",
1931 .probe = fe_dai_probe,
1932 },
1933 {
1934 .capture = {
1935 .stream_name = "Quaternary TDM4 Hostless Capture",
1936 .aif_name = "QUAT_TDM_TX_4_UL_HL",
1937 .rates = SNDRV_PCM_RATE_8000_48000,
1938 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1939 SNDRV_PCM_FMTBIT_S24_LE),
1940 .channels_min = 1,
1941 .channels_max = 8,
1942 .rate_min = 8000,
1943 .rate_max = 48000,
1944 },
1945 .ops = &msm_fe_dai_ops,
1946 .name = "QUAT_TDM_TX_4_HOSTLESS",
1947 .probe = fe_dai_probe,
1948 },
1949 {
1950 .playback = {
1951 .stream_name = "Quaternary TDM4 Hostless Playback",
1952 .aif_name = "QUAT_TDM_RX_4_DL_HL",
1953 .rates = SNDRV_PCM_RATE_8000_48000,
1954 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1955 SNDRV_PCM_FMTBIT_S24_LE),
1956 .channels_min = 1,
1957 .channels_max = 8,
1958 .rate_min = 8000,
1959 .rate_max = 48000,
1960 },
1961 .ops = &msm_fe_dai_ops,
1962 .name = "QUAT_TDM_RX_4_HOSTLESS",
1963 .probe = fe_dai_probe,
1964 },
1965 {
1966 .capture = {
1967 .stream_name = "Quaternary TDM5 Hostless Capture",
1968 .aif_name = "QUAT_TDM_TX_5_UL_HL",
1969 .rates = SNDRV_PCM_RATE_8000_48000,
1970 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
1971 SNDRV_PCM_FMTBIT_S24_LE),
1972 .channels_min = 1,
1973 .channels_max = 8,
1974 .rate_min = 8000,
1975 .rate_max = 48000,
1976 },
1977 .ops = &msm_fe_dai_ops,
1978 .name = "QUAT_TDM_TX_5_HOSTLESS",
1979 .probe = fe_dai_probe,
1980 },
1981 {
1982 .playback = {
1983 .stream_name = "Quaternary TDM5 Hostless Playback",
1984 .aif_name = "QUAT_TDM_RX_5_DL_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 = 8,
1990 .rate_min = 8000,
1991 .rate_max = 48000,
1992 },
1993 .ops = &msm_fe_dai_ops,
1994 .name = "QUAT_TDM_RX_5_HOSTLESS",
1995 .probe = fe_dai_probe,
1996 },
1997 {
1998 .capture = {
1999 .stream_name = "Quaternary TDM6 Hostless Capture",
2000 .aif_name = "QUAT_TDM_TX_6_UL_HL",
2001 .rates = SNDRV_PCM_RATE_8000_48000,
2002 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2003 SNDRV_PCM_FMTBIT_S24_LE),
2004 .channels_min = 1,
2005 .channels_max = 8,
2006 .rate_min = 8000,
2007 .rate_max = 48000,
2008 },
2009 .ops = &msm_fe_dai_ops,
2010 .name = "QUAT_TDM_TX_6_HOSTLESS",
2011 .probe = fe_dai_probe,
2012 },
2013 {
2014 .playback = {
2015 .stream_name = "Quaternary TDM6 Hostless Playback",
2016 .aif_name = "QUAT_TDM_RX_6_DL_HL",
2017 .rates = SNDRV_PCM_RATE_8000_48000,
2018 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2019 SNDRV_PCM_FMTBIT_S24_LE),
2020 .channels_min = 1,
2021 .channels_max = 8,
2022 .rate_min = 8000,
2023 .rate_max = 48000,
2024 },
2025 .ops = &msm_fe_dai_ops,
2026 .name = "QUAT_TDM_RX_6_HOSTLESS",
2027 .probe = fe_dai_probe,
2028 },
2029 {
2030 .capture = {
2031 .stream_name = "Quaternary TDM7 Hostless Capture",
2032 .aif_name = "QUAT_TDM_TX_7_UL_HL",
2033 .rates = SNDRV_PCM_RATE_8000_48000,
2034 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2035 SNDRV_PCM_FMTBIT_S24_LE),
2036 .channels_min = 1,
2037 .channels_max = 8,
2038 .rate_min = 8000,
2039 .rate_max = 48000,
2040 },
2041 .ops = &msm_fe_dai_ops,
2042 .name = "QUAT_TDM_TX_7_HOSTLESS",
2043 .probe = fe_dai_probe,
2044 },
2045 {
2046 .playback = {
2047 .stream_name = "Quaternary TDM7 Hostless Playback",
2048 .aif_name = "QUAT_TDM_RX_7_DL_HL",
2049 .rates = SNDRV_PCM_RATE_8000_48000,
2050 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2051 SNDRV_PCM_FMTBIT_S24_LE),
2052 .channels_min = 1,
2053 .channels_max = 8,
2054 .rate_min = 8000,
2055 .rate_max = 48000,
2056 },
2057 .ops = &msm_fe_dai_ops,
2058 .name = "QUAT_TDM_RX_7_HOSTLESS",
2059 .probe = fe_dai_probe,
2060 },
2061 {
2062 .playback = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302063 .stream_name = "DTMF_RX_HOSTLESS Playback",
2064 .aif_name = "DTMF_DL_HL",
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 = "DTMF_RX_HOSTLESS",
2074 .probe = fe_dai_probe,
2075 },
2076 {
2077 .capture = {
2078 .stream_name = "CPE Listen Audio capture",
2079 .aif_name = "CPE_LSM_UL_HL",
2080 .rates = SNDRV_PCM_RATE_8000_48000,
2081 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2082 SNDRV_PCM_FMTBIT_S24_LE),
2083 .channels_min = 1,
2084 .channels_max = 1,
2085 .rate_min = 8000,
2086 .rate_max = 48000,
2087 },
2088 .ops = &msm_fe_dai_ops,
2089 .name = "CPE_LSM_NOHOST",
2090 },
2091 {
2092 .playback = {
2093 .stream_name = "VOLTE_STUB Playback",
2094 .aif_name = "VOLTE_STUB_DL",
2095 .rates = SNDRV_PCM_RATE_8000_48000,
2096 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2097 .channels_min = 1,
2098 .channels_max = 2,
2099 .rate_min = 8000,
2100 .rate_max = 48000,
2101 },
2102 .capture = {
2103 .stream_name = "VOLTE_STUB Capture",
2104 .aif_name = "VOLTE_STUB_UL",
2105 .rates = SNDRV_PCM_RATE_8000_48000,
2106 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2107 .channels_min = 1,
2108 .channels_max = 2,
2109 .rate_min = 8000,
2110 .rate_max = 48000,
2111 },
2112 .ops = &msm_fe_dai_ops,
2113 .name = "VOLTE_STUB",
2114 .probe = fe_dai_probe,
2115 },
2116 {
2117 .playback = {
2118 .stream_name = "VOICE2_STUB Playback",
2119 .aif_name = "VOICE2_STUB_DL",
2120 .rates = SNDRV_PCM_RATE_8000_48000,
2121 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2122 .channels_min = 1,
2123 .channels_max = 2,
2124 .rate_min = 8000,
2125 .rate_max = 48000,
2126 },
2127 .capture = {
2128 .stream_name = "VOICE2_STUB Capture",
2129 .aif_name = "VOICE2_STUB_UL",
2130 .rates = SNDRV_PCM_RATE_8000_48000,
2131 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2132 .channels_min = 1,
2133 .channels_max = 2,
2134 .rate_min = 8000,
2135 .rate_max = 48000,
2136 },
2137 .ops = &msm_fe_dai_ops,
2138 .name = "VOICE2_STUB",
2139 .probe = fe_dai_probe,
2140 },
2141 {
2142 .playback = {
2143 .stream_name = "MultiMedia9 Playback",
2144 .aif_name = "MM_DL9",
2145 .rates = (SNDRV_PCM_RATE_8000_384000|
2146 SNDRV_PCM_RATE_KNOT),
2147 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2148 SNDRV_PCM_FMTBIT_S24_LE |
2149 SNDRV_PCM_FMTBIT_S24_3LE),
2150 .channels_min = 1,
2151 .channels_max = 8,
2152 .rate_min = 8000,
2153 .rate_max = 384000,
2154 },
2155 .capture = {
2156 .stream_name = "MultiMedia9 Capture",
2157 .aif_name = "MM_UL9",
2158 .rates = (SNDRV_PCM_RATE_8000_48000|
2159 SNDRV_PCM_RATE_KNOT),
2160 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2161 .channels_min = 1,
2162 .channels_max = 8,
2163 .rate_min = 8000,
2164 .rate_max = 48000,
2165 },
2166 .ops = &msm_fe_Multimedia_dai_ops,
2167 .name = "MultiMedia9",
2168 .probe = fe_dai_probe,
2169 },
2170 {
2171 .playback = {
2172 .stream_name = "QCHAT Playback",
2173 .aif_name = "QCHAT_DL",
2174 .rates = SNDRV_PCM_RATE_8000_48000,
2175 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2176 .channels_min = 1,
2177 .channels_max = 2,
2178 .rate_min = 8000,
2179 .rate_max = 48000,
2180 },
2181 .capture = {
2182 .stream_name = "QCHAT Capture",
2183 .aif_name = "QCHAT_UL",
2184 .rates = SNDRV_PCM_RATE_8000_48000,
2185 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2186 .channels_min = 1,
2187 .channels_max = 2,
2188 .rate_min = 8000,
2189 .rate_max = 48000,
2190 },
2191 .ops = &msm_fe_dai_ops,
2192 .name = "QCHAT",
2193 .probe = fe_dai_probe,
2194 },
2195 {
2196 .capture = {
2197 .stream_name = "Listen 1 Audio Service Capture",
2198 .aif_name = "LSM1_UL_HL",
2199 .rates = (SNDRV_PCM_RATE_16000 |
2200 SNDRV_PCM_RATE_48000),
2201 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2202 SNDRV_PCM_FMTBIT_S24_LE),
2203 .channels_min = 1,
2204 .channels_max = 4,
2205 .rate_min = 16000,
2206 .rate_max = 48000,
2207 },
2208 .ops = &msm_fe_dai_ops,
2209 .name = "LSM1",
2210 .probe = fe_dai_probe,
2211 },
2212 {
2213 .capture = {
2214 .stream_name = "Listen 2 Audio Service Capture",
2215 .aif_name = "LSM2_UL_HL",
2216 .rates = (SNDRV_PCM_RATE_16000 |
2217 SNDRV_PCM_RATE_48000),
2218 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2219 SNDRV_PCM_FMTBIT_S24_LE),
2220 .channels_min = 1,
2221 .channels_max = 4,
2222 .rate_min = 16000,
2223 .rate_max = 48000,
2224 },
2225 .ops = &msm_fe_dai_ops,
2226 .name = "LSM2",
2227 .probe = fe_dai_probe,
2228 },
2229 {
2230 .capture = {
2231 .stream_name = "Listen 3 Audio Service Capture",
2232 .aif_name = "LSM3_UL_HL",
2233 .rates = (SNDRV_PCM_RATE_16000 |
2234 SNDRV_PCM_RATE_48000),
2235 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2236 SNDRV_PCM_FMTBIT_S24_LE),
2237 .channels_min = 1,
2238 .channels_max = 4,
2239 .rate_min = 16000,
2240 .rate_max = 48000,
2241 },
2242 .ops = &msm_fe_dai_ops,
2243 .name = "LSM3",
2244 .probe = fe_dai_probe,
2245 },
2246 {
2247 .capture = {
2248 .stream_name = "Listen 4 Audio Service Capture",
2249 .aif_name = "LSM4_UL_HL",
2250 .rates = (SNDRV_PCM_RATE_16000 |
2251 SNDRV_PCM_RATE_48000),
2252 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2253 SNDRV_PCM_FMTBIT_S24_LE),
2254 .channels_min = 1,
2255 .channels_max = 4,
2256 .rate_min = 16000,
2257 .rate_max = 48000,
2258 },
2259 .ops = &msm_fe_dai_ops,
2260 .name = "LSM4",
2261 .probe = fe_dai_probe,
2262 },
2263 {
2264 .capture = {
2265 .stream_name = "Listen 5 Audio Service Capture",
2266 .aif_name = "LSM5_UL_HL",
2267 .rates = (SNDRV_PCM_RATE_16000 |
2268 SNDRV_PCM_RATE_48000),
2269 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2270 SNDRV_PCM_FMTBIT_S24_LE),
2271 .channels_min = 1,
2272 .channels_max = 4,
2273 .rate_min = 16000,
2274 .rate_max = 48000,
2275 },
2276 .ops = &msm_fe_dai_ops,
2277 .name = "LSM5",
2278 .probe = fe_dai_probe,
2279 },
2280 {
2281 .capture = {
2282 .stream_name = "Listen 6 Audio Service Capture",
2283 .aif_name = "LSM6_UL_HL",
2284 .rates = (SNDRV_PCM_RATE_16000 |
2285 SNDRV_PCM_RATE_48000),
2286 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2287 SNDRV_PCM_FMTBIT_S24_LE),
2288 .channels_min = 1,
2289 .channels_max = 4,
2290 .rate_min = 16000,
2291 .rate_max = 48000,
2292 },
2293 .ops = &msm_fe_dai_ops,
2294 .name = "LSM6",
2295 .probe = fe_dai_probe,
2296 },
2297 {
2298 .capture = {
2299 .stream_name = "Listen 7 Audio Service Capture",
2300 .aif_name = "LSM7_UL_HL",
2301 .rates = (SNDRV_PCM_RATE_16000 |
2302 SNDRV_PCM_RATE_48000),
2303 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2304 SNDRV_PCM_FMTBIT_S24_LE),
2305 .channels_min = 1,
2306 .channels_max = 4,
2307 .rate_min = 16000,
2308 .rate_max = 48000,
2309 },
2310 .ops = &msm_fe_dai_ops,
2311 .name = "LSM7",
2312 .probe = fe_dai_probe,
2313 },
2314 {
2315 .capture = {
2316 .stream_name = "Listen 8 Audio Service Capture",
2317 .aif_name = "LSM8_UL_HL",
2318 .rates = (SNDRV_PCM_RATE_16000 |
2319 SNDRV_PCM_RATE_48000),
2320 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2321 SNDRV_PCM_FMTBIT_S24_LE),
2322 .channels_min = 1,
2323 .channels_max = 4,
2324 .rate_min = 16000,
2325 .rate_max = 48000,
2326 },
2327 .ops = &msm_fe_dai_ops,
2328 .name = "LSM8",
2329 .probe = fe_dai_probe,
2330 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302331 /* FE DAIs created for multiple instances of offload playback */
2332 {
2333 .playback = {
2334 .stream_name = "MultiMedia10 Playback",
2335 .aif_name = "MM_DL10",
2336 .rates = (SNDRV_PCM_RATE_8000_384000 |
2337 SNDRV_PCM_RATE_KNOT),
2338 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2339 SNDRV_PCM_FMTBIT_S24_LE |
2340 SNDRV_PCM_FMTBIT_S24_3LE |
2341 SNDRV_PCM_FMTBIT_S32_LE),
2342 .channels_min = 1,
2343 .channels_max = 8,
2344 .rate_min = 8000,
2345 .rate_max = 384000,
2346 },
Laxminath Kasam38070be2017-08-17 18:21:59 +05302347 .capture = {
2348 .stream_name = "MultiMedia10 Capture",
2349 .aif_name = "MM_UL10",
2350 .rates = (SNDRV_PCM_RATE_8000_48000 |
2351 SNDRV_PCM_RATE_KNOT),
2352 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2353 SNDRV_PCM_FMTBIT_S24_LE |
2354 SNDRV_PCM_FMTBIT_S24_3LE),
2355 .channels_min = 1,
2356 .channels_max = 8,
2357 .rate_min = 8000,
2358 .rate_max = 48000,
2359 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302360 .ops = &msm_fe_Multimedia_dai_ops,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302361 .name = "MultiMedia10",
2362 .probe = fe_dai_probe,
2363 },
2364 {
2365 .playback = {
2366 .stream_name = "MultiMedia11 Playback",
2367 .aif_name = "MM_DL11",
2368 .rates = (SNDRV_PCM_RATE_8000_384000 |
2369 SNDRV_PCM_RATE_KNOT),
2370 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2371 SNDRV_PCM_FMTBIT_S24_LE |
2372 SNDRV_PCM_FMTBIT_S24_3LE |
2373 SNDRV_PCM_FMTBIT_S32_LE),
2374 .channels_min = 1,
2375 .channels_max = 8,
2376 .rate_min = 8000,
2377 .rate_max = 384000,
2378 },
2379 .ops = &msm_fe_Multimedia_dai_ops,
2380 .compress_new = snd_soc_new_compress,
2381 .name = "MultiMedia11",
2382 .probe = fe_dai_probe,
2383 },
2384 {
2385 .playback = {
2386 .stream_name = "MultiMedia12 Playback",
2387 .aif_name = "MM_DL12",
2388 .rates = (SNDRV_PCM_RATE_8000_384000 |
2389 SNDRV_PCM_RATE_KNOT),
2390 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2391 SNDRV_PCM_FMTBIT_S24_LE |
2392 SNDRV_PCM_FMTBIT_S24_3LE |
2393 SNDRV_PCM_FMTBIT_S32_LE),
2394 .channels_min = 1,
2395 .channels_max = 8,
2396 .rate_min = 8000,
2397 .rate_max = 384000,
2398 },
2399 .ops = &msm_fe_Multimedia_dai_ops,
2400 .compress_new = snd_soc_new_compress,
2401 .name = "MultiMedia12",
2402 .probe = fe_dai_probe,
2403 },
2404 {
2405 .playback = {
2406 .stream_name = "MultiMedia13 Playback",
2407 .aif_name = "MM_DL13",
2408 .rates = (SNDRV_PCM_RATE_8000_384000 |
2409 SNDRV_PCM_RATE_KNOT),
2410 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2411 SNDRV_PCM_FMTBIT_S24_LE |
2412 SNDRV_PCM_FMTBIT_S24_3LE |
2413 SNDRV_PCM_FMTBIT_S32_LE),
2414 .channels_min = 1,
2415 .channels_max = 8,
2416 .rate_min = 8000,
2417 .rate_max = 384000,
2418 },
2419 .ops = &msm_fe_Multimedia_dai_ops,
2420 .compress_new = snd_soc_new_compress,
2421 .name = "MultiMedia13",
2422 .probe = fe_dai_probe,
2423 },
2424 {
2425 .playback = {
2426 .stream_name = "MultiMedia14 Playback",
2427 .aif_name = "MM_DL14",
2428 .rates = (SNDRV_PCM_RATE_8000_384000 |
2429 SNDRV_PCM_RATE_KNOT),
2430 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2431 SNDRV_PCM_FMTBIT_S24_LE |
2432 SNDRV_PCM_FMTBIT_S24_3LE |
2433 SNDRV_PCM_FMTBIT_S32_LE),
2434 .channels_min = 1,
2435 .channels_max = 8,
2436 .rate_min = 8000,
2437 .rate_max = 384000,
2438 },
2439 .ops = &msm_fe_Multimedia_dai_ops,
2440 .compress_new = snd_soc_new_compress,
2441 .name = "MultiMedia14",
2442 .probe = fe_dai_probe,
2443 },
2444 {
2445 .playback = {
2446 .stream_name = "MultiMedia15 Playback",
2447 .aif_name = "MM_DL15",
2448 .rates = (SNDRV_PCM_RATE_8000_384000 |
2449 SNDRV_PCM_RATE_KNOT),
2450 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2451 SNDRV_PCM_FMTBIT_S24_LE |
2452 SNDRV_PCM_FMTBIT_S24_3LE |
2453 SNDRV_PCM_FMTBIT_S32_LE),
2454 .channels_min = 1,
2455 .channels_max = 8,
2456 .rate_min = 8000,
2457 .rate_max = 384000,
2458 },
2459 .ops = &msm_fe_Multimedia_dai_ops,
2460 .compress_new = snd_soc_new_compress,
2461 .name = "MultiMedia15",
2462 .probe = fe_dai_probe,
2463 },
2464 {
2465 .playback = {
2466 .stream_name = "MultiMedia16 Playback",
2467 .aif_name = "MM_DL16",
2468 .rates = (SNDRV_PCM_RATE_8000_384000 |
2469 SNDRV_PCM_RATE_KNOT),
2470 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2471 SNDRV_PCM_FMTBIT_S24_LE |
2472 SNDRV_PCM_FMTBIT_S24_3LE |
2473 SNDRV_PCM_FMTBIT_S32_LE),
2474 .channels_min = 1,
2475 .channels_max = 8,
2476 .rate_min = 8000,
2477 .rate_max = 384000,
2478 },
Asish Bhattacharya34504582017-08-08 12:55:01 +05302479 .capture = {
2480 .stream_name = "MultiMedia16 Capture",
2481 .aif_name = "MM_UL16",
2482 .rates = (SNDRV_PCM_RATE_8000_48000|
2483 SNDRV_PCM_RATE_KNOT),
2484 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2485 SNDRV_PCM_FMTBIT_S24_LE |
2486 SNDRV_PCM_FMTBIT_S24_3LE |
2487 SNDRV_PCM_FMTBIT_S32_LE),
2488 .channels_min = 1,
2489 .channels_max = 8,
2490 .rate_min = 8000,
2491 .rate_max = 48000,
2492 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302493 .ops = &msm_fe_Multimedia_dai_ops,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302494 .name = "MultiMedia16",
2495 .probe = fe_dai_probe,
2496 },
2497 {
2498 .playback = {
2499 .stream_name = "VoiceMMode1 Playback",
2500 .aif_name = "VOICEMMODE1_DL",
2501 .rates = SNDRV_PCM_RATE_8000_48000,
2502 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2503 .channels_min = 1,
2504 .channels_max = 2,
2505 .rate_min = 8000,
2506 .rate_max = 48000,
2507 },
2508 .capture = {
2509 .stream_name = "VoiceMMode1 Capture",
2510 .aif_name = "VOICEMMODE1_UL",
2511 .rates = SNDRV_PCM_RATE_8000_48000,
2512 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2513 .channels_min = 1,
2514 .channels_max = 2,
2515 .rate_min = 8000,
2516 .rate_max = 48000,
2517 },
2518 .ops = &msm_fe_dai_ops,
2519 .name = "VoiceMMode1",
2520 .probe = fe_dai_probe,
2521 },
2522 {
2523 .playback = {
2524 .stream_name = "VoiceMMode2 Playback",
2525 .aif_name = "VOICEMMODE2_DL",
2526 .rates = SNDRV_PCM_RATE_8000_48000,
2527 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2528 .channels_min = 1,
2529 .channels_max = 2,
2530 .rate_min = 8000,
2531 .rate_max = 48000,
2532 },
2533 .capture = {
2534 .stream_name = "VoiceMMode2 Capture",
2535 .aif_name = "VOICEMMODE2_UL",
2536 .rates = SNDRV_PCM_RATE_8000_48000,
2537 .formats = SNDRV_PCM_FMTBIT_S16_LE,
2538 .channels_min = 1,
2539 .channels_max = 2,
2540 .rate_min = 8000,
2541 .rate_max = 48000,
2542 },
2543 .ops = &msm_fe_dai_ops,
2544 .name = "VoiceMMode2",
2545 .probe = fe_dai_probe,
2546 },
2547 {
2548 .capture = {
2549 .stream_name = "MultiMedia17 Capture",
2550 .aif_name = "MM_UL17",
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05302551 .rates = (SNDRV_PCM_RATE_8000_192000|
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302552 SNDRV_PCM_RATE_KNOT),
2553 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2554 SNDRV_PCM_FMTBIT_S24_LE |
2555 SNDRV_PCM_FMTBIT_S24_3LE),
2556 .channels_min = 1,
2557 .channels_max = 8,
2558 .rate_min = 8000,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05302559 .rate_max = 192000,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302560 },
2561 .ops = &msm_fe_Multimedia_dai_ops,
2562 .compress_new = snd_soc_new_compress,
2563 .name = "MultiMedia17",
2564 .probe = fe_dai_probe,
2565 },
2566 {
2567 .capture = {
2568 .stream_name = "MultiMedia18 Capture",
2569 .aif_name = "MM_UL18",
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05302570 .rates = (SNDRV_PCM_RATE_8000_192000|
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302571 SNDRV_PCM_RATE_KNOT),
2572 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2573 SNDRV_PCM_FMTBIT_S24_LE |
2574 SNDRV_PCM_FMTBIT_S24_3LE),
2575 .channels_min = 1,
2576 .channels_max = 8,
2577 .rate_min = 8000,
2578 .rate_max = 192000,
2579 },
2580 .ops = &msm_fe_Multimedia_dai_ops,
2581 .compress_new = snd_soc_new_compress,
2582 .name = "MultiMedia18",
2583 .probe = fe_dai_probe,
2584 },
2585 {
2586 .capture = {
2587 .stream_name = "MultiMedia19 Capture",
2588 .aif_name = "MM_UL19",
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05302589 .rates = (SNDRV_PCM_RATE_8000_192000|
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302590 SNDRV_PCM_RATE_KNOT),
2591 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2592 SNDRV_PCM_FMTBIT_S24_LE |
2593 SNDRV_PCM_FMTBIT_S24_3LE),
2594 .channels_min = 1,
2595 .channels_max = 8,
2596 .rate_min = 8000,
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05302597 .rate_max = 192000,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302598 },
2599 .ops = &msm_fe_Multimedia_dai_ops,
2600 .compress_new = snd_soc_new_compress,
2601 .name = "MultiMedia19",
2602 .probe = fe_dai_probe,
2603 },
2604 {
2605 .playback = {
2606 .stream_name = "MultiMedia20 Playback",
2607 .aif_name = "MM_DL20",
2608 .rates = (SNDRV_PCM_RATE_8000_384000|
2609 SNDRV_PCM_RATE_KNOT),
2610 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2611 SNDRV_PCM_FMTBIT_S24_LE |
2612 SNDRV_PCM_FMTBIT_S24_3LE |
2613 SNDRV_PCM_FMTBIT_S32_LE),
2614 .channels_min = 1,
2615 .channels_max = 8,
2616 .rate_min = 8000,
2617 .rate_max = 384000,
2618 },
2619 .capture = {
2620 .stream_name = "MultiMedia20 Capture",
2621 .aif_name = "MM_UL20",
2622 .rates = (SNDRV_PCM_RATE_8000_48000|
2623 SNDRV_PCM_RATE_KNOT),
2624 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2625 SNDRV_PCM_FMTBIT_S24_LE |
2626 SNDRV_PCM_FMTBIT_S24_3LE |
2627 SNDRV_PCM_FMTBIT_S32_LE),
2628 .channels_min = 1,
2629 .channels_max = 8,
2630 .rate_min = 8000,
2631 .rate_max = 48000,
2632 },
2633 .ops = &msm_fe_Multimedia_dai_ops,
2634 .name = "MultiMedia20",
2635 .probe = fe_dai_probe,
2636 },
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05302637 {
Derek Chen07c6d1c2018-07-05 10:39:25 -07002638 .playback = {
2639 .stream_name = "MultiMedia21 Playback",
2640 .aif_name = "MM_DL21",
2641 .rates = (SNDRV_PCM_RATE_8000_384000|
2642 SNDRV_PCM_RATE_KNOT),
2643 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2644 SNDRV_PCM_FMTBIT_S24_LE |
2645 SNDRV_PCM_FMTBIT_S24_3LE |
2646 SNDRV_PCM_FMTBIT_S32_LE),
2647 .channels_min = 1,
2648 .channels_max = 8,
2649 .rate_min = 8000,
2650 .rate_max = 384000,
2651 },
2652 .capture = {
2653 .stream_name = "MultiMedia21 Capture",
2654 .aif_name = "MM_UL21",
2655 .rates = (SNDRV_PCM_RATE_8000_48000|
2656 SNDRV_PCM_RATE_KNOT),
2657 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2658 SNDRV_PCM_FMTBIT_S24_LE |
2659 SNDRV_PCM_FMTBIT_S24_3LE |
2660 SNDRV_PCM_FMTBIT_S32_LE),
2661 .channels_min = 1,
2662 .channels_max = 8,
2663 .rate_min = 8000,
2664 .rate_max = 48000,
2665 },
2666 .ops = &msm_fe_Multimedia_dai_ops,
2667 .name = "MultiMedia21",
2668 .probe = fe_dai_probe,
2669 },
2670 {
Surendar Karkac1cde372018-08-14 18:56:24 +05302671 .playback = {
2672 .stream_name = "MultiMedia26 Playback",
2673 .aif_name = "MM_DL26",
2674 .rates = (SNDRV_PCM_RATE_8000_384000|
2675 SNDRV_PCM_RATE_KNOT),
2676 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2677 SNDRV_PCM_FMTBIT_S24_LE |
2678 SNDRV_PCM_FMTBIT_S24_3LE |
2679 SNDRV_PCM_FMTBIT_S32_LE),
2680 .channels_min = 1,
2681 .channels_max = 32,
2682 .rate_min = 8000,
2683 .rate_max = 384000,
2684 },
2685 .ops = &msm_fe_Multimedia_dai_ops,
2686 .compress_new = snd_soc_new_compress,
2687 .name = "MultiMedia26",
2688 .probe = fe_dai_probe,
2689 },
2690 {
2691 .capture = {
2692 .stream_name = "MultiMedia27 Capture",
2693 .aif_name = "MM_UL27",
2694 .rates = (SNDRV_PCM_RATE_8000_192000|
2695 SNDRV_PCM_RATE_KNOT),
2696 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2697 SNDRV_PCM_FMTBIT_S24_LE |
2698 SNDRV_PCM_FMTBIT_S24_3LE),
2699 .channels_min = 1,
2700 .channels_max = 32,
2701 .rate_min = 8000,
2702 .rate_max = 192000,
2703 },
2704 .ops = &msm_fe_Multimedia_dai_ops,
2705 .compress_new = snd_soc_new_compress,
2706 .name = "MultiMedia27",
2707 .probe = fe_dai_probe,
2708 },
2709 {
Sachin Mohan Gadag7c944232018-01-04 11:04:00 +05302710 .capture = {
2711 .stream_name = "MultiMedia28 Capture",
2712 .aif_name = "MM_UL28",
2713 .rates = (SNDRV_PCM_RATE_8000_192000|
2714 SNDRV_PCM_RATE_KNOT),
2715 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2716 SNDRV_PCM_FMTBIT_S24_LE |
2717 SNDRV_PCM_FMTBIT_S24_3LE),
2718 .channels_min = 1,
2719 .channels_max = 8,
2720 .rate_min = 8000,
2721 .rate_max = 192000,
2722 },
2723 .ops = &msm_fe_Multimedia_dai_ops,
2724 .compress_new = snd_soc_new_compress,
2725 .name = "MultiMedia28",
2726 .probe = fe_dai_probe,
2727 },
2728 {
2729 .capture = {
2730 .stream_name = "MultiMedia29 Capture",
2731 .aif_name = "MM_UL29",
2732 .rates = (SNDRV_PCM_RATE_8000_192000|
2733 SNDRV_PCM_RATE_KNOT),
2734 .formats = (SNDRV_PCM_FMTBIT_S16_LE |
2735 SNDRV_PCM_FMTBIT_S24_LE |
2736 SNDRV_PCM_FMTBIT_S24_3LE),
2737 .channels_min = 1,
2738 .channels_max = 8,
2739 .rate_min = 8000,
2740 .rate_max = 192000,
2741 },
2742 .ops = &msm_fe_Multimedia_dai_ops,
2743 .compress_new = snd_soc_new_compress,
2744 .name = "MultiMedia29",
2745 .probe = fe_dai_probe,
2746 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302747};
2748
2749static int msm_fe_dai_dev_probe(struct platform_device *pdev)
2750{
2751
2752 dev_dbg(&pdev->dev, "%s: dev name %s\n", __func__,
2753 dev_name(&pdev->dev));
2754 return snd_soc_register_component(&pdev->dev, &msm_fe_dai_component,
2755 msm_fe_dais, ARRAY_SIZE(msm_fe_dais));
2756}
2757
2758static int msm_fe_dai_dev_remove(struct platform_device *pdev)
2759{
2760 snd_soc_unregister_component(&pdev->dev);
2761 return 0;
2762}
2763
2764static const struct of_device_id msm_dai_fe_dt_match[] = {
2765 {.compatible = "qcom,msm-dai-fe"},
2766 {}
2767};
2768
2769static struct platform_driver msm_fe_dai_driver = {
2770 .probe = msm_fe_dai_dev_probe,
2771 .remove = msm_fe_dai_dev_remove,
2772 .driver = {
2773 .name = "msm-dai-fe",
2774 .owner = THIS_MODULE,
2775 .of_match_table = msm_dai_fe_dt_match,
2776 },
2777};
2778
Laxminath Kasam8b1366a2017-10-05 01:44:16 +05302779int __init msm_fe_dai_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302780{
2781 return platform_driver_register(&msm_fe_dai_driver);
2782}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302783
Asish Bhattacharya5faacb32017-12-04 17:23:15 +05302784void msm_fe_dai_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302785{
2786 platform_driver_unregister(&msm_fe_dai_driver);
2787}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302788
2789/* Module information */
2790MODULE_DESCRIPTION("MSM Frontend DAI driver");
2791MODULE_LICENSE("GPL v2");