blob: 6ae38bf028855437d51be37863f8372885fec952 [file] [log] [blame]
Rohit kumar4ea92b12019-02-01 18:05:33 +05301/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#include <linux/init.h>
14#include <linux/err.h>
15#include <linux/module.h>
16#include <linux/moduleparam.h>
17#include <linux/platform_device.h>
18#include <linux/bitops.h>
19#include <linux/mutex.h>
20#include <linux/of_device.h>
21#include <linux/slab.h>
22#include <sound/core.h>
23#include <sound/soc.h>
24#include <sound/soc-dapm.h>
25#include <sound/pcm.h>
26#include <sound/initval.h>
27#include <sound/control.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053028#include <sound/tlv.h>
29#include <sound/asound.h>
30#include <sound/pcm_params.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053031#include <sound/hwdep.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053032#include <sound/audio_effects.h>
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053033#include <dsp/msm-dts-srs-tm-config.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053034#include <dsp/q6voice.h>
35#include <dsp/q6adm-v2.h>
36#include <dsp/q6asm-v2.h>
37#include <dsp/q6afe-v2.h>
38#include <dsp/q6lsm.h>
39#include <dsp/q6core.h>
40#include <dsp/audio_cal_utils.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053041
42#include "msm-pcm-routing-v2.h"
43#include "msm-pcm-routing-devdep.h"
44#include "msm-qti-pp-config.h"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053045#include "msm-dolby-dap-config.h"
46#include "msm-ds2-dap-config.h"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053047
48#ifndef CONFIG_DOLBY_DAP
49#undef DOLBY_ADM_COPP_TOPOLOGY_ID
50#define DOLBY_ADM_COPP_TOPOLOGY_ID 0xFFFFFFFE
51#endif
52
53#ifndef CONFIG_DOLBY_DS2
54#undef DS2_ADM_COPP_TOPOLOGY_ID
55#define DS2_ADM_COPP_TOPOLOGY_ID 0xFFFFFFFF
56#endif
57
58static struct mutex routing_lock;
59
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053060static struct cal_type_data *cal_data[MAX_ROUTING_CAL_TYPES];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053061
62static int fm_switch_enable;
63static int hfp_switch_enable;
Aniket Kumar Lataf8664712018-02-22 14:46:09 -080064static int a2dp_switch_enable;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053065static int int0_mi2s_switch_enable;
66static int int4_mi2s_switch_enable;
67static int pri_mi2s_switch_enable;
68static int sec_mi2s_switch_enable;
69static int tert_mi2s_switch_enable;
70static int quat_mi2s_switch_enable;
Rohit Kumara5077932017-09-10 22:05:05 +053071static int quin_mi2s_switch_enable;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053072static int fm_pcmrx_switch_enable;
73static int usb_switch_enable;
74static int lsm_port_index;
75static int slim0_rx_aanc_fb_port;
76static int msm_route_ec_ref_rx;
77static int msm_ec_ref_ch = 4;
78static int msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
79static int msm_ec_ref_sampling_rate = 48000;
80static uint32_t voc_session_id = ALL_SESSION_VSID;
81static int msm_route_ext_ec_ref;
82static bool is_custom_stereo_on;
83static bool is_ds2_on;
84static bool swap_ch;
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053085static int msm_ec_ref_port_id;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053086
87#define WEIGHT_0_DB 0x4000
88/* all the FEs which can support channel mixer */
89static struct msm_pcm_channel_mixer channel_mixer[MSM_FRONTEND_DAI_MM_SIZE];
90/* input BE for each FE */
91static int channel_input[MSM_FRONTEND_DAI_MM_SIZE][ADM_MAX_CHANNELS];
92
93enum {
94 MADNONE,
95 MADAUDIO,
96 MADBEACON,
97 MADULTRASOUND,
98 MADSWAUDIO,
99};
100
101#define ADM_LSM_PORT_INDEX 9
102
103#define SLIMBUS_0_TX_TEXT "SLIMBUS_0_TX"
104#define SLIMBUS_1_TX_TEXT "SLIMBUS_1_TX"
105#define SLIMBUS_2_TX_TEXT "SLIMBUS_2_TX"
106#define SLIMBUS_3_TX_TEXT "SLIMBUS_3_TX"
107#define SLIMBUS_4_TX_TEXT "SLIMBUS_4_TX"
108#define SLIMBUS_5_TX_TEXT "SLIMBUS_5_TX"
109#define TERT_MI2S_TX_TEXT "TERT_MI2S_TX"
110#define QUAT_MI2S_TX_TEXT "QUAT_MI2S_TX"
Ashish Jain01b10322018-05-12 15:37:44 +0530111#define PRI_TDM_TX_3_TEXT "PRI_TDM_TX_3"
112#define PRI_TDM_TX_2_TEXT "PRI_TDM_TX_2"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530113#define ADM_LSM_TX_TEXT "ADM_LSM_TX"
114#define INT3_MI2S_TX_TEXT "INT3_MI2S_TX"
115
116#define LSM_FUNCTION_TEXT "LSM Function"
117static const char * const lsm_port_text[] = {
118 "None",
119 SLIMBUS_0_TX_TEXT, SLIMBUS_1_TX_TEXT, SLIMBUS_2_TX_TEXT,
120 SLIMBUS_3_TX_TEXT, SLIMBUS_4_TX_TEXT, SLIMBUS_5_TX_TEXT,
121 TERT_MI2S_TX_TEXT, QUAT_MI2S_TX_TEXT, ADM_LSM_TX_TEXT,
Ashish Jain01b10322018-05-12 15:37:44 +0530122 INT3_MI2S_TX_TEXT, PRI_TDM_TX_2_TEXT, PRI_TDM_TX_3_TEXT,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530123};
124
125struct msm_pcm_route_bdai_pp_params {
126 u16 port_id; /* AFE port ID */
127 unsigned long pp_params_config;
128 bool mute_on;
129 int latency;
130};
131
132static struct msm_pcm_route_bdai_pp_params
133 msm_bedais_pp_params[MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX] = {
134 {HDMI_RX, 0, 0, 0},
135 {DISPLAY_PORT_RX, 0, 0, 0},
136};
137
138/*
139 * The be_dai_name_table is passed to HAL so that it can specify the
140 * BE ID for the BE it wants to enable based on the name. Thus there
141 * is a matching table and structure in HAL that need to be updated
142 * if any changes to these are made.
143 */
144struct msm_pcm_route_bdai_name {
145 unsigned int be_id;
146 char be_name[LPASS_BE_NAME_MAX_LENGTH];
147};
148static struct msm_pcm_route_bdai_name be_dai_name_table[MSM_BACKEND_DAI_MAX];
149
150static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
151 int fe_id);
152
153static int msm_routing_get_bit_width(unsigned int format)
154{
155 int bit_width;
156
157 switch (format) {
158 case SNDRV_PCM_FORMAT_S32_LE:
159 bit_width = 32;
160 break;
161 case SNDRV_PCM_FORMAT_S24_LE:
162 case SNDRV_PCM_FORMAT_S24_3LE:
163 bit_width = 24;
164 break;
165 case SNDRV_PCM_FORMAT_S16_LE:
166 default:
167 bit_width = 16;
168 }
169 return bit_width;
170}
171
172static bool msm_is_resample_needed(int input_sr, int output_sr)
173{
174 bool rc = false;
175
176 if (input_sr != output_sr)
177 rc = true;
178
179 pr_debug("perform resampling (%s) for copp rate (%d)afe rate (%d)",
180 (rc ? "oh yes" : "not really"),
181 input_sr, output_sr);
182
183 return rc;
184}
185
186static void msm_pcm_routing_cfg_pp(int port_id, int copp_idx, int topology,
187 int channels)
188{
189 int rc = 0;
190
191 switch (topology) {
192 case SRS_TRUMEDIA_TOPOLOGY_ID:
193 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
194 msm_dts_srs_tm_init(port_id, copp_idx);
195 break;
196 case DS2_ADM_COPP_TOPOLOGY_ID:
197 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY %d\n",
198 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
199 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
200 is_custom_stereo_on);
201 if (rc < 0)
202 pr_err("%s: DS2 topo_id 0x%x, port %d, CS %d rc %d\n",
203 __func__, topology, port_id,
204 is_custom_stereo_on, rc);
205 break;
206 case DOLBY_ADM_COPP_TOPOLOGY_ID:
207 if (is_ds2_on) {
208 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY\n", __func__);
209 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
210 is_custom_stereo_on);
211 if (rc < 0)
212 pr_err("%s:DS2 topo_id 0x%x, port %d, rc %d\n",
213 __func__, topology, port_id, rc);
214 } else {
215 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
216 rc = msm_dolby_dap_init(port_id, copp_idx, channels,
217 is_custom_stereo_on);
218 if (rc < 0)
219 pr_err("%s: DS1 topo_id 0x%x, port %d, rc %d\n",
220 __func__, topology, port_id, rc);
221 }
222 break;
223 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
224 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
225 rc = msm_qti_pp_asphere_init(port_id, copp_idx);
226 if (rc < 0)
227 pr_err("%s: topo_id 0x%x, port %d, copp %d, rc %d\n",
228 __func__, topology, port_id, copp_idx, rc);
229 break;
230 default:
231 /* custom topology specific feature param handlers */
232 break;
233 }
234}
235
236static void msm_pcm_routing_deinit_pp(int port_id, int topology)
237{
238 switch (topology) {
239 case SRS_TRUMEDIA_TOPOLOGY_ID:
240 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
241 msm_dts_srs_tm_deinit(port_id);
242 break;
243 case DS2_ADM_COPP_TOPOLOGY_ID:
244 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID %d\n",
245 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
246 msm_ds2_dap_deinit(port_id);
247 break;
248 case DOLBY_ADM_COPP_TOPOLOGY_ID:
249 if (is_ds2_on) {
250 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID\n", __func__);
251 msm_ds2_dap_deinit(port_id);
252 } else {
253 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
254 msm_dolby_dap_deinit(port_id);
255 }
256 break;
257 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
258 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
259 msm_qti_pp_asphere_deinit(port_id);
260 break;
261 default:
262 /* custom topology specific feature deinit handlers */
263 break;
264 }
265}
266
267static void msm_pcm_routng_cfg_matrix_map_pp(struct route_payload payload,
268 int path_type, int perf_mode)
269{
270 int itr = 0, rc = 0;
271
272 if ((path_type == ADM_PATH_PLAYBACK) &&
273 (perf_mode == LEGACY_PCM_MODE) &&
274 is_custom_stereo_on) {
275 for (itr = 0; itr < payload.num_copps; itr++) {
276 if ((payload.port_id[itr] != SLIMBUS_0_RX) &&
277 (payload.port_id[itr] != RT_PROXY_PORT_001_RX)) {
278 continue;
279 }
280
281 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd(
282 payload.port_id[itr],
283 payload.copp_idx[itr],
284 payload.session_id,
285 Q14_GAIN_ZERO_POINT_FIVE,
286 Q14_GAIN_ZERO_POINT_FIVE,
287 Q14_GAIN_ZERO_POINT_FIVE,
288 Q14_GAIN_ZERO_POINT_FIVE);
289 if (rc < 0)
290 pr_err("%s: err setting custom stereo\n",
291 __func__);
292 }
293 }
294}
295
296#define SLIMBUS_EXTPROC_RX AFE_PORT_INVALID
297struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = {
298 { PRIMARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_RX},
299 { PRIMARY_I2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_TX},
300 { SLIMBUS_0_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_RX},
301 { SLIMBUS_0_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_TX},
302 { HDMI_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_HDMI},
303 { INT_BT_SCO_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_RX},
304 { INT_BT_SCO_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_TX},
305 { INT_FM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_RX},
306 { INT_FM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_TX},
307 { RT_PROXY_PORT_001_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
308 LPASS_BE_AFE_PCM_RX},
309 { RT_PROXY_PORT_001_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
310 LPASS_BE_AFE_PCM_TX},
311 { AFE_PORT_ID_PRIMARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
312 LPASS_BE_AUXPCM_RX},
313 { AFE_PORT_ID_PRIMARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
314 LPASS_BE_AUXPCM_TX},
315 { VOICE_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
316 LPASS_BE_VOICE_PLAYBACK_TX},
317 { VOICE2_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
318 LPASS_BE_VOICE2_PLAYBACK_TX},
319 { VOICE_RECORD_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
320 LPASS_BE_INCALL_RECORD_RX},
321 { VOICE_RECORD_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
322 LPASS_BE_INCALL_RECORD_TX},
323 { MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_RX},
324 { MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_TX},
325 { SECONDARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SEC_I2S_RX},
326 { SLIMBUS_1_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_RX},
327 { SLIMBUS_1_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_TX},
328 { SLIMBUS_2_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_RX},
329 { SLIMBUS_2_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_TX},
330 { SLIMBUS_3_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_RX},
331 { SLIMBUS_3_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_TX},
332 { SLIMBUS_4_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_RX},
333 { SLIMBUS_4_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_TX},
334 { SLIMBUS_5_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_RX},
335 { SLIMBUS_5_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_TX},
336 { SLIMBUS_6_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_RX},
337 { SLIMBUS_6_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_TX},
338 { SLIMBUS_7_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_RX},
339 { SLIMBUS_7_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_TX},
340 { SLIMBUS_8_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_RX},
341 { SLIMBUS_8_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_TX},
342 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_RX},
343 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_TX},
344 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_1_TX},
345 { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
346 LPASS_BE_QUAT_MI2S_RX},
347 { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
348 LPASS_BE_QUAT_MI2S_TX},
349 { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
350 LPASS_BE_SEC_MI2S_RX},
351 { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
352 LPASS_BE_SEC_MI2S_TX},
353 { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
354 LPASS_BE_PRI_MI2S_RX},
355 { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
356 LPASS_BE_PRI_MI2S_TX},
357 { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
358 LPASS_BE_TERT_MI2S_RX},
359 { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
360 LPASS_BE_TERT_MI2S_TX},
361 { AUDIO_PORT_ID_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
362 LPASS_BE_AUDIO_I2S_RX},
363 { AFE_PORT_ID_SECONDARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
364 LPASS_BE_SEC_AUXPCM_RX},
365 { AFE_PORT_ID_SECONDARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
366 LPASS_BE_SEC_AUXPCM_TX},
367 { AFE_PORT_ID_SPDIF_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
368 LPASS_BE_SPDIF_RX},
369 { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, {0}, {0}, 0, 0, 0, 0, {0},
370 LPASS_BE_SEC_MI2S_RX_SD1},
371 { AFE_PORT_ID_QUINARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
372 LPASS_BE_QUIN_MI2S_RX},
373 { AFE_PORT_ID_QUINARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
374 LPASS_BE_QUIN_MI2S_TX},
375 { AFE_PORT_ID_SENARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
376 LPASS_BE_SENARY_MI2S_TX},
377 { AFE_PORT_ID_PRIMARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
378 LPASS_BE_PRI_TDM_RX_0},
379 { AFE_PORT_ID_PRIMARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
380 LPASS_BE_PRI_TDM_TX_0},
381 { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
382 LPASS_BE_PRI_TDM_RX_1},
383 { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
384 LPASS_BE_PRI_TDM_TX_1},
385 { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
386 LPASS_BE_PRI_TDM_RX_2},
387 { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
388 LPASS_BE_PRI_TDM_TX_2},
389 { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
390 LPASS_BE_PRI_TDM_RX_3},
391 { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
392 LPASS_BE_PRI_TDM_TX_3},
393 { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
394 LPASS_BE_PRI_TDM_RX_4},
395 { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
396 LPASS_BE_PRI_TDM_TX_4},
397 { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
398 LPASS_BE_PRI_TDM_RX_5},
399 { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
400 LPASS_BE_PRI_TDM_TX_5},
401 { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
402 LPASS_BE_PRI_TDM_RX_6},
403 { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
404 LPASS_BE_PRI_TDM_TX_6},
405 { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
406 LPASS_BE_PRI_TDM_RX_7},
407 { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
408 LPASS_BE_PRI_TDM_TX_7},
409 { AFE_PORT_ID_SECONDARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
410 LPASS_BE_SEC_TDM_RX_0},
411 { AFE_PORT_ID_SECONDARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
412 LPASS_BE_SEC_TDM_TX_0},
413 { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
414 LPASS_BE_SEC_TDM_RX_1},
415 { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
416 LPASS_BE_SEC_TDM_TX_1},
417 { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
418 LPASS_BE_SEC_TDM_RX_2},
419 { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
420 LPASS_BE_SEC_TDM_TX_2},
421 { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
422 LPASS_BE_SEC_TDM_RX_3},
423 { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
424 LPASS_BE_SEC_TDM_TX_3},
425 { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
426 LPASS_BE_SEC_TDM_RX_4},
427 { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
428 LPASS_BE_SEC_TDM_TX_4},
429 { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
430 LPASS_BE_SEC_TDM_RX_5},
431 { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
432 LPASS_BE_SEC_TDM_TX_5},
433 { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
434 LPASS_BE_SEC_TDM_RX_6},
435 { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
436 LPASS_BE_SEC_TDM_TX_6},
437 { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
438 LPASS_BE_SEC_TDM_RX_7},
439 { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
440 LPASS_BE_SEC_TDM_TX_7},
441 { AFE_PORT_ID_TERTIARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
442 LPASS_BE_TERT_TDM_RX_0},
443 { AFE_PORT_ID_TERTIARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
444 LPASS_BE_TERT_TDM_TX_0},
445 { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
446 LPASS_BE_TERT_TDM_RX_1},
447 { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
448 LPASS_BE_TERT_TDM_TX_1},
449 { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
450 LPASS_BE_TERT_TDM_RX_2},
451 { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
452 LPASS_BE_TERT_TDM_TX_2},
453 { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
454 LPASS_BE_TERT_TDM_RX_3},
455 { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
456 LPASS_BE_TERT_TDM_TX_3},
457 { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
458 LPASS_BE_TERT_TDM_RX_4},
459 { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
460 LPASS_BE_TERT_TDM_TX_4},
461 { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
462 LPASS_BE_TERT_TDM_RX_5},
463 { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
464 LPASS_BE_TERT_TDM_TX_5},
465 { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
466 LPASS_BE_TERT_TDM_RX_6},
467 { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
468 LPASS_BE_TERT_TDM_TX_6},
469 { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
470 LPASS_BE_TERT_TDM_RX_7},
471 { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
472 LPASS_BE_TERT_TDM_TX_7},
473 { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
474 LPASS_BE_QUAT_TDM_RX_0},
475 { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
476 LPASS_BE_QUAT_TDM_TX_0},
477 { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
478 LPASS_BE_QUAT_TDM_RX_1},
479 { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
480 LPASS_BE_QUAT_TDM_TX_1},
481 { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
482 LPASS_BE_QUAT_TDM_RX_2},
483 { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
484 LPASS_BE_QUAT_TDM_TX_2},
485 { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
486 LPASS_BE_QUAT_TDM_RX_3},
487 { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
488 LPASS_BE_QUAT_TDM_TX_3},
489 { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
490 LPASS_BE_QUAT_TDM_RX_4},
491 { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
492 LPASS_BE_QUAT_TDM_TX_4},
493 { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
494 LPASS_BE_QUAT_TDM_RX_5},
495 { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
496 LPASS_BE_QUAT_TDM_TX_5},
497 { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
498 LPASS_BE_QUAT_TDM_RX_6},
499 { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
500 LPASS_BE_QUAT_TDM_TX_6},
501 { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
502 LPASS_BE_QUAT_TDM_RX_7},
503 { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
504 LPASS_BE_QUAT_TDM_TX_7},
Rohit Kumara5077932017-09-10 22:05:05 +0530505 { AFE_PORT_ID_QUINARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
506 LPASS_BE_QUIN_TDM_RX_0},
507 { AFE_PORT_ID_QUINARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
508 LPASS_BE_QUIN_TDM_TX_0},
509 { AFE_PORT_ID_QUINARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
510 LPASS_BE_QUIN_TDM_RX_1},
511 { AFE_PORT_ID_QUINARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
512 LPASS_BE_QUIN_TDM_TX_1},
513 { AFE_PORT_ID_QUINARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
514 LPASS_BE_QUIN_TDM_RX_2},
515 { AFE_PORT_ID_QUINARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
516 LPASS_BE_QUIN_TDM_TX_2},
517 { AFE_PORT_ID_QUINARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
518 LPASS_BE_QUIN_TDM_RX_3},
519 { AFE_PORT_ID_QUINARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
520 LPASS_BE_QUIN_TDM_TX_3},
521 { AFE_PORT_ID_QUINARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
522 LPASS_BE_QUIN_TDM_RX_4},
523 { AFE_PORT_ID_QUINARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
524 LPASS_BE_QUIN_TDM_TX_4},
525 { AFE_PORT_ID_QUINARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
526 LPASS_BE_QUIN_TDM_RX_5},
527 { AFE_PORT_ID_QUINARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
528 LPASS_BE_QUIN_TDM_TX_5},
529 { AFE_PORT_ID_QUINARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
530 LPASS_BE_QUIN_TDM_RX_6},
531 { AFE_PORT_ID_QUINARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
532 LPASS_BE_QUIN_TDM_TX_6},
533 { AFE_PORT_ID_QUINARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
534 LPASS_BE_QUIN_TDM_RX_7},
535 { AFE_PORT_ID_QUINARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
536 LPASS_BE_QUIN_TDM_TX_7},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530537 { INT_BT_A2DP_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
538 LPASS_BE_INT_BT_A2DP_RX},
539 { AFE_PORT_ID_USB_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
540 LPASS_BE_USB_AUDIO_RX},
541 { AFE_PORT_ID_USB_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
542 LPASS_BE_USB_AUDIO_TX},
543 { DISPLAY_PORT_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
544 LPASS_BE_DISPLAY_PORT},
545 { AFE_PORT_ID_TERTIARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
546 LPASS_BE_TERT_AUXPCM_RX},
547 { AFE_PORT_ID_TERTIARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
548 LPASS_BE_TERT_AUXPCM_TX},
549 { AFE_PORT_ID_QUATERNARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
550 LPASS_BE_QUAT_AUXPCM_RX},
551 { AFE_PORT_ID_QUATERNARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
552 LPASS_BE_QUAT_AUXPCM_TX},
Rohit Kumara5077932017-09-10 22:05:05 +0530553 { AFE_PORT_ID_QUINARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
554 LPASS_BE_QUIN_AUXPCM_RX},
555 { AFE_PORT_ID_QUINARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
556 LPASS_BE_QUIN_AUXPCM_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530557 { AFE_PORT_ID_INT0_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
558 LPASS_BE_INT0_MI2S_RX},
559 { AFE_PORT_ID_INT0_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
560 LPASS_BE_INT0_MI2S_TX},
561 { AFE_PORT_ID_INT1_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
562 LPASS_BE_INT1_MI2S_RX},
563 { AFE_PORT_ID_INT1_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
564 LPASS_BE_INT1_MI2S_TX},
565 { AFE_PORT_ID_INT2_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
566 LPASS_BE_INT2_MI2S_RX},
567 { AFE_PORT_ID_INT2_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
568 LPASS_BE_INT2_MI2S_TX},
569 { AFE_PORT_ID_INT3_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
570 LPASS_BE_INT3_MI2S_RX},
571 { AFE_PORT_ID_INT3_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
572 LPASS_BE_INT3_MI2S_TX},
573 { AFE_PORT_ID_INT4_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
574 LPASS_BE_INT4_MI2S_RX},
575 { AFE_PORT_ID_INT4_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
576 LPASS_BE_INT4_MI2S_TX},
577 { AFE_PORT_ID_INT5_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
578 LPASS_BE_INT5_MI2S_RX},
579 { AFE_PORT_ID_INT5_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
580 LPASS_BE_INT5_MI2S_TX},
581 { AFE_PORT_ID_INT6_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
582 LPASS_BE_INT6_MI2S_RX},
583 { AFE_PORT_ID_INT6_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
584 LPASS_BE_INT6_MI2S_TX},
Raja Mallik425e1d32018-05-20 19:21:10 +0530585 { AFE_LOOPBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_AFE_LOOPBACK_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530586};
587
588/* Track ASM playback & capture sessions of DAI
589 * Track LSM listen sessions
590 */
591static struct msm_pcm_routing_fdai_data
592 fe_dai_map[MSM_FRONTEND_DAI_MAX][2] = {
593 /* MULTIMEDIA1 */
594 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
595 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
596 /* MULTIMEDIA2 */
597 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
598 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
599 /* MULTIMEDIA3 */
600 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
601 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
602 /* MULTIMEDIA4 */
603 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
604 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
605 /* MULTIMEDIA5 */
606 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
607 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
608 /* MULTIMEDIA6 */
609 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
610 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
611 /* MULTIMEDIA7*/
612 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
613 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
614 /* MULTIMEDIA8 */
615 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
616 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
617 /* MULTIMEDIA9 */
618 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
619 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
620 /* MULTIMEDIA10 */
621 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
622 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
623 /* MULTIMEDIA11 */
624 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
625 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
626 /* MULTIMEDIA12 */
627 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
628 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
629 /* MULTIMEDIA13 */
630 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
631 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
632 /* MULTIMEDIA14 */
633 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
634 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
635 /* MULTIMEDIA15 */
636 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
637 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
638 /* MULTIMEDIA16 */
639 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
640 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
641 /* MULTIMEDIA17 */
642 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
643 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
644 /* MULTIMEDIA18 */
645 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
646 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
647 /* MULTIMEDIA19 */
648 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
649 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
650 /* MULTIMEDIA20 */
651 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
652 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +0530653 /* MULTIMEDIA28 */
654 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
655 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
656 /* MULTIMEDIA29 */
657 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
658 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530659 /* VOIP */
660 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
661 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
662 /* AFE_RX */
663 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
664 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
665 /* AFE_TX */
666 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
667 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
668 /* VOICE_STUB */
669 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
670 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530671 /* DTMF_RX */
672 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
673 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530674 /* QCHAT */
675 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
676 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
677 /* VOLTE_STUB */
678 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
679 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
680 /* LSM1 */
681 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
682 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
683 /* LSM2 */
684 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
685 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
686 /* LSM3 */
687 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
688 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
689 /* LSM4 */
690 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
691 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
692 /* LSM5 */
693 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
694 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
695 /* LSM6 */
696 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
697 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
698 /* LSM7 */
699 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
700 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
701 /* LSM8 */
702 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
703 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
704 /* VOICE2_STUB */
705 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
706 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530707 /* VOICEMMODE1 */
708 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
709 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
710 /* VOICEMMODE2 */
711 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
712 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
713};
714
715static unsigned long session_copp_map[MSM_FRONTEND_DAI_MAX][2]
716 [MSM_BACKEND_DAI_MAX];
717static struct msm_pcm_routing_app_type_data app_type_cfg[MAX_APP_TYPES];
718static struct msm_pcm_routing_app_type_data lsm_app_type_cfg[MAX_APP_TYPES];
719static struct msm_pcm_stream_app_type_cfg
720 fe_dai_app_type_cfg[MSM_FRONTEND_DAI_MAX][2][MSM_BACKEND_DAI_MAX];
721
722static int last_be_id_configured[MSM_FRONTEND_DAI_MAX][MAX_SESSION_TYPES];
723
724/* The caller of this should aqcuire routing lock */
725void msm_pcm_routing_get_bedai_info(int be_idx,
726 struct msm_pcm_routing_bdai_data *be_dai)
727{
728 if (be_idx >= 0 && be_idx < MSM_BACKEND_DAI_MAX)
729 memcpy(be_dai, &msm_bedais[be_idx],
730 sizeof(struct msm_pcm_routing_bdai_data));
731}
732
733/* The caller of this should aqcuire routing lock */
734void msm_pcm_routing_get_fedai_info(int fe_idx, int sess_type,
735 struct msm_pcm_routing_fdai_data *fe_dai)
736{
737 if ((sess_type == SESSION_TYPE_TX) || (sess_type == SESSION_TYPE_RX))
738 memcpy(fe_dai, &fe_dai_map[fe_idx][sess_type],
739 sizeof(struct msm_pcm_routing_fdai_data));
740}
741
742void msm_pcm_routing_acquire_lock(void)
743{
744 mutex_lock(&routing_lock);
745}
746
747void msm_pcm_routing_release_lock(void)
748{
749 mutex_unlock(&routing_lock);
750}
751
752static int msm_pcm_routing_get_app_type_idx(int app_type)
753{
754 int idx;
755
756 pr_debug("%s: app_type: %d\n", __func__, app_type);
757 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
758 if (app_type_cfg[idx].app_type == app_type)
759 return idx;
760 }
761 pr_info("%s: App type not available, fallback to default\n", __func__);
762 return 0;
763}
764
765static int msm_pcm_routing_get_lsm_app_type_idx(int app_type)
766{
767 int idx;
768
769 pr_debug("%s: app_type: %d\n", __func__, app_type);
770 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
771 if (lsm_app_type_cfg[idx].app_type == app_type)
772 return idx;
773 }
774 pr_debug("%s: App type not available, fallback to default\n", __func__);
775 return 0;
776}
777
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +0530778static int get_port_id(int port_id)
779{
780 return (port_id == AFE_LOOPBACK_TX ? msm_ec_ref_port_id : port_id);
781}
782
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530783static bool is_mm_lsm_fe_id(int fe_id)
784{
785 bool rc = true;
786
787 if (fe_id > MSM_FRONTEND_DAI_MM_MAX_ID &&
788 ((fe_id < MSM_FRONTEND_DAI_LSM1) ||
789 (fe_id > MSM_FRONTEND_DAI_LSM8))) {
790 rc = false;
791 }
792 return rc;
793}
794
Dhanalakshmi Siddani040e0262018-11-26 23:01:26 +0530795/*
796 * msm_pcm_routing_send_chmix_cfg
797 *
798 * Receives fe_id, ip_channel_cnt, op_channel_cnt, channel weight, session_type
799 * use_default_chmap and channel map to map in channel mixer and send to
800 * adm programmable matrix.
801 *
802 * fe_id - Passed value, frontend id which is wanted
803 * ip_channel_cnt - Passed value, number of input channels
804 * op_channel_cnt - Passed value, number of output channels
805 * ch_wght_coeff - Passed reference, weights for each output channel
806 * session_type - Passed value, session_type for RX or TX
807 * use_default_chmap - true if default channel map to be used
808 * ch_map - input/output channel map for playback/capture session respectively
809 */
810
811int msm_pcm_routing_send_chmix_cfg(int fe_id, int ip_channel_cnt,
812 int op_channel_cnt, int *ch_wght_coeff,
813 int session_type, bool use_default_chmap,
814 char *channel_map)
815{
816 int rc = 0, idx = 0, i, j;
817 int be_index = 0, port_id, index = 0;
818 unsigned int session_id = 0;
819
820 pr_debug("%s: fe_id[%d] ip_ch[%d] op_ch[%d] sess_type [%d]\n",
821 __func__, fe_id, ip_channel_cnt, op_channel_cnt, session_type);
822
823 if (!use_default_chmap && (channel_map == NULL)) {
824 pr_err("%s: No valid chan map and can't use default\n",
825 __func__);
826 return -EINVAL;
827 }
828
829 if ((ch_wght_coeff == NULL) || (op_channel_cnt > ADM_MAX_CHANNELS) ||
830 (ip_channel_cnt > ADM_MAX_CHANNELS)) {
831 pr_err("%s: Invalid channels or null coefficients\n", __func__);
832 return -EINVAL;
833 }
834
835 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
836 port_id = msm_bedais[be_index].port_id;
837 if (!msm_bedais[be_index].active ||
838 !test_bit(fe_id, &msm_bedais[be_index].fe_sessions[0]))
839 continue;
840
841 session_id = fe_dai_map[fe_id][session_type].strm_id;
842 channel_mixer[fe_id].input_channels[0] = ip_channel_cnt;
843 channel_mixer[fe_id].output_channel = op_channel_cnt;
844 channel_mixer[fe_id].rule = 0;
845
846 for (j = 0; j < op_channel_cnt; j++) {
847 for (i = 0; i < ip_channel_cnt; i++)
848 channel_mixer[fe_id].channel_weight[j][i] =
849 ch_wght_coeff[index++];
850 }
851 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
852 unsigned long copp =
853 session_copp_map[fe_id][session_type][be_index];
854 if (!test_bit(idx, &copp))
855 continue;
856 rc = adm_programable_channel_mixer(port_id,
857 idx, session_id, session_type,
858 channel_mixer + fe_id, 0,
859 use_default_chmap, channel_map);
860 if (rc < 0)
861 pr_err("%s: err setting channel mix config\n",
862 __func__);
863 }
864 }
865 return 0;
866}
867
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530868int msm_pcm_routing_reg_stream_app_type_cfg(
869 int fedai_id, int session_type, int be_id,
870 struct msm_pcm_stream_app_type_cfg *cfg_data)
871{
872 int ret = 0;
873
874 if (cfg_data == NULL) {
875 pr_err("%s: Received NULL pointer for cfg_data\n", __func__);
876 ret = -EINVAL;
877 goto done;
878 }
879
880 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
881 __func__, fedai_id, session_type, be_id,
882 cfg_data->app_type, cfg_data->acdb_dev_id,
883 cfg_data->sample_rate);
884
885 if (!is_mm_lsm_fe_id(fedai_id)) {
886 pr_err("%s: Invalid machine driver ID %d\n",
887 __func__, fedai_id);
888 ret = -EINVAL;
889 goto done;
890 }
891 if (session_type != SESSION_TYPE_RX &&
892 session_type != SESSION_TYPE_TX) {
893 pr_err("%s: Invalid session type %d\n",
894 __func__, session_type);
895 ret = -EINVAL;
896 goto done;
897 }
898 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
899 pr_err("%s: Received out of bounds be_id %d\n",
900 __func__, be_id);
901 ret = -EINVAL;
902 goto done;
903 }
904
905 fe_dai_app_type_cfg[fedai_id][session_type][be_id] = *cfg_data;
906
907 /*
908 * Store the BE ID of the configuration information set as the latest so
909 * the get mixer control knows what to return.
910 */
911 last_be_id_configured[fedai_id][session_type] = be_id;
912
913done:
914 return ret;
915}
916EXPORT_SYMBOL(msm_pcm_routing_reg_stream_app_type_cfg);
917
918/**
919 * msm_pcm_routing_get_stream_app_type_cfg
920 *
921 * Receives fedai_id, session_type, be_id, and populates app_type,
922 * acdb_dev_id, & sample rate. Returns 0 on success. On failure returns
923 * -EINVAL and does not alter passed values.
924 *
925 * fedai_id - Passed value, front end ID for which app type config is wanted
926 * session_type - Passed value, session type for which app type config
927 * is wanted
928 * be_id - Returned value, back end device id the app type config data is for
929 * cfg_data - Returned value, configuration data used by app type config
930 */
931int msm_pcm_routing_get_stream_app_type_cfg(
932 int fedai_id, int session_type, int *bedai_id,
933 struct msm_pcm_stream_app_type_cfg *cfg_data)
934{
935 int be_id;
936 int ret = 0;
937
938 if (bedai_id == NULL) {
939 pr_err("%s: Received NULL pointer for backend ID\n", __func__);
940 ret = -EINVAL;
941 goto done;
942 } else if (cfg_data == NULL) {
943 pr_err("%s: NULL pointer sent for cfg_data\n", __func__);
944 ret = -EINVAL;
945 goto done;
946 } else if (!is_mm_lsm_fe_id(fedai_id)) {
947 pr_err("%s: Invalid FE ID %d\n", __func__, fedai_id);
948 ret = -EINVAL;
949 goto done;
950 } else if (session_type != SESSION_TYPE_RX &&
951 session_type != SESSION_TYPE_TX) {
952 pr_err("%s: Invalid session type %d\n", __func__, session_type);
953 ret = -EINVAL;
954 goto done;
955 }
956
957 be_id = last_be_id_configured[fedai_id][session_type];
958 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
959 pr_err("%s: Invalid BE ID %d\n", __func__, be_id);
960 ret = -EINVAL;
961 goto done;
962 }
963
964 *bedai_id = be_id;
965 *cfg_data = fe_dai_app_type_cfg[fedai_id][session_type][be_id];
966 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
967 __func__, fedai_id, session_type, *bedai_id,
968 cfg_data->app_type, cfg_data->acdb_dev_id,
969 cfg_data->sample_rate);
970done:
971 return ret;
972}
973EXPORT_SYMBOL(msm_pcm_routing_get_stream_app_type_cfg);
974
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530975static struct cal_block_data *msm_routing_find_topology_by_path(int path,
976 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530977{
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530978 struct list_head *ptr, *next;
979 struct cal_block_data *cal_block = NULL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530980 pr_debug("%s\n", __func__);
981
982 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530983 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530984
985 cal_block = list_entry(ptr,
986 struct cal_block_data, list);
987
Vikram Pandurangad3b58cc2017-09-27 12:17:36 -0700988 if (cal_utils_is_cal_stale(cal_block))
989 continue;
990
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530991 if (((struct audio_cal_info_adm_top *)cal_block
992 ->cal_info)->path == path) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530993 return cal_block;
994 }
995 }
996 pr_debug("%s: Can't find topology for path %d\n", __func__, path);
997 return NULL;
998}
999
1000static struct cal_block_data *msm_routing_find_topology(int path,
1001 int app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +05301002 int acdb_id,
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -07001003 int cal_index,
1004 bool exact)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301005{
1006 struct list_head *ptr, *next;
1007 struct cal_block_data *cal_block = NULL;
1008 struct audio_cal_info_adm_top *cal_info;
1009
1010 pr_debug("%s\n", __func__);
1011
1012 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +05301013 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301014
1015 cal_block = list_entry(ptr,
1016 struct cal_block_data, list);
1017
Vikram Pandurangad3b58cc2017-09-27 12:17:36 -07001018 if (cal_utils_is_cal_stale(cal_block))
1019 continue;
1020
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301021 cal_info = (struct audio_cal_info_adm_top *)
1022 cal_block->cal_info;
1023 if ((cal_info->path == path) &&
1024 (cal_info->app_type == app_type) &&
1025 (cal_info->acdb_id == acdb_id)) {
1026 return cal_block;
1027 }
1028 }
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -07001029 pr_debug("%s: Can't find topology for path %d, app %d, "
1030 "acdb_id %d %s\n", __func__, path, app_type, acdb_id,
1031 exact ? "fail" : "defaulting to search by path");
1032 return exact ? NULL : msm_routing_find_topology_by_path(path,
1033 cal_index);
1034}
1035
1036static int msm_routing_find_topology_on_index(int session_type, int app_type,
1037 int acdb_dev_id, int idx,
1038 bool exact)
1039{
1040 int topology = -EINVAL;
1041 struct cal_block_data *cal_block = NULL;
1042
1043 mutex_lock(&cal_data[idx]->lock);
1044 cal_block = msm_routing_find_topology(session_type, app_type,
1045 acdb_dev_id, idx, exact);
1046 if (cal_block != NULL) {
1047 topology = ((struct audio_cal_info_adm_top *)
1048 cal_block->cal_info)->topology;
1049 }
1050 mutex_unlock(&cal_data[idx]->lock);
1051 return topology;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301052}
1053
Vikram Pandurangad3b58cc2017-09-27 12:17:36 -07001054/*
1055 * Retrieving cal_block will mark cal_block as stale.
1056 * Hence it cannot be reused or resent unless the flag
1057 * is reset.
1058 */
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301059static int msm_routing_get_adm_topology(int fedai_id, int session_type,
1060 int be_id)
1061{
1062 int topology = NULL_COPP_TOPOLOGY;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301063 int app_type = 0, acdb_dev_id = 0;
1064
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301065 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
1066 __func__, fedai_id, session_type, be_id);
1067
1068 if (cal_data == NULL)
1069 goto done;
1070
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301071 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
1072 acdb_dev_id =
1073 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -07001074 pr_debug("%s: Check for exact LSM topology\n", __func__);
1075 topology = msm_routing_find_topology_on_index(session_type,
1076 app_type,
1077 acdb_dev_id,
1078 ADM_LSM_TOPOLOGY_CAL_TYPE_IDX,
1079 true /*exact*/);
1080 if (topology < 0) {
1081 pr_debug("%s: Check for compatible topology\n", __func__);
1082 topology = msm_routing_find_topology_on_index(session_type,
1083 app_type,
1084 acdb_dev_id,
1085 ADM_TOPOLOGY_CAL_TYPE_IDX,
1086 false /*exact*/);
1087 if (topology < 0)
1088 topology = NULL_COPP_TOPOLOGY;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +05301089 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301090done:
1091 pr_debug("%s: Using topology %d\n", __func__, topology);
1092 return topology;
1093}
1094
1095static uint8_t is_be_dai_extproc(int be_dai)
1096{
1097 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
1098 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
1099 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
1100 return 1;
1101 else
1102 return 0;
1103}
1104
1105static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
1106 int path_type, int perf_mode,
1107 uint32_t passthr_mode)
1108{
1109 int i, port_type, j, num_copps = 0;
1110 struct route_payload payload;
1111
1112 port_type = ((path_type == ADM_PATH_PLAYBACK ||
1113 path_type == ADM_PATH_COMPRESSED_RX) ?
1114 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
1115
1116 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1117 if (!is_be_dai_extproc(i) &&
1118 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1119 (msm_bedais[i].active) &&
1120 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301121 int port_id = get_port_id(msm_bedais[i].port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301122 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1123 unsigned long copp =
1124 session_copp_map[fedai_id][sess_type][i];
1125 if (test_bit(j, &copp)) {
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301126 payload.port_id[num_copps] = port_id;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301127 payload.copp_idx[num_copps] = j;
1128 payload.app_type[num_copps] =
1129 fe_dai_app_type_cfg
1130 [fedai_id][sess_type][i]
1131 .app_type;
1132 payload.acdb_dev_id[num_copps] =
1133 fe_dai_app_type_cfg
1134 [fedai_id][sess_type][i]
1135 .acdb_dev_id;
1136 payload.sample_rate[num_copps] =
1137 fe_dai_app_type_cfg
1138 [fedai_id][sess_type][i]
1139 .sample_rate;
1140 num_copps++;
1141 }
1142 }
1143 }
1144 }
1145
1146 if (num_copps) {
1147 payload.num_copps = num_copps;
1148 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1149 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1150 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1151 }
1152}
1153
1154void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1155 int stream_type)
1156{
1157 int i, session_type, path_type, port_type;
1158 u32 mode = 0;
1159
1160 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1161 /* bad ID assigned in machine driver */
1162 pr_err("%s: bad MM ID\n", __func__);
1163 return;
1164 }
1165
1166 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1167 session_type = SESSION_TYPE_RX;
1168 path_type = ADM_PATH_PLAYBACK;
1169 port_type = MSM_AFE_PORT_TYPE_RX;
1170 } else {
1171 session_type = SESSION_TYPE_TX;
1172 path_type = ADM_PATH_LIVE_REC;
1173 port_type = MSM_AFE_PORT_TYPE_TX;
1174 }
1175
1176 mutex_lock(&routing_lock);
1177
1178 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1179 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1180 if (!is_be_dai_extproc(i) &&
1181 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1182 (msm_bedais[i].active) &&
1183 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1184 mode = afe_get_port_type(msm_bedais[i].port_id);
1185 adm_connect_afe_port(mode, dspst_id,
1186 msm_bedais[i].port_id);
1187 break;
1188 }
1189 }
1190 mutex_unlock(&routing_lock);
1191}
1192
1193static bool route_check_fe_id_adm_support(int fe_id)
1194{
1195 bool rc = true;
1196
1197 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1198 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1199 /* fe id is listen while port is set to afe */
1200 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1201 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1202 __func__, fe_id, lsm_port_index);
1203 rc = false;
1204 }
1205 }
1206
1207 return rc;
1208}
1209
1210int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1211 int dspst_id, int stream_type,
1212 uint32_t passthr_mode)
1213{
1214 int i, j, session_type, path_type, port_type, topology;
1215 int num_copps = 0;
1216 struct route_payload payload;
1217 u32 channels, sample_rate;
1218 u16 bit_width = 16;
1219 bool is_lsm;
1220
1221 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1222 __func__, fe_id, perf_mode, dspst_id,
1223 stream_type, passthr_mode);
1224 if (!is_mm_lsm_fe_id(fe_id)) {
1225 /* bad ID assigned in machine driver */
1226 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1227 return -EINVAL;
1228 }
1229
1230 if (!route_check_fe_id_adm_support(fe_id)) {
1231 /* ignore adm open if not supported for fe_id */
1232 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1233 return 0;
1234 }
1235
1236 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1237 session_type = SESSION_TYPE_RX;
1238 if (passthr_mode != LEGACY_PCM)
1239 path_type = ADM_PATH_COMPRESSED_RX;
1240 else
1241 path_type = ADM_PATH_PLAYBACK;
1242 port_type = MSM_AFE_PORT_TYPE_RX;
1243 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1244 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301245 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301246 path_type = ADM_PATH_COMPRESSED_TX;
1247 else
1248 path_type = ADM_PATH_LIVE_REC;
1249 port_type = MSM_AFE_PORT_TYPE_TX;
1250 } else {
1251 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1252 return -EINVAL;
1253 }
1254
1255 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1256 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1257 mutex_lock(&routing_lock);
1258
1259 payload.num_copps = 0; /* only RX needs to use payload */
1260 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1261 /* re-enable EQ if active */
1262 msm_qti_pp_send_eq_values(fe_id);
1263 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1264 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1265 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1266
1267 if (!is_be_dai_extproc(i) &&
1268 (afe_get_port_type(msm_bedais[i].port_id) ==
1269 port_type) &&
1270 (msm_bedais[i].active) &&
1271 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1272 int app_type, app_type_idx, copp_idx, acdb_dev_id;
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301273 int port_id = get_port_id(msm_bedais[i].port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301274
1275 /*
1276 * check if ADM needs to be configured with different
1277 * channel mapping than backend
1278 */
1279 if (!msm_bedais[i].adm_override_ch)
1280 channels = msm_bedais[i].channel;
1281 else
1282 channels = msm_bedais[i].adm_override_ch;
1283
1284 bit_width = msm_routing_get_bit_width(
1285 msm_bedais[i].format);
1286 app_type =
1287 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1288 if (app_type && is_lsm) {
1289 app_type_idx =
1290 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1291 sample_rate =
1292 fe_dai_app_type_cfg[fe_id][session_type][i]
1293 .sample_rate;
1294 bit_width =
1295 lsm_app_type_cfg[app_type_idx].bit_width;
1296 } else if (app_type) {
1297 app_type_idx =
1298 msm_pcm_routing_get_app_type_idx(
1299 app_type);
1300 sample_rate =
1301 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1302 bit_width =
1303 app_type_cfg[app_type_idx].bit_width;
1304 } else {
1305 sample_rate = msm_bedais[i].sample_rate;
1306 }
1307 acdb_dev_id =
1308 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1309 topology = msm_routing_get_adm_topology(fe_id,
1310 session_type,
1311 i);
1312 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1313 || (passthr_mode ==
1314 COMPRESSED_PASSTHROUGH_GEN))
1315 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1316 pr_debug("%s: Before adm open topology %d\n", __func__,
1317 topology);
1318
1319 copp_idx =
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301320 adm_open(port_id, path_type, sample_rate,
1321 channels, topology, perf_mode,
1322 bit_width, app_type, acdb_dev_id,
1323 session_type);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301324 if ((copp_idx < 0) ||
1325 (copp_idx >= MAX_COPPS_PER_PORT)) {
1326 pr_err("%s:adm open failed coppid:%d\n",
1327 __func__, copp_idx);
1328 mutex_unlock(&routing_lock);
1329 return -EINVAL;
1330 }
1331 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1332 __func__, fe_id, session_type, i);
1333 set_bit(copp_idx,
1334 &session_copp_map[fe_id][session_type][i]);
1335
1336 if (msm_is_resample_needed(
1337 sample_rate,
1338 msm_bedais[i].sample_rate))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301339 adm_copp_mfc_cfg(port_id, copp_idx,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301340 msm_bedais[i].sample_rate);
1341
1342 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1343 unsigned long copp =
1344 session_copp_map[fe_id][session_type][i];
1345 if (test_bit(j, &copp)) {
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301346 payload.port_id[num_copps] = port_id;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301347 payload.copp_idx[num_copps] = j;
1348 payload.app_type[num_copps] =
1349 fe_dai_app_type_cfg
1350 [fe_id][session_type][i]
1351 .app_type;
1352 payload.acdb_dev_id[num_copps] =
1353 fe_dai_app_type_cfg
1354 [fe_id][session_type][i]
1355 .acdb_dev_id;
1356 payload.sample_rate[num_copps] =
1357 fe_dai_app_type_cfg
1358 [fe_id][session_type][i]
1359 .sample_rate;
1360 num_copps++;
1361 }
1362 }
1363 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1364 && passthr_mode !=
1365 COMPRESSED_PASSTHROUGH_GEN) {
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301366 msm_routing_send_device_pp_params(port_id,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301367 copp_idx, fe_id);
1368 }
1369 }
1370 }
1371 if (num_copps) {
1372 payload.num_copps = num_copps;
1373 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1374 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1375 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1376 }
1377 mutex_unlock(&routing_lock);
1378 return 0;
1379}
1380
1381static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1382{
1383 u32 session_id;
1384
1385 switch (val) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301386 case MSM_FRONTEND_DAI_QCHAT:
1387 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1388 break;
1389 case MSM_FRONTEND_DAI_VOIP:
1390 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1391 break;
1392 case MSM_FRONTEND_DAI_VOICEMMODE1:
1393 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1394 break;
1395 case MSM_FRONTEND_DAI_VOICEMMODE2:
1396 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1397 break;
1398 default:
1399 session_id = 0;
1400 }
1401
1402 pr_debug("%s session_id 0x%x", __func__, session_id);
1403 return session_id;
1404}
1405
1406static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1407 int dspst_id, int stream_type)
1408{
1409 int copp_idx = 0;
1410 int sess_type = 0;
1411 int i = 0, j = 0, be_id;
1412 int ret = 0;
Dhanalakshmi Siddani040e0262018-11-26 23:01:26 +05301413 bool use_default_chmap = true;
1414 char *ch_map = NULL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301415
1416 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1417 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1418 return 0;
1419 }
1420
1421 if (!(channel_mixer[fe_id].enable)) {
1422 pr_debug("%s: channel mixer not enabled for FE %d\n",
1423 __func__, fe_id);
1424 return 0;
1425 }
1426
1427 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1428 sess_type = SESSION_TYPE_RX;
1429 else
1430 sess_type = SESSION_TYPE_TX;
1431
1432 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1433 ++i) {
1434 be_id = channel_input[fe_id][i] - 1;
1435 channel_mixer[fe_id].input_channels[i] =
1436 msm_bedais[be_id].channel;
1437
1438 if ((msm_bedais[be_id].active) &&
1439 test_bit(fe_id,
1440 &msm_bedais[be_id].fe_sessions[0])) {
1441 unsigned long copp =
1442 session_copp_map[fe_id][sess_type][be_id];
1443 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1444 if (test_bit(j, &copp)) {
1445 copp_idx = j;
1446 break;
1447 }
1448 }
1449
1450 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1451 __func__,
1452 fe_id, be_id, msm_bedais[be_id].channel,
1453 copp_idx);
1454 ret = adm_programable_channel_mixer(
1455 msm_bedais[be_id].port_id,
1456 copp_idx, dspst_id, sess_type,
Dhanalakshmi Siddani040e0262018-11-26 23:01:26 +05301457 channel_mixer + fe_id, i,
1458 use_default_chmap, ch_map);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301459 }
1460 }
1461
1462 return ret;
1463}
1464
1465int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1466 int dspst_id, int stream_type)
1467{
1468 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1469 struct route_payload payload;
1470 u32 channels, sample_rate;
1471 uint16_t bits_per_sample = 16;
1472 uint32_t passthr_mode = LEGACY_PCM;
1473 int ret = 0;
1474
1475 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1476 /* bad ID assigned in machine driver */
1477 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1478 return -EINVAL;
1479 }
1480
1481 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1482 session_type = SESSION_TYPE_RX;
1483 path_type = ADM_PATH_PLAYBACK;
1484 port_type = MSM_AFE_PORT_TYPE_RX;
1485 } else {
1486 session_type = SESSION_TYPE_TX;
1487 path_type = ADM_PATH_LIVE_REC;
1488 port_type = MSM_AFE_PORT_TYPE_TX;
1489 }
1490
1491 mutex_lock(&routing_lock);
1492
1493 payload.num_copps = 0; /* only RX needs to use payload */
1494 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1495 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1496
1497 /* re-enable EQ if active */
1498 msm_qti_pp_send_eq_values(fedai_id);
1499 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1500 if (!is_be_dai_extproc(i) &&
1501 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1502 (msm_bedais[i].active) &&
1503 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1504 int app_type, app_type_idx, copp_idx, acdb_dev_id;
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301505 int port_id = get_port_id(msm_bedais[i].port_id);
1506
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301507 /*
1508 * check if ADM needs to be configured with different
1509 * channel mapping than backend
1510 */
1511 if (!msm_bedais[i].adm_override_ch)
1512 channels = msm_bedais[i].channel;
1513 else
1514 channels = msm_bedais[i].adm_override_ch;
1515 msm_bedais[i].passthr_mode[fedai_id] =
1516 LEGACY_PCM;
1517
1518 bits_per_sample = msm_routing_get_bit_width(
1519 msm_bedais[i].format);
1520
1521 app_type =
1522 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1523 if (app_type) {
1524 app_type_idx =
1525 msm_pcm_routing_get_app_type_idx(app_type);
1526 sample_rate =
1527 fe_dai_app_type_cfg[fedai_id][session_type][i]
1528 .sample_rate;
1529 bits_per_sample =
1530 app_type_cfg[app_type_idx].bit_width;
1531 } else
1532 sample_rate = msm_bedais[i].sample_rate;
1533
1534 acdb_dev_id =
1535 fe_dai_app_type_cfg[fedai_id][session_type][i]
1536 .acdb_dev_id;
1537 topology = msm_routing_get_adm_topology(fedai_id,
1538 session_type,
1539 i);
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301540 copp_idx = adm_open(port_id, path_type,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301541 sample_rate, channels, topology,
1542 perf_mode, bits_per_sample,
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301543 app_type, acdb_dev_id,
1544 session_type);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301545 if ((copp_idx < 0) ||
1546 (copp_idx >= MAX_COPPS_PER_PORT)) {
1547 pr_err("%s: adm open failed copp_idx:%d\n",
Vikram Pandurangad3b58cc2017-09-27 12:17:36 -07001548 __func__, copp_idx);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301549 mutex_unlock(&routing_lock);
1550 return -EINVAL;
1551 }
1552 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1553 __func__, fedai_id, session_type, i);
1554 set_bit(copp_idx,
1555 &session_copp_map[fedai_id][session_type][i]);
1556
1557 if (msm_is_resample_needed(
1558 sample_rate,
1559 msm_bedais[i].sample_rate))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301560 adm_copp_mfc_cfg(port_id, copp_idx,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301561 msm_bedais[i].sample_rate);
1562
1563 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1564 unsigned long copp =
1565 session_copp_map[fedai_id][session_type][i];
1566 if (test_bit(j, &copp)) {
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301567 payload.port_id[num_copps] = port_id;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301568 payload.copp_idx[num_copps] = j;
1569 payload.app_type[num_copps] =
1570 fe_dai_app_type_cfg
1571 [fedai_id][session_type]
1572 [i].app_type;
1573 payload.acdb_dev_id[num_copps] =
1574 fe_dai_app_type_cfg
1575 [fedai_id][session_type]
1576 [i].acdb_dev_id;
1577 payload.sample_rate[num_copps] =
1578 fe_dai_app_type_cfg
1579 [fedai_id][session_type]
1580 [i].sample_rate;
1581 num_copps++;
1582 }
1583 }
1584 if ((perf_mode == LEGACY_PCM_MODE) &&
1585 (msm_bedais[i].passthr_mode[fedai_id] ==
1586 LEGACY_PCM))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301587 msm_pcm_routing_cfg_pp(port_id, copp_idx,
1588 topology, channels);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301589 }
1590 }
1591 if (num_copps) {
1592 payload.num_copps = num_copps;
1593 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1594 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1595 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1596 }
1597
1598 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1599 dspst_id, stream_type);
1600 mutex_unlock(&routing_lock);
1601 return ret;
1602}
1603
1604int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1605 int dspst_id, int stream_type,
1606 struct msm_pcm_routing_evt event_info)
1607{
1608 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1609 stream_type)) {
1610 pr_err("%s: failed to reg phy stream\n", __func__);
1611 return -EINVAL;
1612 }
1613
1614 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1615 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1616 else
1617 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1618 return 0;
1619}
1620
1621void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1622{
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301623 int i, port_type, session_type, path_type, topology, port_id;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301624 struct msm_pcm_routing_fdai_data *fdai;
1625
1626 if (!is_mm_lsm_fe_id(fedai_id)) {
1627 /* bad ID assigned in machine driver */
1628 pr_err("%s: bad MM ID\n", __func__);
1629 return;
1630 }
1631
1632 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1633 port_type = MSM_AFE_PORT_TYPE_RX;
1634 session_type = SESSION_TYPE_RX;
1635 path_type = ADM_PATH_PLAYBACK;
1636 } else {
1637 port_type = MSM_AFE_PORT_TYPE_TX;
1638 session_type = SESSION_TYPE_TX;
1639 path_type = ADM_PATH_LIVE_REC;
1640 }
1641
1642 mutex_lock(&routing_lock);
1643 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1644 if (!is_be_dai_extproc(i) &&
1645 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1646 (msm_bedais[i].active) &&
1647 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1648 int idx;
1649 unsigned long copp =
1650 session_copp_map[fedai_id][session_type][i];
1651 fdai = &fe_dai_map[fedai_id][session_type];
1652
1653 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1654 if (test_bit(idx, &copp))
1655 break;
1656
1657 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1658 pr_debug("%s: copp idx is invalid, exiting\n",
1659 __func__);
1660 continue;
1661 }
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301662 port_id = get_port_id(msm_bedais[i].port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301663 topology = adm_get_topology_for_port_copp_idx(
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301664 port_id, idx);
1665 adm_close(port_id, fdai->perf_mode, idx);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301666 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1667 __func__, copp, fedai_id, session_type, i);
1668 clear_bit(idx,
1669 &session_copp_map[fedai_id][session_type][i]);
1670 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1671 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1672 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1673 (msm_bedais[i].passthr_mode[fedai_id] ==
1674 LEGACY_PCM))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301675 msm_pcm_routing_deinit_pp(port_id, topology);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301676 }
1677 }
1678
1679 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1680 fe_dai_map[fedai_id][session_type].be_srate = 0;
1681 mutex_unlock(&routing_lock);
1682}
1683
1684/* Check if FE/BE route is set */
1685static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1686{
1687 bool rc = false;
1688
1689 if (!is_mm_lsm_fe_id(fe_id)) {
1690 /* recheck FE ID in the mixer control defined in this file */
1691 pr_err("%s: bad MM ID\n", __func__);
1692 return rc;
1693 }
1694
1695 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1696 rc = true;
1697
1698 return rc;
1699}
1700
1701static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1702{
1703 int session_type, path_type, topology;
1704 u32 channels, sample_rate;
1705 uint16_t bits_per_sample = 16;
1706 struct msm_pcm_routing_fdai_data *fdai;
1707 uint32_t passthr_mode;
1708 bool is_lsm;
1709
1710 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1711
1712 if (!is_mm_lsm_fe_id(val)) {
1713 /* recheck FE ID in the mixer control defined in this file */
1714 pr_err("%s: bad MM ID\n", __func__);
1715 return;
1716 }
1717
1718 if (!route_check_fe_id_adm_support(val)) {
1719 /* ignore adm open if not supported for fe_id */
1720 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1721 return;
1722 }
1723
1724 passthr_mode = msm_bedais[reg].passthr_mode[val];
1725 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1726 MSM_AFE_PORT_TYPE_RX) {
1727 session_type = SESSION_TYPE_RX;
1728 if (passthr_mode != LEGACY_PCM)
1729 path_type = ADM_PATH_COMPRESSED_RX;
1730 else
1731 path_type = ADM_PATH_PLAYBACK;
1732 } else {
1733 session_type = SESSION_TYPE_TX;
Haynes Mathew George9a277722018-01-29 17:34:49 -08001734 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301735 path_type = ADM_PATH_COMPRESSED_TX;
1736 else
1737 path_type = ADM_PATH_LIVE_REC;
1738 }
1739 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1740 (val <= MSM_FRONTEND_DAI_LSM8);
1741
1742 mutex_lock(&routing_lock);
1743 if (set) {
1744 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1745 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1746 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1747 voc_start_playback(set, msm_bedais[reg].port_id);
1748
1749 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1750 fdai = &fe_dai_map[val][session_type];
1751 if (msm_bedais[reg].active && fdai->strm_id !=
1752 INVALID_SESSION) {
1753 int app_type, app_type_idx, copp_idx, acdb_dev_id;
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301754 int port_id = get_port_id(msm_bedais[reg].port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301755 /*
1756 * check if ADM needs to be configured with different
1757 * channel mapping than backend
1758 */
1759 if (!msm_bedais[reg].adm_override_ch)
1760 channels = msm_bedais[reg].channel;
1761 else
1762 channels = msm_bedais[reg].adm_override_ch;
1763 if (session_type == SESSION_TYPE_TX &&
1764 fdai->be_srate &&
1765 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1766 pr_debug("%s: flush strm %d diff BE rates\n",
1767 __func__, fdai->strm_id);
1768
1769 if (fdai->event_info.event_func)
1770 fdai->event_info.event_func(
1771 MSM_PCM_RT_EVT_BUF_RECFG,
1772 fdai->event_info.priv_data);
1773 fdai->be_srate = 0; /* might not need it */
1774 }
1775
1776 bits_per_sample = msm_routing_get_bit_width(
1777 msm_bedais[reg].format);
1778
1779 app_type =
1780 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1781 if (app_type && is_lsm) {
1782 app_type_idx =
1783 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1784 sample_rate =
1785 fe_dai_app_type_cfg[val][session_type][reg]
1786 .sample_rate;
1787 bits_per_sample =
1788 lsm_app_type_cfg[app_type_idx].bit_width;
1789 } else if (app_type) {
1790 app_type_idx =
1791 msm_pcm_routing_get_app_type_idx(app_type);
1792 sample_rate =
1793 fe_dai_app_type_cfg[val][session_type][reg]
1794 .sample_rate;
1795 bits_per_sample =
1796 app_type_cfg[app_type_idx].bit_width;
1797 } else
1798 sample_rate = msm_bedais[reg].sample_rate;
1799
1800 topology = msm_routing_get_adm_topology(val,
1801 session_type,
1802 reg);
1803 acdb_dev_id =
1804 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301805 copp_idx = adm_open(port_id, path_type,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301806 sample_rate, channels, topology,
1807 fdai->perf_mode, bits_per_sample,
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301808 app_type, acdb_dev_id,
1809 session_type);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301810 if ((copp_idx < 0) ||
1811 (copp_idx >= MAX_COPPS_PER_PORT)) {
1812 pr_err("%s: adm open failed\n", __func__);
1813 mutex_unlock(&routing_lock);
1814 return;
1815 }
1816 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1817 __func__, val, session_type, reg);
1818 set_bit(copp_idx,
1819 &session_copp_map[val][session_type][reg]);
1820
1821 if (msm_is_resample_needed(
1822 sample_rate,
1823 msm_bedais[reg].sample_rate))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301824 adm_copp_mfc_cfg(port_id, copp_idx,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301825 msm_bedais[reg].sample_rate);
1826
1827 if (session_type == SESSION_TYPE_RX &&
1828 fdai->event_info.event_func)
1829 fdai->event_info.event_func(
1830 MSM_PCM_RT_EVT_DEVSWITCH,
1831 fdai->event_info.priv_data);
1832
1833 msm_pcm_routing_build_matrix(val, session_type,
1834 path_type,
1835 fdai->perf_mode,
1836 passthr_mode);
1837 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1838 (passthr_mode == LEGACY_PCM))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301839 msm_pcm_routing_cfg_pp(port_id, copp_idx,
1840 topology, channels);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301841 }
1842 } else {
1843 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1844 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1845 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1846 voc_start_playback(set, msm_bedais[reg].port_id);
1847 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1848 fdai = &fe_dai_map[val][session_type];
1849 if (msm_bedais[reg].active && fdai->strm_id !=
1850 INVALID_SESSION) {
1851 int idx;
1852 int port_id;
1853 unsigned long copp =
1854 session_copp_map[val][session_type][reg];
1855 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1856 if (test_bit(idx, &copp))
1857 break;
1858
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301859 port_id = get_port_id(msm_bedais[reg].port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301860 topology = adm_get_topology_for_port_copp_idx(port_id,
1861 idx);
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301862 adm_close(port_id, fdai->perf_mode, idx);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301863 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1864 __func__, copp, val, session_type, reg,
1865 topology);
1866 clear_bit(idx,
1867 &session_copp_map[val][session_type][reg]);
1868 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1869 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1870 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1871 (passthr_mode == LEGACY_PCM))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301872 msm_pcm_routing_deinit_pp(port_id, topology);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301873 msm_pcm_routing_build_matrix(val, session_type,
1874 path_type,
1875 fdai->perf_mode,
1876 passthr_mode);
1877 }
1878 }
1879 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1880 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1881 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1882
1883 mutex_unlock(&routing_lock);
1884}
1885
1886static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1887 struct snd_ctl_elem_value *ucontrol)
1888{
1889 struct soc_mixer_control *mc =
1890 (struct soc_mixer_control *)kcontrol->private_value;
1891
1892 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1893 ucontrol->value.integer.value[0] = 1;
1894 else
1895 ucontrol->value.integer.value[0] = 0;
1896
1897 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1898 ucontrol->value.integer.value[0]);
1899
1900 return 0;
1901}
1902
1903static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1904 struct snd_ctl_elem_value *ucontrol)
1905{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301906 struct snd_soc_dapm_widget *widget =
1907 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301908 struct soc_mixer_control *mc =
1909 (struct soc_mixer_control *)kcontrol->private_value;
1910 struct snd_soc_dapm_update *update = NULL;
1911
1912 if (ucontrol->value.integer.value[0] &&
1913 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1914 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1915 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1916 update);
1917 } else if (!ucontrol->value.integer.value[0] &&
1918 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1919 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1920 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1921 update);
1922 }
1923
1924 return 1;
1925}
1926
1927static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1928 struct snd_ctl_elem_value *ucontrol)
1929{
1930 struct soc_mixer_control *mc =
1931 (struct soc_mixer_control *)kcontrol->private_value;
1932
1933 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1934 ucontrol->value.integer.value[0] = 1;
1935 else
1936 ucontrol->value.integer.value[0] = 0;
1937
1938 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1939 ucontrol->value.integer.value[0]);
1940
1941 return 0;
1942}
1943
1944static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1945 struct snd_ctl_elem_value *ucontrol)
1946{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301947 struct snd_soc_dapm_widget *widget =
1948 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301949 struct soc_mixer_control *mc =
1950 (struct soc_mixer_control *)kcontrol->private_value;
1951 struct snd_soc_dapm_update *update = NULL;
1952
1953 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1954 ucontrol->value.integer.value[0]);
1955
1956 if (ucontrol->value.integer.value[0]) {
1957 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1958 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1959 snd_soc_dapm_mixer_update_power(widget->dapm,
1960 kcontrol, 1, update);
1961 } else if (!ucontrol->value.integer.value[0]) {
1962 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1963 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1964 snd_soc_dapm_mixer_update_power(widget->dapm,
1965 kcontrol, 0, update);
1966 }
1967
1968 return 1;
1969}
1970
1971static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1972{
1973 u32 session_id = 0;
1974 u16 path_type;
1975 struct media_format_info voc_be_media_format;
1976
1977 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1978
1979 session_id = msm_pcm_routing_get_voc_sessionid(val);
1980
1981 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1982 __func__, val, session_id);
1983
1984 mutex_lock(&routing_lock);
1985
1986 if (set)
1987 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1988 else
1989 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1990
1991 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1992 afe_get_port_type(msm_bedais[reg].port_id) ==
1993 MSM_AFE_PORT_TYPE_RX) {
1994 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1995 __func__, set, msm_bedais[reg].port_id);
1996 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1997 }
1998
1999 if (afe_get_port_type(msm_bedais[reg].port_id) ==
2000 MSM_AFE_PORT_TYPE_RX)
2001 path_type = RX_PATH;
2002 else
2003 path_type = TX_PATH;
2004
2005 if (set) {
2006 if (msm_bedais[reg].active) {
2007 voc_set_route_flag(session_id, path_type, 1);
2008
2009 memset(&voc_be_media_format, 0,
2010 sizeof(struct media_format_info));
2011
2012 voc_be_media_format.port_id = msm_bedais[reg].port_id;
2013 voc_be_media_format.num_channels =
2014 msm_bedais[reg].channel;
2015 voc_be_media_format.sample_rate =
2016 msm_bedais[reg].sample_rate;
2017 voc_be_media_format.bits_per_sample =
2018 msm_bedais[reg].format;
2019 /* Defaulting this to 1 for voice call usecases */
2020 voc_be_media_format.channel_mapping[0] = 1;
2021
2022 voc_set_device_config(session_id, path_type,
2023 &voc_be_media_format);
2024
2025 if (voc_get_route_flag(session_id, TX_PATH) &&
2026 voc_get_route_flag(session_id, RX_PATH))
2027 voc_enable_device(session_id);
2028 } else {
2029 pr_debug("%s BE is not active\n", __func__);
2030 }
2031 } else {
2032 voc_set_route_flag(session_id, path_type, 0);
2033 voc_disable_device(session_id);
2034 }
2035
2036 mutex_unlock(&routing_lock);
2037
2038}
2039
2040static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
2041 struct snd_ctl_elem_value *ucontrol)
2042{
2043 struct soc_mixer_control *mc =
2044 (struct soc_mixer_control *)kcontrol->private_value;
2045
2046 mutex_lock(&routing_lock);
2047
2048 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
2049 ucontrol->value.integer.value[0] = 1;
2050 else
2051 ucontrol->value.integer.value[0] = 0;
2052
2053 mutex_unlock(&routing_lock);
2054
2055 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2056 ucontrol->value.integer.value[0]);
2057
2058 return 0;
2059}
2060
2061static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
2062 struct snd_ctl_elem_value *ucontrol)
2063{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302064 struct snd_soc_dapm_widget *widget =
2065 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302066 struct soc_mixer_control *mc =
2067 (struct soc_mixer_control *)kcontrol->private_value;
2068 struct snd_soc_dapm_update *update = NULL;
2069
2070 if (ucontrol->value.integer.value[0]) {
2071 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
2072 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2073 update);
2074 } else {
2075 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
2076 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2077 update);
2078 }
2079
2080 return 1;
2081}
2082
2083static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
2084 struct snd_ctl_elem_value *ucontrol)
2085{
2086 struct soc_mixer_control *mc =
2087 (struct soc_mixer_control *)kcontrol->private_value;
2088
2089 mutex_lock(&routing_lock);
2090
2091 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
2092 ucontrol->value.integer.value[0] = 1;
2093 else
2094 ucontrol->value.integer.value[0] = 0;
2095
2096 mutex_unlock(&routing_lock);
2097
2098 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2099 ucontrol->value.integer.value[0]);
2100
2101 return 0;
2102}
2103
2104static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
2105 struct snd_ctl_elem_value *ucontrol)
2106{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302107 struct snd_soc_dapm_widget *widget =
2108 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302109 struct soc_mixer_control *mc =
2110 (struct soc_mixer_control *)kcontrol->private_value;
2111 struct snd_soc_dapm_update *update = NULL;
2112
2113 if (ucontrol->value.integer.value[0]) {
2114 mutex_lock(&routing_lock);
2115 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2116 mutex_unlock(&routing_lock);
2117
2118 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2119 update);
2120 } else {
2121 mutex_lock(&routing_lock);
2122 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2123 mutex_unlock(&routing_lock);
2124
2125 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2126 update);
2127 }
2128
2129 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2130 ucontrol->value.integer.value[0]);
2131
2132 return 1;
2133}
2134
2135/*
2136 * Return the mapping between port ID and backend ID to enable the AFE callback
2137 * to determine the acdb_dev_id from the port id
2138 */
2139int msm_pcm_get_be_id_from_port_id(int port_id)
2140{
2141 int i;
2142 int be_id = -EINVAL;
2143
2144 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2145 if (msm_bedais[i].port_id == port_id) {
2146 be_id = i;
2147 break;
2148 }
2149 }
2150
2151 return be_id;
2152}
2153
2154/*
2155 * Return the registered dev_acdb_id given a port ID to enable identifying the
2156 * correct AFE calibration information by comparing the header information.
2157 */
2158static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2159{
2160 int acdb_id = -EINVAL;
2161 int i = 0;
2162 int session;
2163 int port_type = afe_get_port_type(port_id);
2164 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2165
2166 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2167 __func__, port_id, be_id, port_type);
2168
2169 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2170 session = SESSION_TYPE_TX;
2171 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2172 session = SESSION_TYPE_RX;
2173 } else {
2174 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2175 acdb_id = -EINVAL;
2176 goto exit;
2177 }
2178
2179 if (be_id < 0) {
2180 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2181 goto exit;
2182 }
2183
2184 mutex_lock(&routing_lock);
2185 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2186 MSM_FRONTEND_DAI_MAX);
2187 if (i < MSM_FRONTEND_DAI_MAX)
2188 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2189
2190 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2191 __func__, i, session, be_id, acdb_id);
2192 mutex_unlock(&routing_lock);
2193exit:
2194 return acdb_id;
2195}
2196
2197static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2198 struct snd_ctl_elem_value *ucontrol)
2199{
2200 ucontrol->value.integer.value[0] = fm_switch_enable;
2201 pr_debug("%s: FM Switch enable %ld\n", __func__,
2202 ucontrol->value.integer.value[0]);
2203 return 0;
2204}
2205
2206static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2207 struct snd_ctl_elem_value *ucontrol)
2208{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302209 struct snd_soc_dapm_widget *widget =
2210 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302211 struct snd_soc_dapm_update *update = NULL;
2212
2213 pr_debug("%s: FM Switch enable %ld\n", __func__,
2214 ucontrol->value.integer.value[0]);
2215 if (ucontrol->value.integer.value[0])
2216 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2217 update);
2218 else
2219 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2220 update);
2221 fm_switch_enable = ucontrol->value.integer.value[0];
2222 return 1;
2223}
2224
2225static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2226 struct snd_ctl_elem_value *ucontrol)
2227{
2228 ucontrol->value.integer.value[0] = hfp_switch_enable;
2229 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2230 ucontrol->value.integer.value[0]);
2231 return 0;
2232}
2233
2234static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2235 struct snd_ctl_elem_value *ucontrol)
2236{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302237 struct snd_soc_dapm_widget *widget =
2238 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302239 struct snd_soc_dapm_update *update = NULL;
2240
2241 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2242 ucontrol->value.integer.value[0]);
2243 if (ucontrol->value.integer.value[0])
2244 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2245 1, update);
2246 else
2247 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2248 0, update);
2249 hfp_switch_enable = ucontrol->value.integer.value[0];
2250 return 1;
2251}
2252
Aniket Kumar Lataf8664712018-02-22 14:46:09 -08002253static int msm_routing_a2dp_switch_mixer_get(struct snd_kcontrol *kcontrol,
2254 struct snd_ctl_elem_value *ucontrol)
2255{
2256 ucontrol->value.integer.value[0] = a2dp_switch_enable;
2257 pr_debug("%s: A2DP Switch enable %ld\n", __func__,
2258 ucontrol->value.integer.value[0]);
2259 return 0;
2260}
2261
2262static int msm_routing_a2dp_switch_mixer_put(struct snd_kcontrol *kcontrol,
2263 struct snd_ctl_elem_value *ucontrol)
2264{
2265 struct snd_soc_dapm_widget *widget =
2266 snd_soc_dapm_kcontrol_widget(kcontrol);
2267 struct snd_soc_dapm_update *update = NULL;
2268
2269 pr_debug("%s: A2DP Switch enable %ld\n", __func__,
2270 ucontrol->value.integer.value[0]);
2271 a2dp_switch_enable = ucontrol->value.integer.value[0];
2272 if (a2dp_switch_enable)
2273 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2274 1, update);
2275 else
2276 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2277 0, update);
2278 return 1;
2279}
2280
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302281static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2282 struct snd_ctl_elem_value *ucontrol)
2283{
2284 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2285 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2286 ucontrol->value.integer.value[0]);
2287 return 0;
2288}
2289
2290static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2291 struct snd_ctl_elem_value *ucontrol)
2292{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302293 struct snd_soc_dapm_widget *widget =
2294 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302295 struct snd_soc_dapm_update *update = NULL;
2296
2297 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2298 ucontrol->value.integer.value[0]);
2299 if (ucontrol->value.integer.value[0])
2300 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2301 update);
2302 else
2303 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2304 update);
2305 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2306 return 1;
2307}
2308
2309static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2310 struct snd_ctl_elem_value *ucontrol)
2311{
2312 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2313 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2314 ucontrol->value.integer.value[0]);
2315 return 0;
2316}
2317
2318static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2319 struct snd_ctl_elem_value *ucontrol)
2320{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302321 struct snd_soc_dapm_widget *widget =
2322 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302323 struct snd_soc_dapm_update *update = NULL;
2324
2325 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2326 ucontrol->value.integer.value[0]);
2327 if (ucontrol->value.integer.value[0])
2328 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2329 update);
2330 else
2331 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2332 update);
2333 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2334 return 1;
2335}
2336
2337static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2338 struct snd_ctl_elem_value *ucontrol)
2339{
2340 ucontrol->value.integer.value[0] = usb_switch_enable;
2341 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2342 ucontrol->value.integer.value[0]);
2343 return 0;
2344}
2345
2346static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2347 struct snd_ctl_elem_value *ucontrol)
2348{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302349 struct snd_soc_dapm_widget *widget =
2350 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302351 struct snd_soc_dapm_update *update = NULL;
2352
2353 pr_debug("%s: USB Switch enable %ld\n", __func__,
2354 ucontrol->value.integer.value[0]);
2355 if (ucontrol->value.integer.value[0])
2356 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2357 1, update);
2358 else
2359 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2360 0, update);
2361 usb_switch_enable = ucontrol->value.integer.value[0];
2362 return 1;
2363}
2364
2365static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2366 struct snd_ctl_elem_value *ucontrol)
2367{
2368 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2369 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2370 ucontrol->value.integer.value[0]);
2371 return 0;
2372}
2373
2374static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2375 struct snd_ctl_elem_value *ucontrol)
2376{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302377 struct snd_soc_dapm_widget *widget =
2378 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302379 struct snd_soc_dapm_update *update = NULL;
2380
2381 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2382 ucontrol->value.integer.value[0]);
2383 if (ucontrol->value.integer.value[0])
2384 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2385 update);
2386 else
2387 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2388 update);
2389 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2390 return 1;
2391}
2392
2393static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2394 struct snd_ctl_elem_value *ucontrol)
2395{
2396 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2397 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2398 ucontrol->value.integer.value[0]);
2399 return 0;
2400}
2401
2402static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2403 struct snd_ctl_elem_value *ucontrol)
2404{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302405 struct snd_soc_dapm_widget *widget =
2406 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302407 struct snd_soc_dapm_update *update = NULL;
2408
2409 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2410 ucontrol->value.integer.value[0]);
2411 if (ucontrol->value.integer.value[0])
2412 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2413 update);
2414 else
2415 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2416 update);
2417 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2418 return 1;
2419}
2420
2421static int msm_routing_get_tert_mi2s_switch_mixer(
2422 struct snd_kcontrol *kcontrol,
2423 struct snd_ctl_elem_value *ucontrol)
2424{
2425 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2426 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2427 ucontrol->value.integer.value[0]);
2428 return 0;
2429}
2430
2431static int msm_routing_put_tert_mi2s_switch_mixer(
2432 struct snd_kcontrol *kcontrol,
2433 struct snd_ctl_elem_value *ucontrol)
2434{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302435 struct snd_soc_dapm_widget *widget =
2436 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302437 struct snd_soc_dapm_update *update = NULL;
2438
2439 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2440 ucontrol->value.integer.value[0]);
2441 if (ucontrol->value.integer.value[0])
2442 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2443 update);
2444 else
2445 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2446 update);
2447 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2448 return 1;
2449}
2450
2451static int msm_routing_get_quat_mi2s_switch_mixer(
2452 struct snd_kcontrol *kcontrol,
2453 struct snd_ctl_elem_value *ucontrol)
2454{
2455 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2456 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2457 ucontrol->value.integer.value[0]);
2458 return 0;
2459}
2460
2461static int msm_routing_put_quat_mi2s_switch_mixer(
2462 struct snd_kcontrol *kcontrol,
2463 struct snd_ctl_elem_value *ucontrol)
2464{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302465 struct snd_soc_dapm_widget *widget =
2466 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302467 struct snd_soc_dapm_update *update = NULL;
2468
2469 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2470 ucontrol->value.integer.value[0]);
2471 if (ucontrol->value.integer.value[0])
2472 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2473 update);
2474 else
2475 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2476 update);
2477 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2478 return 1;
2479}
2480
Rohit Kumara5077932017-09-10 22:05:05 +05302481static int msm_routing_get_quin_mi2s_switch_mixer(
2482 struct snd_kcontrol *kcontrol,
2483 struct snd_ctl_elem_value *ucontrol)
2484{
2485 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2486 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2487 ucontrol->value.integer.value[0]);
2488 return 0;
2489}
2490
2491static int msm_routing_put_quin_mi2s_switch_mixer(
2492 struct snd_kcontrol *kcontrol,
2493 struct snd_ctl_elem_value *ucontrol)
2494{
2495 struct snd_soc_dapm_widget *widget =
2496 snd_soc_dapm_kcontrol_widget(kcontrol);
2497 struct snd_soc_dapm_update *update = NULL;
2498
2499 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2500 ucontrol->value.integer.value[0]);
2501 if (ucontrol->value.integer.value[0])
2502 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2503 update);
2504 else
2505 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2506 update);
2507 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2508 return 1;
2509}
2510
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302511static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2512 struct snd_ctl_elem_value *ucontrol)
2513{
2514 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2515 pr_debug("%s: FM Switch enable %ld\n", __func__,
2516 ucontrol->value.integer.value[0]);
2517 return 0;
2518}
2519
2520static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2521 struct snd_ctl_elem_value *ucontrol)
2522{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302523 struct snd_soc_dapm_widget *widget =
2524 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302525 struct snd_soc_dapm_update *update = NULL;
2526
2527 pr_debug("%s: FM Switch enable %ld\n", __func__,
2528 ucontrol->value.integer.value[0]);
2529 if (ucontrol->value.integer.value[0])
2530 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2531 update);
2532 else
2533 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2534 update);
2535 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2536 return 1;
2537}
2538
2539static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2540 struct snd_ctl_elem_value *ucontrol)
2541{
2542 ucontrol->value.integer.value[0] = lsm_port_index;
2543 return 0;
2544}
2545
2546static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2547 struct snd_ctl_elem_value *ucontrol)
2548{
2549 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2550 int mux = ucontrol->value.enumerated.item[0];
2551 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2552
2553 if (mux >= e->items) {
2554 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2555 return -EINVAL;
2556 }
2557
2558 pr_debug("%s: LSM enable %ld\n", __func__,
2559 ucontrol->value.integer.value[0]);
2560 switch (ucontrol->value.integer.value[0]) {
2561 case 1:
2562 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2563 break;
2564 case 2:
2565 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2566 break;
2567 case 3:
2568 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2569 break;
2570 case 4:
2571 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2572 break;
2573 case 5:
2574 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2575 break;
2576 case 6:
2577 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2578 break;
2579 case 7:
2580 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2581 break;
2582 case 8:
2583 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2584 break;
2585 case 9:
2586 lsm_port = ADM_LSM_PORT_ID;
2587 break;
2588 case 10:
Revathi Uddarajue990e322018-07-04 15:30:19 +05302589 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
Ashish Jain01b10322018-05-12 15:37:44 +05302590 break;
2591 case 11:
Revathi Uddarajue990e322018-07-04 15:30:19 +05302592 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_2;
Ashish Jain01b10322018-05-12 15:37:44 +05302593 break;
2594 case 12:
Revathi Uddarajue990e322018-07-04 15:30:19 +05302595 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_3;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302596 break;
2597 default:
2598 pr_err("Default lsm port");
2599 break;
2600 }
2601 set_lsm_port(lsm_port);
2602 lsm_port_index = ucontrol->value.integer.value[0];
2603
2604 return 0;
2605}
2606
2607static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2608 struct snd_ctl_elem_value *ucontrol)
2609{
2610 int i;
2611 u16 port_id;
2612 enum afe_mad_type mad_type;
2613
2614 pr_debug("%s: enter\n", __func__);
2615 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2616 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2617 strlen(lsm_port_text[i])))
2618 break;
2619
2620 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2621 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2622 return -EINVAL;
2623 }
2624
2625 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2626
2627 /*Check for Tertiary/Quaternary/INT3 TX port*/
2628 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2629 strlen(lsm_port_text[7])))
2630 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2631
2632 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2633 strlen(lsm_port_text[8])))
2634 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2635
2636 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2637 strlen(lsm_port_text[10])))
2638 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2639
2640 mad_type = afe_port_get_mad_type(port_id);
2641 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2642 mad_type);
2643 switch (mad_type) {
2644 case MAD_HW_NONE:
2645 ucontrol->value.integer.value[0] = MADNONE;
2646 break;
2647 case MAD_HW_AUDIO:
2648 ucontrol->value.integer.value[0] = MADAUDIO;
2649 break;
2650 case MAD_HW_BEACON:
2651 ucontrol->value.integer.value[0] = MADBEACON;
2652 break;
2653 case MAD_HW_ULTRASOUND:
2654 ucontrol->value.integer.value[0] = MADULTRASOUND;
2655 break;
2656 case MAD_SW_AUDIO:
2657 ucontrol->value.integer.value[0] = MADSWAUDIO;
2658 break;
2659 default:
2660 WARN(1, "Unknown\n");
2661 return -EINVAL;
2662 }
2663 return 0;
2664}
2665
2666static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2667 struct snd_ctl_elem_value *ucontrol)
2668{
2669 int i;
2670 u16 port_id;
2671 enum afe_mad_type mad_type;
2672
2673 pr_debug("%s: enter\n", __func__);
2674 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2675 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2676 strlen(lsm_port_text[i])))
2677 break;
2678
2679 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2680 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2681 return -EINVAL;
2682 }
2683
2684 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2685 switch (ucontrol->value.integer.value[0]) {
2686 case MADNONE:
2687 mad_type = MAD_HW_NONE;
2688 break;
2689 case MADAUDIO:
2690 mad_type = MAD_HW_AUDIO;
2691 break;
2692 case MADBEACON:
2693 mad_type = MAD_HW_BEACON;
2694 break;
2695 case MADULTRASOUND:
2696 mad_type = MAD_HW_ULTRASOUND;
2697 break;
2698 case MADSWAUDIO:
2699 mad_type = MAD_SW_AUDIO;
2700 break;
2701 default:
2702 WARN(1, "Unknown\n");
2703 return -EINVAL;
2704 }
2705
2706 /*Check for Tertiary/Quaternary/INT3 TX port*/
2707 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2708 strlen(lsm_port_text[7])))
2709 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2710
2711 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2712 strlen(lsm_port_text[8])))
2713 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2714
2715 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2716 strlen(lsm_port_text[10])))
2717 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2718
2719 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2720 mad_type);
2721 return afe_port_set_mad_type(port_id, mad_type);
2722}
2723
2724static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2725
2726static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2727 adm_override_chs_text);
2728
2729static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2730{
2731 int backend_id;
2732
2733 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2734 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2735 } else {
2736 pr_err("%s: unsupported backend id: %s",
2737 __func__, kcontrol->id.name);
2738 return -EINVAL;
2739 }
2740
2741 return backend_id;
2742}
2743static int msm_routing_adm_channel_config_get(
2744 struct snd_kcontrol *kcontrol,
2745 struct snd_ctl_elem_value *ucontrol)
2746{
2747 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2748
2749 if (backend_id >= 0) {
2750 mutex_lock(&routing_lock);
2751 ucontrol->value.integer.value[0] =
2752 msm_bedais[backend_id].adm_override_ch;
2753 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2754 ucontrol->value.integer.value[0], backend_id);
2755 mutex_unlock(&routing_lock);
2756 }
2757
2758 return 0;
2759}
2760
2761static int msm_routing_adm_channel_config_put(
2762 struct snd_kcontrol *kcontrol,
2763 struct snd_ctl_elem_value *ucontrol)
2764{
2765 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2766
2767 if (backend_id >= 0) {
2768 mutex_lock(&routing_lock);
2769 msm_bedais[backend_id].adm_override_ch =
2770 ucontrol->value.integer.value[0];
2771 pr_debug("%s:updating BE :%d adm channels: %d\n",
2772 __func__, backend_id,
2773 msm_bedais[backend_id].adm_override_ch);
2774 mutex_unlock(&routing_lock);
2775 }
2776
2777 return 0;
2778}
2779
2780static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2781 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2782 msm_routing_adm_channel_config_get,
2783 msm_routing_adm_channel_config_put),
2784};
2785
2786static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2787 struct snd_ctl_elem_value *ucontrol)
2788{
2789
2790 mutex_lock(&routing_lock);
2791 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2792 mutex_unlock(&routing_lock);
2793 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2794 ucontrol->value.integer.value[0]);
2795 return 0;
2796};
2797
2798static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2799 struct snd_ctl_elem_value *ucontrol)
2800{
2801 struct aanc_data aanc_info;
2802
2803 mutex_lock(&routing_lock);
2804 memset(&aanc_info, 0x00, sizeof(aanc_info));
2805 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2806 ucontrol->value.integer.value[0]);
2807 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2808 if (ucontrol->value.integer.value[0] == 0) {
2809 aanc_info.aanc_active = false;
2810 aanc_info.aanc_tx_port = 0;
2811 aanc_info.aanc_rx_port = 0;
2812 } else {
2813 aanc_info.aanc_active = true;
2814 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2815 aanc_info.aanc_tx_port =
2816 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2817 }
2818 afe_set_aanc_info(&aanc_info);
2819 mutex_unlock(&routing_lock);
2820 return 0;
2821};
2822static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2823 struct snd_ctl_elem_value *ucontrol)
2824{
2825 int idx = 0, shift = 0;
2826 struct soc_mixer_control *mc =
2827 (struct soc_mixer_control *)kcontrol->private_value;
2828
2829 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2830 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2831
2832 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2833 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2834 return -EINVAL;
2835 }
2836
2837 if (test_bit(shift,
2838 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2839 ucontrol->value.integer.value[0] = 1;
2840 else
2841 ucontrol->value.integer.value[0] = 0;
2842
2843 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2844 ucontrol->value.integer.value[0]);
2845
2846 return 0;
2847}
2848
2849static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2850 struct snd_ctl_elem_value *ucontrol)
2851{
2852 int idx = 0, shift = 0;
2853 struct soc_mixer_control *mc =
2854 (struct soc_mixer_control *)kcontrol->private_value;
2855
2856 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2857 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2858
2859 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2860 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2861 return -EINVAL;
2862 }
2863
2864 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2865 __func__, mc->reg, mc->shift,
2866 ucontrol->value.integer.value[0], idx, shift);
2867
2868 if (ucontrol->value.integer.value[0]) {
2869 afe_loopback(1, msm_bedais[mc->reg].port_id,
2870 msm_bedais[mc->shift].port_id);
2871 set_bit(shift,
2872 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2873 } else {
2874 afe_loopback(0, msm_bedais[mc->reg].port_id,
2875 msm_bedais[mc->shift].port_id);
2876 clear_bit(shift,
2877 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2878 }
2879
2880 return 1;
2881}
2882
2883static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2884 struct snd_ctl_elem_value *ucontrol)
2885{
2886 u16 fe_id = 0;
2887
2888 fe_id = ((struct soc_mixer_control *)
2889 kcontrol->private_value)->shift;
2890 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2891 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2892 return -EINVAL;
2893 }
2894
2895 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2896
2897 return 0;
2898}
2899
2900static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2901 struct snd_ctl_elem_value *ucontrol)
2902{
2903 u16 fe_id = 0;
2904
2905 fe_id = ((struct soc_mixer_control *)
2906 kcontrol->private_value)->shift;
2907 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2908 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2909 return -EINVAL;
2910 }
2911
2912 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2913
2914 return 1;
2915}
2916
2917static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2918 struct snd_ctl_elem_value *ucontrol)
2919{
2920 u16 fe_id = 0;
2921
2922 fe_id = ((struct soc_multi_mixer_control *)
2923 kcontrol->private_value)->shift;
2924 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2925 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2926 return -EINVAL;
2927 }
2928
2929 ucontrol->value.integer.value[0] =
2930 channel_mixer[fe_id].output_channel;
2931 return 0;
2932}
2933
2934static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2935 struct snd_ctl_elem_value *ucontrol)
2936{
2937 u16 fe_id = 0;
2938
2939 fe_id = ((struct soc_multi_mixer_control *)
2940 kcontrol->private_value)->shift;
2941 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2942 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2943 return -EINVAL;
2944 }
2945
2946 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2947 fe_id,
2948 (unsigned int)(ucontrol->value.integer.value[0]));
2949 channel_mixer[fe_id].output_channel =
2950 (unsigned int)(ucontrol->value.integer.value[0]);
2951
2952 return 1;
2953}
2954
2955static const char *const ch_mixer[] = {"Disable", "Enable"};
2956
2957/* If new backend is added, need update this array */
2958static const char *const be_name[] = {
2959"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2960"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2961"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2962"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2963"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2964"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2965"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2966"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2967"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2968"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2969"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2970"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2971"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2972"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2973"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2974"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2975"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2976"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2977"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2978"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2979"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2980"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2981"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2982"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2983"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2984"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2985"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2986"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2987"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2988"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302989"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2990"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2991"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2992"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302993"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2994"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302995"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302996"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2997"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2998"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2999"INT6_MI2S_RX", "INT6_MI2S_TX"
3000};
3001
3002static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
3003 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
3004static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
3005 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
3006static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
3007 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
3008static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
3009 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
3010
3011static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
3012 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
3013static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
3014 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
3015static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
3016 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
3017static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
3018 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
3019static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
3020 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
3021static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
3022 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
3023static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
3024 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
3025static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
3026 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
3027
3028static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
3029 unsigned int channels,
3030 unsigned int items, const char *const names[])
3031{
3032 if (uinfo->value.enumerated.item >= items)
3033 uinfo->value.enumerated.item = items - 1;
3034
3035 WARN(strlen(names[uinfo->value.enumerated.item]) >=
3036 sizeof(uinfo->value.enumerated.name),
3037 "ALSA: too long item name '%s'\n",
3038 names[uinfo->value.enumerated.item]);
3039 strlcpy(uinfo->value.enumerated.name,
3040 names[uinfo->value.enumerated.item],
3041 sizeof(uinfo->value.enumerated.name));
3042 return 0;
3043}
3044
3045static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
3046 struct snd_ctl_elem_info *uinfo)
3047{
3048 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3049
3050 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
3051 uinfo->count = 1;
3052
3053 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
3054 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
3055
3056 return 0;
3057}
3058static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
3059 struct snd_ctl_elem_value *ucontrol)
3060{
3061 u16 fe_id = 0;
3062
3063 fe_id = ((struct soc_enum *)
3064 kcontrol->private_value)->shift_l;
3065 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3066 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3067 return -EINVAL;
3068 }
3069
3070 pr_debug("%s: FE %d %s\n", __func__,
3071 fe_id,
3072 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
3073 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
3074 return 0;
3075}
3076
3077static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
3078 struct snd_ctl_elem_value *ucontrol)
3079{
3080 u16 fe_id = 0;
3081
3082 fe_id = ((struct soc_enum *)
3083 kcontrol->private_value)->shift_l;
3084 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3085 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3086 return -EINVAL;
3087 }
3088
3089 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
3090 pr_debug("%s: %s FE %d\n", __func__,
3091 channel_mixer[fe_id].enable ? "Enable" : "Disable",
3092 fe_id);
3093 return 0;
3094}
3095
3096static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
3097 struct snd_ctl_elem_info *uinfo)
3098{
3099 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3100
3101 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
3102 uinfo->count = 1;
3103
3104 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
3105 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
3106
3107 return 0;
3108}
3109
3110static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
3111 struct snd_ctl_elem_value *ucontrol)
3112{
3113 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3114 u16 fe_id = 0, in_ch = 0;
3115
3116 fe_id = e->shift_l;
3117 in_ch = e->shift_r;
3118 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3119 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3120 return -EINVAL;
3121 }
3122 if (in_ch >= ADM_MAX_CHANNELS) {
3123 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3124 return -EINVAL;
3125 }
3126
3127 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
3128 return 1;
3129}
3130
3131static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
3132 struct snd_ctl_elem_value *ucontrol)
3133{
3134 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3135 u16 fe_id = 0, in_ch = 0;
3136
3137 fe_id = e->shift_l;
3138 in_ch = e->shift_r;
3139 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3140 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3141 return -EINVAL;
3142 }
3143 if (in_ch >= ADM_MAX_CHANNELS) {
3144 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3145 return -EINVAL;
3146 }
3147
3148 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
3149 return 1;
3150}
3151
3152
3153static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
3154 struct snd_ctl_elem_info *uinfo)
3155{
3156 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3157 uinfo->count = ADM_MAX_CHANNELS;
3158 uinfo->value.integer.min = 0;
3159 uinfo->value.integer.max = WEIGHT_0_DB;
3160
3161 return 0;
3162}
3163
3164static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3165 struct snd_ctl_elem_value *ucontrol)
3166{
3167 u16 fe_id = 0, out_ch = 0;
3168 int i, weight;
3169
3170 fe_id = ((struct soc_multi_mixer_control *)
3171 kcontrol->private_value)->shift;
3172 out_ch = ((struct soc_multi_mixer_control *)
3173 kcontrol->private_value)->rshift;
3174 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3175 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3176 return -EINVAL;
3177 }
3178 if (out_ch >= ADM_MAX_CHANNELS) {
3179 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3180 return -EINVAL;
3181 }
3182
3183 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3184 __func__, fe_id,
3185 ucontrol->value.integer.value[0],
3186 ucontrol->value.integer.value[1],
3187 ucontrol->value.integer.value[2],
3188 ucontrol->value.integer.value[3],
3189 ucontrol->value.integer.value[4],
3190 ucontrol->value.integer.value[5],
3191 ucontrol->value.integer.value[6],
3192 ucontrol->value.integer.value[7]);
3193
3194 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3195 weight = ucontrol->value.integer.value[i];
3196 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3197 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3198 __func__, fe_id, out_ch, i,
3199 channel_mixer[fe_id].channel_weight[out_ch][i]);
3200 }
3201
3202 return 0;
3203}
3204
3205static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3206 struct snd_ctl_elem_value *ucontrol)
3207{
3208 u16 fe_id = 0, out_ch = 0;
3209 int i;
3210
3211 fe_id = ((struct soc_multi_mixer_control *)
3212 kcontrol->private_value)->shift;
3213 out_ch = ((struct soc_multi_mixer_control *)
3214 kcontrol->private_value)->rshift;
3215 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3216 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3217 return -EINVAL;
3218 }
3219 if (out_ch >= ADM_MAX_CHANNELS) {
3220 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3221 return -EINVAL;
3222 }
3223
3224 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3225 ucontrol->value.integer.value[i] =
3226 channel_mixer[fe_id].channel_weight[out_ch][i];
3227
3228 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3229 __func__, fe_id,
3230 ucontrol->value.integer.value[0],
3231 ucontrol->value.integer.value[1],
3232 ucontrol->value.integer.value[2],
3233 ucontrol->value.integer.value[3],
3234 ucontrol->value.integer.value[4],
3235 ucontrol->value.integer.value[5],
3236 ucontrol->value.integer.value[6],
3237 ucontrol->value.integer.value[7]);
3238
3239 return 0;
3240}
3241
3242static const struct snd_kcontrol_new channel_mixer_controls[] = {
3243 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3244 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3245 msm_pcm_get_channel_rule_index,
3246 msm_pcm_put_channel_rule_index),
3247 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3248 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3249 msm_pcm_get_channel_rule_index,
3250 msm_pcm_put_channel_rule_index),
3251 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3252 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3253 msm_pcm_get_channel_rule_index,
3254 msm_pcm_put_channel_rule_index),
3255 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3256 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3257 msm_pcm_get_channel_rule_index,
3258 msm_pcm_put_channel_rule_index),
3259 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3260 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3261 msm_pcm_get_channel_rule_index,
3262 msm_pcm_put_channel_rule_index),
3263 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3264 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3265 msm_pcm_get_channel_rule_index,
3266 msm_pcm_put_channel_rule_index),
3267
3268 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3269 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3270 msm_pcm_get_out_chs,
3271 msm_pcm_put_out_chs),
3272 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3273 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3274 msm_pcm_get_out_chs,
3275 msm_pcm_put_out_chs),
3276 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3277 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3278 msm_pcm_get_out_chs,
3279 msm_pcm_put_out_chs),
3280 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3281 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3282 msm_pcm_get_out_chs,
3283 msm_pcm_put_out_chs),
3284 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3285 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3286 msm_pcm_get_out_chs,
3287 msm_pcm_put_out_chs),
3288 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3289 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3290 msm_pcm_get_out_chs,
3291 msm_pcm_put_out_chs),
3292 {
3293 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3294 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3295 .name = "MultiMedia1 Channel Mixer",
3296 .info = msm_pcm_channel_mixer_info,
3297 .get = msm_pcm_channel_mixer_get,
3298 .put = msm_pcm_channel_mixer_put,
3299 .private_value = (unsigned long)&(mm1_channel_mux)
3300 },
3301 {
3302 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3303 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3304 .name = "MultiMedia2 Channel Mixer",
3305 .info = msm_pcm_channel_mixer_info,
3306 .get = msm_pcm_channel_mixer_get,
3307 .put = msm_pcm_channel_mixer_put,
3308 .private_value = (unsigned long)&(mm2_channel_mux)
3309 },
3310 {
3311 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3312 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3313 .name = "MultiMedia3 Channel Mixer",
3314 .info = msm_pcm_channel_mixer_info,
3315 .get = msm_pcm_channel_mixer_get,
3316 .put = msm_pcm_channel_mixer_put,
3317 .private_value = (unsigned long)&(mm3_channel_mux)
3318 },
3319 {
3320 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3321 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3322 .name = "MultiMedia4 Channel Mixer",
3323 .info = msm_pcm_channel_mixer_info,
3324 .get = msm_pcm_channel_mixer_get,
3325 .put = msm_pcm_channel_mixer_put,
3326 .private_value = (unsigned long)&(mm4_channel_mux)
3327 },
3328 {
3329 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3330 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3331 .name = "MultiMedia1 Output Channel1",
3332 .info = msm_pcm_channel_weight_info,
3333 .get = msm_pcm_channel_weight_get,
3334 .put = msm_pcm_channel_weight_put,
3335 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3336 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 0,}
3337 },
3338 {
3339 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3340 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3341 .name = "MultiMedia1 Output Channel2",
3342 .info = msm_pcm_channel_weight_info,
3343 .get = msm_pcm_channel_weight_get,
3344 .put = msm_pcm_channel_weight_put,
3345 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3346 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3347 },
3348 {
3349 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3350 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3351 .name = "MultiMedia1 Output Channel3",
3352 .info = msm_pcm_channel_weight_info,
3353 .get = msm_pcm_channel_weight_get,
3354 .put = msm_pcm_channel_weight_put,
3355 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3356 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3357 },
3358 {
3359 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3360 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3361 .name = "MultiMedia1 Output Channel4",
3362 .info = msm_pcm_channel_weight_info,
3363 .get = msm_pcm_channel_weight_get,
3364 .put = msm_pcm_channel_weight_put,
3365 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3366 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3367 },
3368 {
3369 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3370 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3371 .name = "MultiMedia1 Output Channel5",
3372 .info = msm_pcm_channel_weight_info,
3373 .get = msm_pcm_channel_weight_get,
3374 .put = msm_pcm_channel_weight_put,
3375 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3376 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3377 },
3378 {
3379 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3380 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3381 .name = "MultiMedia1 Output Channel6",
3382 .info = msm_pcm_channel_weight_info,
3383 .get = msm_pcm_channel_weight_get,
3384 .put = msm_pcm_channel_weight_put,
3385 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3386 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3387 },
3388 {
3389 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3390 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3391 .name = "MultiMedia1 Output Channel7",
3392 .info = msm_pcm_channel_weight_info,
3393 .get = msm_pcm_channel_weight_get,
3394 .put = msm_pcm_channel_weight_put,
3395 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3396 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3397 },
3398 {
3399 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3400 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3401 .name = "MultiMedia1 Output Channel8",
3402 .info = msm_pcm_channel_weight_info,
3403 .get = msm_pcm_channel_weight_get,
3404 .put = msm_pcm_channel_weight_put,
3405 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3406 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3407 },
3408 {
3409 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3410 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3411 .name = "MultiMedia2 Output Channel1",
3412 .info = msm_pcm_channel_weight_info,
3413 .get = msm_pcm_channel_weight_get,
3414 .put = msm_pcm_channel_weight_put,
3415 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3416 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3417 },
3418 {
3419 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3420 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3421 .name = "MultiMedia2 Output Channel2",
3422 .info = msm_pcm_channel_weight_info,
3423 .get = msm_pcm_channel_weight_get,
3424 .put = msm_pcm_channel_weight_put,
3425 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3426 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3427 },
3428 {
3429 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3430 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3431 .name = "MultiMedia2 Output Channel3",
3432 .info = msm_pcm_channel_weight_info,
3433 .get = msm_pcm_channel_weight_get,
3434 .put = msm_pcm_channel_weight_put,
3435 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3436 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3437 },
3438 {
3439 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3440 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3441 .name = "MultiMedia3 Output Channel1",
3442 .info = msm_pcm_channel_weight_info,
3443 .get = msm_pcm_channel_weight_get,
3444 .put = msm_pcm_channel_weight_put,
3445 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3446 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3447 },
3448 {
3449 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3450 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3451 .name = "MultiMedia3 Output Channel2",
3452 .info = msm_pcm_channel_weight_info,
3453 .get = msm_pcm_channel_weight_get,
3454 .put = msm_pcm_channel_weight_put,
3455 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3456 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3457 },
3458 {
3459 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3460 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3461 .name = "MultiMedia1 Channel1",
3462 .info = msm_pcm_channel_input_be_info,
3463 .get = msm_pcm_channel_input_be_get,
3464 .put = msm_pcm_channel_input_be_put,
3465 .private_value = (unsigned long)&(mm1_ch1_enum)
3466 },
3467 {
3468 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3469 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3470 .name = "MultiMedia1 Channel2",
3471 .info = msm_pcm_channel_input_be_info,
3472 .get = msm_pcm_channel_input_be_get,
3473 .put = msm_pcm_channel_input_be_put,
3474 .private_value = (unsigned long)&(mm1_ch2_enum)
3475 },
3476 {
3477 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3478 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3479 .name = "MultiMedia1 Channel3",
3480 .info = msm_pcm_channel_input_be_info,
3481 .get = msm_pcm_channel_input_be_get,
3482 .put = msm_pcm_channel_input_be_put,
3483 .private_value = (unsigned long)&(mm1_ch3_enum)
3484 },
3485 {
3486 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3487 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3488 .name = "MultiMedia1 Channel4",
3489 .info = msm_pcm_channel_input_be_info,
3490 .get = msm_pcm_channel_input_be_get,
3491 .put = msm_pcm_channel_input_be_put,
3492 .private_value = (unsigned long)&(mm1_ch4_enum)
3493 },
3494 {
3495 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3496 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3497 .name = "MultiMedia1 Channel5",
3498 .info = msm_pcm_channel_input_be_info,
3499 .get = msm_pcm_channel_input_be_get,
3500 .put = msm_pcm_channel_input_be_put,
3501 .private_value = (unsigned long)&(mm1_ch5_enum)
3502 },
3503 {
3504 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3505 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3506 .name = "MultiMedia1 Channel6",
3507 .info = msm_pcm_channel_input_be_info,
3508 .get = msm_pcm_channel_input_be_get,
3509 .put = msm_pcm_channel_input_be_put,
3510 .private_value = (unsigned long)&(mm1_ch6_enum)
3511 },
3512 {
3513 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3514 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3515 .name = "MultiMedia1 Channel7",
3516 .info = msm_pcm_channel_input_be_info,
3517 .get = msm_pcm_channel_input_be_get,
3518 .put = msm_pcm_channel_input_be_put,
3519 .private_value = (unsigned long)&(mm1_ch7_enum)
3520 },
3521 {
3522 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3523 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3524 .name = "MultiMedia1 Channel8",
3525 .info = msm_pcm_channel_input_be_info,
3526 .get = msm_pcm_channel_input_be_get,
3527 .put = msm_pcm_channel_input_be_put,
3528 .private_value = (unsigned long)&(mm1_ch8_enum)
3529 },
3530};
3531static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3532 struct snd_ctl_elem_value *ucontrol)
3533{
3534 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3535 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3536 ucontrol->value.integer.value[0]);
3537 return 0;
3538}
3539
3540static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3541 struct snd_ctl_elem_value *ucontrol)
3542{
3543 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3544 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3545 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3546 return 0;
3547}
3548
3549static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3550 "Four", "Five", "Six", "Seven", "Eight"};
3551
3552static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3553 struct snd_ctl_elem_value *ucontrol)
3554{
3555 switch (msm_ec_ref_bit_format) {
3556 case SNDRV_PCM_FORMAT_S24_LE:
3557 ucontrol->value.integer.value[0] = 2;
3558 break;
3559 case SNDRV_PCM_FORMAT_S16_LE:
3560 ucontrol->value.integer.value[0] = 1;
3561 break;
3562 default:
3563 ucontrol->value.integer.value[0] = 0;
3564 break;
3565 }
3566 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3567 __func__, ucontrol->value.integer.value[0]);
3568 return 0;
3569}
3570
3571static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3572 struct snd_ctl_elem_value *ucontrol)
3573{
3574 u16 bit_width = 0;
3575
3576 switch (ucontrol->value.integer.value[0]) {
3577 case 2:
3578 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3579 break;
3580 case 1:
3581 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3582 break;
3583 default:
3584 msm_ec_ref_bit_format = 0;
3585 break;
3586 }
3587
3588 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3589 bit_width = 16;
3590 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3591 bit_width = 24;
3592
3593 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3594 __func__, msm_ec_ref_bit_format);
3595 adm_ec_ref_rx_bit_width(bit_width);
3596 return 0;
3597}
3598
3599static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3600
3601static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3602 struct snd_ctl_elem_value *ucontrol)
3603{
3604 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3605 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3606 __func__, ucontrol->value.integer.value[0]);
3607 return 0;
3608}
3609
3610static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3611 struct snd_ctl_elem_value *ucontrol)
3612{
3613 switch (ucontrol->value.integer.value[0]) {
3614 case 0:
3615 msm_ec_ref_sampling_rate = 0;
3616 break;
3617 case 1:
3618 msm_ec_ref_sampling_rate = 8000;
3619 break;
3620 case 2:
3621 msm_ec_ref_sampling_rate = 16000;
3622 break;
3623 case 3:
3624 msm_ec_ref_sampling_rate = 32000;
3625 break;
3626 case 4:
3627 msm_ec_ref_sampling_rate = 44100;
3628 break;
3629 case 5:
3630 msm_ec_ref_sampling_rate = 48000;
3631 break;
3632 case 6:
3633 msm_ec_ref_sampling_rate = 96000;
3634 break;
3635 case 7:
3636 msm_ec_ref_sampling_rate = 192000;
3637 break;
3638 case 8:
3639 msm_ec_ref_sampling_rate = 384000;
3640 break;
3641 default:
3642 msm_ec_ref_sampling_rate = 48000;
3643 break;
3644 }
3645 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3646 __func__, msm_ec_ref_sampling_rate);
3647 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3648 return 0;
3649}
3650
3651static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3652 "32000", "44100", "48000", "96000", "192000", "384000"};
3653
3654static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3655 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3656 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3657 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3658};
3659
3660static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3661 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3662 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3663 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3664 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3665 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3666 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3667};
3668
3669static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3670 struct snd_ctl_elem_value *ucontrol)
3671{
3672 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3673 mutex_lock(&routing_lock);
3674 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3675 mutex_unlock(&routing_lock);
3676 return 0;
3677}
3678
3679static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3680 struct snd_ctl_elem_value *ucontrol)
3681{
3682 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303683 struct snd_soc_dapm_widget *widget =
3684 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303685 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3686 struct snd_soc_dapm_update *update = NULL;
3687
3688
3689 mutex_lock(&routing_lock);
3690 switch (ucontrol->value.integer.value[0]) {
3691 case 0:
3692 msm_route_ec_ref_rx = 0;
3693 ec_ref_port_id = AFE_PORT_INVALID;
3694 break;
3695 case 1:
3696 msm_route_ec_ref_rx = 1;
3697 ec_ref_port_id = SLIMBUS_0_RX;
3698 break;
3699 case 2:
3700 msm_route_ec_ref_rx = 2;
3701 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3702 break;
3703 case 3:
3704 msm_route_ec_ref_rx = 3;
3705 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3706 break;
3707 case 4:
3708 msm_route_ec_ref_rx = 4;
3709 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3710 break;
3711 case 5:
3712 msm_route_ec_ref_rx = 5;
3713 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3714 break;
3715 case 6:
3716 msm_route_ec_ref_rx = 6;
3717 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3718 break;
3719 case 7:
3720 msm_route_ec_ref_rx = 7;
3721 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3722 break;
3723 case 9:
3724 msm_route_ec_ref_rx = 9;
3725 ec_ref_port_id = SLIMBUS_5_RX;
3726 break;
3727 case 10:
3728 msm_route_ec_ref_rx = 10;
3729 ec_ref_port_id = SLIMBUS_1_TX;
3730 break;
3731 case 11:
3732 msm_route_ec_ref_rx = 11;
3733 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3734 break;
3735 case 12:
3736 msm_route_ec_ref_rx = 12;
3737 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3738 break;
3739 case 13:
3740 msm_route_ec_ref_rx = 13;
3741 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3742 break;
3743 case 14:
3744 msm_route_ec_ref_rx = 14;
3745 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3746 break;
3747 case 15:
3748 msm_route_ec_ref_rx = 15;
3749 ec_ref_port_id = SLIMBUS_6_RX;
3750 break;
3751 case 16:
3752 msm_route_ec_ref_rx = 16;
3753 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3754 break;
3755 case 17:
3756 msm_route_ec_ref_rx = 17;
3757 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3758 break;
3759 case 18:
3760 msm_route_ec_ref_rx = 18;
3761 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3762 break;
3763 case 19:
3764 msm_route_ec_ref_rx = 19;
3765 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3766 break;
3767 case 20:
3768 msm_route_ec_ref_rx = 20;
3769 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3770 break;
3771 case 21:
3772 msm_route_ec_ref_rx = 21;
3773 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3774 break;
3775 case 22:
3776 msm_route_ec_ref_rx = 22;
3777 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3778 break;
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003779 case 23:
3780 msm_route_ec_ref_rx = 23;
3781 ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
3782 break;
Bala Kishore Pati1a044712018-10-03 12:12:36 +05303783 case 24:
3784 msm_route_ec_ref_rx = 24;
3785 ec_ref_port_id = AFE_PORT_ID_PRIMARY_TDM_RX_1;
3786 break;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303787 default:
3788 msm_route_ec_ref_rx = 0; /* NONE */
3789 pr_err("%s EC ref rx %ld not valid\n",
3790 __func__, ucontrol->value.integer.value[0]);
3791 ec_ref_port_id = AFE_PORT_INVALID;
3792 break;
3793 }
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05303794 msm_ec_ref_port_id = ec_ref_port_id;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303795 adm_ec_ref_rx_id(ec_ref_port_id);
3796 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3797 __func__, msm_route_ec_ref_rx);
3798 mutex_unlock(&routing_lock);
3799 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3800 msm_route_ec_ref_rx, e, update);
3801 return 0;
3802}
3803
3804static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3805 "PRI_MI2S_TX", "SEC_MI2S_TX",
3806 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3807 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3808 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3809 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
Bala Kishore Pati1a044712018-10-03 12:12:36 +05303810 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT",
3811 "PRI_TDM_RX_1"};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303812
3813static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3814 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3815};
3816
3817static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3818 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3819 msm_route_ec_ref_rx_enum[0],
3820 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3821
3822static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3823 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3824 msm_route_ec_ref_rx_enum[0],
3825 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3826
3827static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3828 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3829 msm_route_ec_ref_rx_enum[0],
3830 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3831
3832static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3833 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3834 msm_route_ec_ref_rx_enum[0],
3835 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3836
3837static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3838 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3839 msm_route_ec_ref_rx_enum[0],
3840 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3841
3842static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3843 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3844 msm_route_ec_ref_rx_enum[0],
3845 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3846
3847static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3848 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3849 msm_route_ec_ref_rx_enum[0],
3850 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3851
3852static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3853 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3854 msm_route_ec_ref_rx_enum[0],
3855 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3856
Asish Bhattacharya34504582017-08-08 12:55:01 +05303857static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3858 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3859 msm_route_ec_ref_rx_enum[0],
3860 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3861
Laxminath Kasam38070be2017-08-17 18:21:59 +05303862static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3863 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3864 msm_route_ec_ref_rx_enum[0],
3865 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3866
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303867static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3868 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3869 msm_route_ec_ref_rx_enum[0],
3870 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3871
3872static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3873 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3874 msm_route_ec_ref_rx_enum[0],
3875 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3876
3877static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3878 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3879 msm_route_ec_ref_rx_enum[0],
3880 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3881
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303882static const struct snd_kcontrol_new ext_ec_ref_mux_ul28 =
3883 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL28 MUX Mux",
3884 msm_route_ec_ref_rx_enum[0],
3885 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3886
3887static const struct snd_kcontrol_new ext_ec_ref_mux_ul29 =
3888 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL29 MUX Mux",
3889 msm_route_ec_ref_rx_enum[0],
3890 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3891
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303892static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3893 struct snd_ctl_elem_value *ucontrol)
3894{
3895 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3896
3897 mutex_lock(&routing_lock);
3898 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3899 mutex_unlock(&routing_lock);
3900 return 0;
3901}
3902
3903static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3904 struct snd_ctl_elem_value *ucontrol)
3905{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303906 struct snd_soc_dapm_widget *widget =
3907 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303908 int mux = ucontrol->value.enumerated.item[0];
3909 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3910 int ret = 1;
3911 bool state = true;
3912 uint16_t ext_ec_ref_port_id;
3913 struct snd_soc_dapm_update *update = NULL;
3914
3915 if (mux >= e->items) {
3916 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3917 return -EINVAL;
3918 }
3919
3920 mutex_lock(&routing_lock);
3921 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3922
3923 switch (msm_route_ext_ec_ref) {
3924 case EXT_EC_REF_PRI_MI2S_TX:
3925 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3926 break;
3927 case EXT_EC_REF_SEC_MI2S_TX:
3928 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3929 break;
3930 case EXT_EC_REF_TERT_MI2S_TX:
3931 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3932 break;
3933 case EXT_EC_REF_QUAT_MI2S_TX:
3934 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3935 break;
3936 case EXT_EC_REF_QUIN_MI2S_TX:
3937 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3938 break;
3939 case EXT_EC_REF_SLIM_1_TX:
3940 ext_ec_ref_port_id = SLIMBUS_1_TX;
3941 break;
3942 case EXT_EC_REF_NONE:
3943 default:
3944 ext_ec_ref_port_id = AFE_PORT_INVALID;
3945 state = false;
3946 break;
3947 }
3948
3949 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3950 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3951
3952 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3953 mutex_unlock(&routing_lock);
3954 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3955 update);
3956 } else {
3957 ret = -EINVAL;
3958 mutex_unlock(&routing_lock);
3959 }
3960 return ret;
3961}
3962
3963static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3964 "SEC_MI2S_TX", "TERT_MI2S_TX",
3965 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3966 "SLIM_1_TX"};
3967
3968static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3969 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3970};
3971
3972static const struct snd_kcontrol_new voc_ext_ec_mux =
3973 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3974 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3975
3976
3977static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3978 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3979 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3980 msm_routing_put_audio_mixer),
3981 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3982 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3983 msm_routing_put_audio_mixer),
3984 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3985 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3986 msm_routing_put_audio_mixer),
3987 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3988 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3989 msm_routing_put_audio_mixer),
3990 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3991 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3992 msm_routing_put_audio_mixer),
3993 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3994 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3995 msm_routing_put_audio_mixer),
3996 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3997 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3998 msm_routing_put_audio_mixer),
3999 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
4000 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4001 msm_routing_put_audio_mixer),
4002 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
4003 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4004 msm_routing_put_audio_mixer),
4005 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
4006 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4007 msm_routing_put_audio_mixer),
4008 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
4009 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4010 msm_routing_put_audio_mixer),
4011 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
4012 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4013 msm_routing_put_audio_mixer),
4014 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
4015 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4016 msm_routing_put_audio_mixer),
4017 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
4018 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4019 msm_routing_put_audio_mixer),
4020 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
4021 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4022 msm_routing_put_audio_mixer),
4023 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
4024 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4025 msm_routing_put_audio_mixer),
4026 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
4027 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4028 msm_routing_put_audio_mixer),
4029 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
4030 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4031 msm_routing_put_audio_mixer),
4032 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
4033 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4034 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304035 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_I2S_RX,
4036 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4037 msm_routing_put_audio_mixer),
4038 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_I2S_RX,
4039 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4040 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304041};
4042
4043static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
4044 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
4045 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4046 msm_routing_put_audio_mixer),
4047 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
4048 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4049 msm_routing_put_audio_mixer),
4050 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
4051 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4052 msm_routing_put_audio_mixer),
4053 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
4054 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4055 msm_routing_put_audio_mixer),
4056 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
4057 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4058 msm_routing_put_audio_mixer),
4059 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
4060 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4061 msm_routing_put_audio_mixer),
4062 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
4063 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4064 msm_routing_put_audio_mixer),
4065 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
4066 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4067 msm_routing_put_audio_mixer),
4068 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
4069 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4070 msm_routing_put_audio_mixer),
4071 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
4072 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4073 msm_routing_put_audio_mixer),
4074 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
4075 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4076 msm_routing_put_audio_mixer),
4077 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
4078 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4079 msm_routing_put_audio_mixer),
4080 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
4081 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4082 msm_routing_put_audio_mixer),
4083 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
4084 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4085 msm_routing_put_audio_mixer),
4086 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
4087 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4088 msm_routing_put_audio_mixer),
4089 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
4090 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4091 msm_routing_put_audio_mixer),
4092 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
4093 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4094 msm_routing_put_audio_mixer),
4095 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
4096 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4097 msm_routing_put_audio_mixer),
4098 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
4099 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4100 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304101 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_I2S_RX,
4102 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4103 msm_routing_put_audio_mixer),
4104 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_I2S_RX,
4105 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4106 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304107};
4108
4109static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
4110 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
4111 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4112 msm_routing_put_audio_mixer),
4113 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
4114 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4115 msm_routing_put_audio_mixer),
4116 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
4117 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4118 msm_routing_put_audio_mixer),
4119 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
4120 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4121 msm_routing_put_audio_mixer),
4122 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
4123 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4124 msm_routing_put_audio_mixer),
4125 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
4126 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4127 msm_routing_put_audio_mixer),
4128 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
4129 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4130 msm_routing_put_audio_mixer),
4131 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
4132 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4133 msm_routing_put_audio_mixer),
4134 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
4135 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4136 msm_routing_put_audio_mixer),
4137 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
4138 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4139 msm_routing_put_audio_mixer),
4140 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
4141 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4142 msm_routing_put_audio_mixer),
4143 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
4144 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4145 msm_routing_put_audio_mixer),
4146 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
4147 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4148 msm_routing_put_audio_mixer),
4149 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
4150 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4151 msm_routing_put_audio_mixer),
4152 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
4153 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4154 msm_routing_put_audio_mixer),
4155 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
4156 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4157 msm_routing_put_audio_mixer),
4158 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
4159 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4160 msm_routing_put_audio_mixer),
4161 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
4162 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4163 msm_routing_put_audio_mixer),
4164 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
4165 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4166 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304167 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SPDIF_RX,
4168 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4169 msm_routing_put_audio_mixer),
4170 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SPDIF_RX,
4171 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4172 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304173};
4174
4175static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
4176 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4177 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4178 msm_routing_put_audio_mixer),
4179 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4180 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4181 msm_routing_put_audio_mixer),
4182 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4183 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4184 msm_routing_put_audio_mixer),
4185 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4186 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4187 msm_routing_put_audio_mixer),
4188 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4189 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4190 msm_routing_put_audio_mixer),
4191 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4192 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4193 msm_routing_put_audio_mixer),
4194 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4195 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4196 msm_routing_put_audio_mixer),
4197 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4198 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4199 msm_routing_put_audio_mixer),
4200 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4201 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4202 msm_routing_put_audio_mixer),
4203 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4204 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4205 msm_routing_put_audio_mixer),
4206 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4207 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4208 msm_routing_put_audio_mixer),
4209 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4210 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4211 msm_routing_put_audio_mixer),
4212 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4213 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4214 msm_routing_put_audio_mixer),
4215 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4216 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4217 msm_routing_put_audio_mixer),
4218 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4219 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4220 msm_routing_put_audio_mixer),
4221 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4222 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4223 msm_routing_put_audio_mixer),
4224};
4225
4226static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4227 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4228 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4229 msm_routing_put_audio_mixer),
4230 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4231 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4232 msm_routing_put_audio_mixer),
4233 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4234 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4235 msm_routing_put_audio_mixer),
4236 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4237 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4238 msm_routing_put_audio_mixer),
4239 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4240 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4241 msm_routing_put_audio_mixer),
4242 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4243 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4244 msm_routing_put_audio_mixer),
4245 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4246 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4247 msm_routing_put_audio_mixer),
4248 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4249 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4250 msm_routing_put_audio_mixer),
4251 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4252 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4253 msm_routing_put_audio_mixer),
4254 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4255 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4256 msm_routing_put_audio_mixer),
4257 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4258 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4259 msm_routing_put_audio_mixer),
4260 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4261 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4262 msm_routing_put_audio_mixer),
4263 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4264 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4265 msm_routing_put_audio_mixer),
4266 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4267 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4268 msm_routing_put_audio_mixer),
4269 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4270 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4271 msm_routing_put_audio_mixer),
4272 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4273 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4274 msm_routing_put_audio_mixer),
4275 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4276 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4277 msm_routing_put_audio_mixer),
4278 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4279 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4280 msm_routing_put_audio_mixer),
4281 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4282 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4283 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304284 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4285 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4286 msm_routing_put_audio_mixer),
4287 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4288 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4289 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304290};
4291
4292static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4293 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4294 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4295 msm_routing_put_audio_mixer),
4296 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4297 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4298 msm_routing_put_audio_mixer),
4299 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4300 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4301 msm_routing_put_audio_mixer),
4302 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4303 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4304 msm_routing_put_audio_mixer),
4305 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4306 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4307 msm_routing_put_audio_mixer),
4308 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4309 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4310 msm_routing_put_audio_mixer),
4311 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4312 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4313 msm_routing_put_audio_mixer),
4314 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4315 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4316 msm_routing_put_audio_mixer),
4317 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4318 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4319 msm_routing_put_audio_mixer),
4320 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4321 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4322 msm_routing_put_audio_mixer),
4323 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4324 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4325 msm_routing_put_audio_mixer),
4326 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4327 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4328 msm_routing_put_audio_mixer),
4329 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4330 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4331 msm_routing_put_audio_mixer),
4332 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4333 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4334 msm_routing_put_audio_mixer),
4335 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4336 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4337 msm_routing_put_audio_mixer),
4338 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4339 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4340 msm_routing_put_audio_mixer),
4341 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4342 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4343 msm_routing_put_audio_mixer),
4344 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4345 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4346 msm_routing_put_audio_mixer),
4347 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4348 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4349 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304350 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4351 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4352 msm_routing_put_audio_mixer),
4353 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4354 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4355 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304356};
4357
4358static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4359 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4360 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4361 msm_routing_put_audio_mixer),
4362 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4363 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4364 msm_routing_put_audio_mixer),
4365 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4366 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4367 msm_routing_put_audio_mixer),
4368 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4369 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4370 msm_routing_put_audio_mixer),
4371 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4372 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4373 msm_routing_put_audio_mixer),
4374 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4375 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4376 msm_routing_put_audio_mixer),
4377 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4378 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4379 msm_routing_put_audio_mixer),
4380 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4381 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4382 msm_routing_put_audio_mixer),
4383 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4384 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4385 msm_routing_put_audio_mixer),
4386 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4387 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4388 msm_routing_put_audio_mixer),
4389 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4390 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4391 msm_routing_put_audio_mixer),
4392 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4393 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4394 msm_routing_put_audio_mixer),
4395 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4396 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4397 msm_routing_put_audio_mixer),
4398 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4399 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4400 msm_routing_put_audio_mixer),
4401 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4402 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4403 msm_routing_put_audio_mixer),
4404 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4405 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4406 msm_routing_put_audio_mixer),
4407 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4408 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4409 msm_routing_put_audio_mixer),
4410 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4411 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4412 msm_routing_put_audio_mixer),
4413 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4414 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4415 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304416 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_MI2S_RX,
4417 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4418 msm_routing_put_audio_mixer),
4419 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_MI2S_RX,
4420 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4421 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304422};
4423
4424static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4425 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4426 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4427 msm_routing_put_audio_mixer),
4428 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4429 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4430 msm_routing_put_audio_mixer),
4431 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4432 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4433 msm_routing_put_audio_mixer),
4434 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4435 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4436 msm_routing_put_audio_mixer),
4437 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4438 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4439 msm_routing_put_audio_mixer),
4440 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4441 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4442 msm_routing_put_audio_mixer),
4443 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4444 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4445 msm_routing_put_audio_mixer),
4446 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4447 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4448 msm_routing_put_audio_mixer),
4449 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4450 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4451 msm_routing_put_audio_mixer),
4452 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4453 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4454 msm_routing_put_audio_mixer),
4455 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4456 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4457 msm_routing_put_audio_mixer),
4458 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4459 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4460 msm_routing_put_audio_mixer),
4461 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4462 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4463 msm_routing_put_audio_mixer),
4464 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4465 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4466 msm_routing_put_audio_mixer),
4467 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4468 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4469 msm_routing_put_audio_mixer),
4470 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4471 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4472 msm_routing_put_audio_mixer),
4473 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4474 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4475 msm_routing_put_audio_mixer),
4476 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4477 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4478 msm_routing_put_audio_mixer),
4479 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4480 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4481 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304482 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4483 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4484 msm_routing_put_audio_mixer),
4485 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4486 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4487 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304488};
4489
4490static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4491 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4492 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4493 msm_routing_put_audio_mixer),
4494 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4495 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4496 msm_routing_put_audio_mixer),
4497 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4498 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4499 msm_routing_put_audio_mixer),
4500 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4501 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4502 msm_routing_put_audio_mixer),
4503 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4504 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4505 msm_routing_put_audio_mixer),
4506 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4507 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4508 msm_routing_put_audio_mixer),
4509 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4510 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4511 msm_routing_put_audio_mixer),
4512 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4513 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4514 msm_routing_put_audio_mixer),
4515 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4516 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4517 msm_routing_put_audio_mixer),
4518 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4519 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4520 msm_routing_put_audio_mixer),
4521 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4522 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4523 msm_routing_put_audio_mixer),
4524 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4525 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4526 msm_routing_put_audio_mixer),
4527 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4528 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4529 msm_routing_put_audio_mixer),
4530 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4531 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4532 msm_routing_put_audio_mixer),
4533 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4534 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4535 msm_routing_put_audio_mixer),
4536 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4537 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4538 msm_routing_put_audio_mixer),
4539 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4540 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4541 msm_routing_put_audio_mixer),
4542 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4543 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4544 msm_routing_put_audio_mixer),
4545 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4546 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4547 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304548 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4549 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4550 msm_routing_put_audio_mixer),
4551 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4552 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4553 msm_routing_put_audio_mixer),
4554
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304555};
4556
4557static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4558 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4559 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4560 msm_routing_put_audio_mixer),
4561 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4562 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4563 msm_routing_put_audio_mixer),
4564 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4565 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4566 msm_routing_put_audio_mixer),
4567 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4568 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4569 msm_routing_put_audio_mixer),
4570 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4571 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4572 msm_routing_put_audio_mixer),
4573 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4574 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4575 msm_routing_put_audio_mixer),
4576 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4577 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4578 msm_routing_put_audio_mixer),
4579 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4580 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4581 msm_routing_put_audio_mixer),
4582 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4583 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4584 msm_routing_put_audio_mixer),
4585 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4586 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4587 msm_routing_put_audio_mixer),
4588 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4589 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4590 msm_routing_put_audio_mixer),
4591 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4592 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4593 msm_routing_put_audio_mixer),
4594 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4595 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4596 msm_routing_put_audio_mixer),
4597 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4598 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4599 msm_routing_put_audio_mixer),
4600 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4601 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4602 msm_routing_put_audio_mixer),
4603 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4604 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4605 msm_routing_put_audio_mixer),
4606 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4607 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4608 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304609 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4610 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4611 msm_routing_put_audio_mixer),
4612 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4613 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4614 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304615};
4616
4617static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4618 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4619 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4620 msm_routing_put_audio_mixer),
4621};
4622
4623static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4624 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4625 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4626 msm_routing_put_audio_mixer),
4627 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4628 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4629 msm_routing_put_audio_mixer),
4630 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4631 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4632 msm_routing_put_audio_mixer),
4633 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4634 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4635 msm_routing_put_audio_mixer),
4636 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4637 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4638 msm_routing_put_audio_mixer),
4639 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4640 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4641 msm_routing_put_audio_mixer),
4642 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4643 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4644 msm_routing_put_audio_mixer),
4645 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4646 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4647 msm_routing_put_audio_mixer),
4648 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4649 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4650 msm_routing_put_audio_mixer),
4651 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4652 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4653 msm_routing_put_audio_mixer),
4654 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4655 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4656 msm_routing_put_audio_mixer),
4657 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4658 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4659 msm_routing_put_audio_mixer),
4660 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4661 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4662 msm_routing_put_audio_mixer),
4663 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4664 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4665 msm_routing_put_audio_mixer),
4666 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4667 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4668 msm_routing_put_audio_mixer),
4669 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4670 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4671 msm_routing_put_audio_mixer),
4672 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4673 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4674 msm_routing_put_audio_mixer),
4675 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4676 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4677 msm_routing_put_audio_mixer),
4678 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4679 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4680 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304681 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4682 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4683 msm_routing_put_audio_mixer),
4684 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4685 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4686 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304687};
4688
4689static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4690 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4691 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4692 msm_routing_put_audio_mixer),
4693 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4694 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4695 msm_routing_put_audio_mixer),
4696 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4697 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4698 msm_routing_put_audio_mixer),
4699 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4700 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4701 msm_routing_put_audio_mixer),
4702 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4703 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4704 msm_routing_put_audio_mixer),
4705 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4706 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4707 msm_routing_put_audio_mixer),
4708 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4709 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4710 msm_routing_put_audio_mixer),
4711 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4712 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4713 msm_routing_put_audio_mixer),
4714 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4715 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4716 msm_routing_put_audio_mixer),
4717 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4718 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4719 msm_routing_put_audio_mixer),
4720 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4721 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4722 msm_routing_put_audio_mixer),
4723 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4724 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4725 msm_routing_put_audio_mixer),
4726 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4727 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4728 msm_routing_put_audio_mixer),
4729 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4730 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4731 msm_routing_put_audio_mixer),
4732 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4733 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4734 msm_routing_put_audio_mixer),
4735 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4736 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4737 msm_routing_put_audio_mixer),
4738 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4739 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4740 msm_routing_put_audio_mixer),
4741 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4742 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4743 msm_routing_put_audio_mixer),
4744 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4745 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4746 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304747 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_MI2S_RX,
4748 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4749 msm_routing_put_audio_mixer),
4750 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_MI2S_RX,
4751 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4752 msm_routing_put_audio_mixer),
4753
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304754};
4755
4756static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4757 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4758 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4759 msm_routing_put_audio_mixer),
4760 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4761 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4762 msm_routing_put_audio_mixer),
4763 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4764 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4765 msm_routing_put_audio_mixer),
4766 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4767 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4768 msm_routing_put_audio_mixer),
4769 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4770 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4771 msm_routing_put_audio_mixer),
4772 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4773 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4774 msm_routing_put_audio_mixer),
4775 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4776 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4777 msm_routing_put_audio_mixer),
4778 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4779 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4780 msm_routing_put_audio_mixer),
4781 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4782 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4783 msm_routing_put_audio_mixer),
4784 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4785 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4786 msm_routing_put_audio_mixer),
4787 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4788 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4789 msm_routing_put_audio_mixer),
4790 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4791 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4792 msm_routing_put_audio_mixer),
4793 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4794 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4795 msm_routing_put_audio_mixer),
4796 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4797 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4798 msm_routing_put_audio_mixer),
4799 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4800 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4801 msm_routing_put_audio_mixer),
4802 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4803 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4804 msm_routing_put_audio_mixer),
4805};
4806
4807static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4808 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4809 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4810 msm_routing_put_audio_mixer),
4811 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4812 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4813 msm_routing_put_audio_mixer),
4814 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4815 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4816 msm_routing_put_audio_mixer),
4817 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4818 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4819 msm_routing_put_audio_mixer),
4820 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4821 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4822 msm_routing_put_audio_mixer),
4823 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4824 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4825 msm_routing_put_audio_mixer),
4826 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4827 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4828 msm_routing_put_audio_mixer),
4829 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4830 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4831 msm_routing_put_audio_mixer),
4832 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4833 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4834 msm_routing_put_audio_mixer),
4835 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4836 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4837 msm_routing_put_audio_mixer),
4838 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4839 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4840 msm_routing_put_audio_mixer),
4841 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4842 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4843 msm_routing_put_audio_mixer),
4844 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4845 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4846 msm_routing_put_audio_mixer),
4847 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4848 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4849 msm_routing_put_audio_mixer),
4850 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4851 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4852 msm_routing_put_audio_mixer),
4853 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4854 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4855 msm_routing_put_audio_mixer),
4856};
4857
4858static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4859 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4860 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4861 msm_routing_put_audio_mixer),
4862 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4863 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4864 msm_routing_put_audio_mixer),
4865 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4866 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4867 msm_routing_put_audio_mixer),
4868 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4869 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4870 msm_routing_put_audio_mixer),
4871 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4872 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4873 msm_routing_put_audio_mixer),
4874 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4875 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4876 msm_routing_put_audio_mixer),
4877 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4878 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4879 msm_routing_put_audio_mixer),
4880 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4881 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4882 msm_routing_put_audio_mixer),
4883 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4884 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4885 msm_routing_put_audio_mixer),
4886 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4887 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4888 msm_routing_put_audio_mixer),
4889 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4890 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4891 msm_routing_put_audio_mixer),
4892 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4893 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4894 msm_routing_put_audio_mixer),
4895 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4896 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4897 msm_routing_put_audio_mixer),
4898 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4899 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4900 msm_routing_put_audio_mixer),
4901 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4902 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4903 msm_routing_put_audio_mixer),
4904 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4905 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4906 msm_routing_put_audio_mixer),
4907 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4908 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4909 msm_routing_put_audio_mixer),
4910 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4911 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4912 msm_routing_put_audio_mixer),
4913 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4914 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4915 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304916 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_HDMI_RX,
4917 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4918 msm_routing_put_audio_mixer),
4919 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_HDMI_RX,
4920 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4921 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304922};
4923
4924static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4925 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4926 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4927 msm_routing_put_audio_mixer),
4928 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4929 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4930 msm_routing_put_audio_mixer),
4931 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4932 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4933 msm_routing_put_audio_mixer),
4934 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4935 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4936 msm_routing_put_audio_mixer),
4937 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4938 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4939 msm_routing_put_audio_mixer),
4940 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4941 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4942 msm_routing_put_audio_mixer),
4943 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4944 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4945 msm_routing_put_audio_mixer),
4946 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4947 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4948 msm_routing_put_audio_mixer),
4949 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4950 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4951 msm_routing_put_audio_mixer),
4952 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4953 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4954 msm_routing_put_audio_mixer),
4955 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4956 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4957 msm_routing_put_audio_mixer),
4958 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4959 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4960 msm_routing_put_audio_mixer),
4961 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4962 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4963 msm_routing_put_audio_mixer),
4964 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4965 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4966 msm_routing_put_audio_mixer),
4967 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4968 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4969 msm_routing_put_audio_mixer),
4970 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4971 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4972 msm_routing_put_audio_mixer),
4973};
4974
4975 /* incall music delivery mixer */
4976static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4977 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4978 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4979 msm_routing_put_audio_mixer),
4980 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4981 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4982 msm_routing_put_audio_mixer),
4983 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4984 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4985 msm_routing_put_audio_mixer),
4986 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4987 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4988 msm_routing_put_audio_mixer),
4989};
4990
4991static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4992 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4993 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4994 msm_routing_put_audio_mixer),
4995 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4996 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4997 msm_routing_put_audio_mixer),
4998 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4999 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5000 msm_routing_put_audio_mixer),
5001 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
5002 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5003 msm_routing_put_audio_mixer),
5004};
5005
5006static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
5007 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
5008 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5009 msm_routing_put_audio_mixer),
5010 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
5011 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5012 msm_routing_put_audio_mixer),
5013 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
5014 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5015 msm_routing_put_audio_mixer),
5016 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
5017 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5018 msm_routing_put_audio_mixer),
5019};
5020
5021static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
5022 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5023 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5024 msm_routing_put_audio_mixer),
5025 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5026 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5027 msm_routing_put_audio_mixer),
5028 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5029 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5030 msm_routing_put_audio_mixer),
5031 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5032 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5033 msm_routing_put_audio_mixer),
5034 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5035 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5036 msm_routing_put_audio_mixer),
5037 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5038 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5039 msm_routing_put_audio_mixer),
5040 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5041 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5042 msm_routing_put_audio_mixer),
5043 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5044 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5045 msm_routing_put_audio_mixer),
5046 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5047 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5048 msm_routing_put_audio_mixer),
5049 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5050 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5051 msm_routing_put_audio_mixer),
5052 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5053 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5054 msm_routing_put_audio_mixer),
5055 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5056 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5057 msm_routing_put_audio_mixer),
5058 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5059 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5060 msm_routing_put_audio_mixer),
5061 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5062 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5063 msm_routing_put_audio_mixer),
5064 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5065 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5066 msm_routing_put_audio_mixer),
5067 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5068 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5069 msm_routing_put_audio_mixer),
5070};
5071
5072static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
5073 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5074 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5075 msm_routing_put_audio_mixer),
5076 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5077 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5078 msm_routing_put_audio_mixer),
5079 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5080 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5081 msm_routing_put_audio_mixer),
5082 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5083 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5084 msm_routing_put_audio_mixer),
5085 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5086 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5087 msm_routing_put_audio_mixer),
5088 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5089 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5090 msm_routing_put_audio_mixer),
5091 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5092 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5093 msm_routing_put_audio_mixer),
5094 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5095 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5096 msm_routing_put_audio_mixer),
5097 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5098 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5099 msm_routing_put_audio_mixer),
5100 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5101 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5102 msm_routing_put_audio_mixer),
5103 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5104 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5105 msm_routing_put_audio_mixer),
5106 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5107 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5108 msm_routing_put_audio_mixer),
5109 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5110 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5111 msm_routing_put_audio_mixer),
5112 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5113 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5114 msm_routing_put_audio_mixer),
5115 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5116 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5117 msm_routing_put_audio_mixer),
5118 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5119 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5120 msm_routing_put_audio_mixer),
5121};
5122
5123static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
5124 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
5125 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5126 msm_routing_put_audio_mixer),
5127 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
5128 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5129 msm_routing_put_audio_mixer),
5130 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
5131 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5132 msm_routing_put_audio_mixer),
5133 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
5134 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5135 msm_routing_put_audio_mixer),
5136 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
5137 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5138 msm_routing_put_audio_mixer),
5139 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
5140 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5141 msm_routing_put_audio_mixer),
5142 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
5143 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5144 msm_routing_put_audio_mixer),
5145 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
5146 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5147 msm_routing_put_audio_mixer),
5148 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
5149 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5150 msm_routing_put_audio_mixer),
5151 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
5152 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5153 msm_routing_put_audio_mixer),
5154 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
5155 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5156 msm_routing_put_audio_mixer),
5157 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
5158 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5159 msm_routing_put_audio_mixer),
5160 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
5161 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5162 msm_routing_put_audio_mixer),
5163 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
5164 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5165 msm_routing_put_audio_mixer),
5166 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
5167 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5168 msm_routing_put_audio_mixer),
5169 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
5170 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5171 msm_routing_put_audio_mixer),
5172};
5173
5174static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
5175 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5176 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5177 msm_routing_put_audio_mixer),
5178 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5179 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5180 msm_routing_put_audio_mixer),
5181 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5182 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5183 msm_routing_put_audio_mixer),
5184 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5185 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5186 msm_routing_put_audio_mixer),
5187 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5188 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5189 msm_routing_put_audio_mixer),
5190 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5191 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5192 msm_routing_put_audio_mixer),
5193 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5194 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5195 msm_routing_put_audio_mixer),
5196 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5197 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5198 msm_routing_put_audio_mixer),
5199 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5200 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5201 msm_routing_put_audio_mixer),
5202 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5203 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5204 msm_routing_put_audio_mixer),
5205 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5206 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5207 msm_routing_put_audio_mixer),
5208 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5209 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5210 msm_routing_put_audio_mixer),
5211 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5212 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5213 msm_routing_put_audio_mixer),
5214 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5215 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5216 msm_routing_put_audio_mixer),
5217 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5218 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5219 msm_routing_put_audio_mixer),
5220 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5221 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5222 msm_routing_put_audio_mixer),
5223 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5224 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5225 msm_routing_put_audio_mixer),
5226 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5227 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5228 msm_routing_put_audio_mixer),
5229 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5230 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5231 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305232 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5233 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5234 msm_routing_put_audio_mixer),
5235 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5236 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5237 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305238};
5239
5240static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
5241 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5242 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5243 msm_routing_put_audio_mixer),
5244 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5245 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5246 msm_routing_put_audio_mixer),
5247 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5248 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5249 msm_routing_put_audio_mixer),
5250 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5251 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5252 msm_routing_put_audio_mixer),
5253 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5254 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5255 msm_routing_put_audio_mixer),
5256 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5257 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5258 msm_routing_put_audio_mixer),
5259 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5260 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5261 msm_routing_put_audio_mixer),
5262 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5263 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5264 msm_routing_put_audio_mixer),
5265 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5266 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5267 msm_routing_put_audio_mixer),
5268 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5269 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5270 msm_routing_put_audio_mixer),
5271 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5272 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5273 msm_routing_put_audio_mixer),
5274 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5275 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5276 msm_routing_put_audio_mixer),
5277 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5278 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5279 msm_routing_put_audio_mixer),
5280 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5281 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5282 msm_routing_put_audio_mixer),
5283 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5284 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5285 msm_routing_put_audio_mixer),
5286 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5287 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5288 msm_routing_put_audio_mixer),
5289};
5290
5291static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5292 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5293 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5294 msm_routing_put_audio_mixer),
5295 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5296 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5297 msm_routing_put_audio_mixer),
5298 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5299 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5300 msm_routing_put_audio_mixer),
5301 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5302 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5303 msm_routing_put_audio_mixer),
5304 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5305 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5306 msm_routing_put_audio_mixer),
5307 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5308 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5309 msm_routing_put_audio_mixer),
5310 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5311 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5312 msm_routing_put_audio_mixer),
5313 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5314 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5315 msm_routing_put_audio_mixer),
5316 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5317 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5318 msm_routing_put_audio_mixer),
5319 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5320 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5321 msm_routing_put_audio_mixer),
5322 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5323 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5324 msm_routing_put_audio_mixer),
5325 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5326 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5327 msm_routing_put_audio_mixer),
5328 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5329 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5330 msm_routing_put_audio_mixer),
5331 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5332 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5333 msm_routing_put_audio_mixer),
5334 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5335 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5336 msm_routing_put_audio_mixer),
5337 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5338 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5339 msm_routing_put_audio_mixer),
5340 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5341 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5342 msm_routing_put_audio_mixer),
5343 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5344 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5345 msm_routing_put_audio_mixer),
5346 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5347 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5348 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305349 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_FM_RX,
5350 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5351 msm_routing_put_audio_mixer),
5352 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_FM_RX,
5353 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5354 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305355};
5356
5357static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5358 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5359 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5360 msm_routing_put_audio_mixer),
5361 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5362 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5363 msm_routing_put_audio_mixer),
5364 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5365 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5366 msm_routing_put_audio_mixer),
5367 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5368 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5369 msm_routing_put_audio_mixer),
5370 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5371 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5372 msm_routing_put_audio_mixer),
5373 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5374 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5375 msm_routing_put_audio_mixer),
5376 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5377 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5378 msm_routing_put_audio_mixer),
5379 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5380 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5381 msm_routing_put_audio_mixer),
5382 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5383 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5384 msm_routing_put_audio_mixer),
5385 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5386 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5387 msm_routing_put_audio_mixer),
5388 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5389 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5390 msm_routing_put_audio_mixer),
5391 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5392 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5393 msm_routing_put_audio_mixer),
5394 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5395 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5396 msm_routing_put_audio_mixer),
5397 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5398 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5399 msm_routing_put_audio_mixer),
5400 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5401 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5402 msm_routing_put_audio_mixer),
5403 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5404 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5405 msm_routing_put_audio_mixer),
5406 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5407 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5408 msm_routing_put_audio_mixer),
5409 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5410 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5411 msm_routing_put_audio_mixer),
5412 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5413 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5414 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305415 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AFE_PCM_RX,
5416 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5417 msm_routing_put_audio_mixer),
5418 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AFE_PCM_RX,
5419 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5420 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305421};
5422
5423static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5424 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5425 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5426 msm_routing_put_audio_mixer),
5427 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5428 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5429 msm_routing_put_audio_mixer),
5430 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5431 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5432 msm_routing_put_audio_mixer),
5433 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5434 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5435 msm_routing_put_audio_mixer),
5436 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5437 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5438 msm_routing_put_audio_mixer),
5439 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5440 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5441 msm_routing_put_audio_mixer),
5442 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5443 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5444 msm_routing_put_audio_mixer),
5445 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5446 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5447 msm_routing_put_audio_mixer),
5448 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5449 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5450 msm_routing_put_audio_mixer),
5451 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5452 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5453 msm_routing_put_audio_mixer),
5454 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5455 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5456 msm_routing_put_audio_mixer),
5457 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5458 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5459 msm_routing_put_audio_mixer),
5460 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5461 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5462 msm_routing_put_audio_mixer),
5463 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5464 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5465 msm_routing_put_audio_mixer),
5466 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5467 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5468 msm_routing_put_audio_mixer),
5469 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5470 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5471 msm_routing_put_audio_mixer),
5472 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5473 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5474 msm_routing_put_audio_mixer),
5475 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5476 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5477 msm_routing_put_audio_mixer),
5478 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5479 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5480 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305481 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AUXPCM_RX,
5482 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5483 msm_routing_put_audio_mixer),
5484 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AUXPCM_RX,
5485 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5486 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305487};
5488
5489static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5490 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5491 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5492 msm_routing_put_audio_mixer),
5493 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5494 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5495 msm_routing_put_audio_mixer),
5496 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5497 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5498 msm_routing_put_audio_mixer),
5499 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5500 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5501 msm_routing_put_audio_mixer),
5502 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5503 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5504 msm_routing_put_audio_mixer),
5505 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5506 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5507 msm_routing_put_audio_mixer),
5508 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5509 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5510 msm_routing_put_audio_mixer),
5511 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5512 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5513 msm_routing_put_audio_mixer),
5514 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5515 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5516 msm_routing_put_audio_mixer),
5517 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5518 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5519 msm_routing_put_audio_mixer),
5520 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5521 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5522 msm_routing_put_audio_mixer),
5523 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5524 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5525 msm_routing_put_audio_mixer),
5526 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5527 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5528 msm_routing_put_audio_mixer),
5529 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5530 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5531 msm_routing_put_audio_mixer),
5532 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5533 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5534 msm_routing_put_audio_mixer),
5535 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5536 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5537 msm_routing_put_audio_mixer),
5538 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5539 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5540 msm_routing_put_audio_mixer),
5541 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5542 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5543 msm_routing_put_audio_mixer),
5544 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5545 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5546 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305547 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5548 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5549 msm_routing_put_audio_mixer),
5550 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5551 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5552 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305553};
5554
5555static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5556 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5557 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5558 msm_routing_put_audio_mixer),
5559 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5560 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5561 msm_routing_put_audio_mixer),
5562 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5563 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5564 msm_routing_put_audio_mixer),
5565 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5566 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5567 msm_routing_put_audio_mixer),
5568 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5569 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5570 msm_routing_put_audio_mixer),
5571 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5572 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5573 msm_routing_put_audio_mixer),
5574 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5575 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5576 msm_routing_put_audio_mixer),
5577 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5578 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5579 msm_routing_put_audio_mixer),
5580 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5581 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5582 msm_routing_put_audio_mixer),
5583 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5584 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5585 msm_routing_put_audio_mixer),
5586 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5587 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5588 msm_routing_put_audio_mixer),
5589 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5590 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5591 msm_routing_put_audio_mixer),
5592 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5593 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5594 msm_routing_put_audio_mixer),
5595 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5596 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5597 msm_routing_put_audio_mixer),
5598 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5599 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5600 msm_routing_put_audio_mixer),
5601 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5602 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5603 msm_routing_put_audio_mixer),
5604};
5605
5606static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5607 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5608 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5609 msm_routing_put_audio_mixer),
5610 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5611 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5612 msm_routing_put_audio_mixer),
5613 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5614 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5615 msm_routing_put_audio_mixer),
5616 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5617 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5618 msm_routing_put_audio_mixer),
5619 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5620 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5621 msm_routing_put_audio_mixer),
5622 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5623 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5624 msm_routing_put_audio_mixer),
5625 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5626 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5627 msm_routing_put_audio_mixer),
5628 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5629 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5630 msm_routing_put_audio_mixer),
5631 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5632 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5633 msm_routing_put_audio_mixer),
5634 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5635 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5636 msm_routing_put_audio_mixer),
5637 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5638 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5639 msm_routing_put_audio_mixer),
5640 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5641 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5642 msm_routing_put_audio_mixer),
5643 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5644 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5645 msm_routing_put_audio_mixer),
5646 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5647 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5648 msm_routing_put_audio_mixer),
5649 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5650 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5651 msm_routing_put_audio_mixer),
5652 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5653 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5654 msm_routing_put_audio_mixer),
5655};
5656
Rohit Kumara5077932017-09-10 22:05:05 +05305657static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5658 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5659 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5660 msm_routing_put_audio_mixer),
5661 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5662 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5663 msm_routing_put_audio_mixer),
5664 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5665 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5666 msm_routing_put_audio_mixer),
5667 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5668 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5669 msm_routing_put_audio_mixer),
5670 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5671 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5672 msm_routing_put_audio_mixer),
5673 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5674 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5675 msm_routing_put_audio_mixer),
5676 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5677 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5678 msm_routing_put_audio_mixer),
5679 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5680 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5681 msm_routing_put_audio_mixer),
5682 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5683 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5684 msm_routing_put_audio_mixer),
5685 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5686 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5687 msm_routing_put_audio_mixer),
5688 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5689 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5690 msm_routing_put_audio_mixer),
5691 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5692 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5693 msm_routing_put_audio_mixer),
5694 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5695 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5696 msm_routing_put_audio_mixer),
5697 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5698 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5699 msm_routing_put_audio_mixer),
5700 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5701 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5702 msm_routing_put_audio_mixer),
5703 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5704 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5705 msm_routing_put_audio_mixer),
5706};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305707static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5708 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5709 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5710 msm_routing_put_audio_mixer),
5711 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5712 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5713 msm_routing_put_audio_mixer),
5714 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5715 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5716 msm_routing_put_audio_mixer),
5717 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5718 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5719 msm_routing_put_audio_mixer),
5720 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5721 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5722 msm_routing_put_audio_mixer),
5723 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5724 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5725 msm_routing_put_audio_mixer),
5726 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5727 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5728 msm_routing_put_audio_mixer),
5729 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5730 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5731 msm_routing_put_audio_mixer),
5732 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5733 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5734 msm_routing_put_audio_mixer),
5735 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5736 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5737 msm_routing_put_audio_mixer),
5738 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5739 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5740 msm_routing_put_audio_mixer),
5741 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5742 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5743 msm_routing_put_audio_mixer),
5744 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5745 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5746 msm_routing_put_audio_mixer),
5747 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5748 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5749 msm_routing_put_audio_mixer),
5750 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5751 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5752 msm_routing_put_audio_mixer),
5753 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5754 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5755 msm_routing_put_audio_mixer),
5756};
5757
5758static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5759 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5760 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5761 msm_routing_put_audio_mixer),
5762 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5763 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5764 msm_routing_put_audio_mixer),
5765 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5766 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5767 msm_routing_put_audio_mixer),
5768 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5769 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5770 msm_routing_put_audio_mixer),
5771 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5772 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5773 msm_routing_put_audio_mixer),
5774 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5775 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5776 msm_routing_put_audio_mixer),
5777 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5778 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5779 msm_routing_put_audio_mixer),
5780 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5781 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5782 msm_routing_put_audio_mixer),
5783 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5784 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5785 msm_routing_put_audio_mixer),
5786 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5787 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5788 msm_routing_put_audio_mixer),
5789 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5790 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5791 msm_routing_put_audio_mixer),
5792 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5793 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5794 msm_routing_put_audio_mixer),
5795 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5796 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5797 msm_routing_put_audio_mixer),
5798 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5799 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5800 msm_routing_put_audio_mixer),
5801 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5802 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5803 msm_routing_put_audio_mixer),
5804 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5805 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5806 msm_routing_put_audio_mixer),
5807};
5808
5809static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5810 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5811 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5812 msm_routing_put_audio_mixer),
5813 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5814 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5815 msm_routing_put_audio_mixer),
5816 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5817 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5818 msm_routing_put_audio_mixer),
5819 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5820 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5821 msm_routing_put_audio_mixer),
5822 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5823 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5824 msm_routing_put_audio_mixer),
5825 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5826 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5827 msm_routing_put_audio_mixer),
5828 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5829 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5830 msm_routing_put_audio_mixer),
5831 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5832 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5833 msm_routing_put_audio_mixer),
5834 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5835 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5836 msm_routing_put_audio_mixer),
5837 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5838 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5839 msm_routing_put_audio_mixer),
5840 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5841 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5842 msm_routing_put_audio_mixer),
5843 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5844 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5845 msm_routing_put_audio_mixer),
5846 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5847 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5848 msm_routing_put_audio_mixer),
5849 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5850 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5851 msm_routing_put_audio_mixer),
5852 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5853 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5854 msm_routing_put_audio_mixer),
5855 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5856 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5857 msm_routing_put_audio_mixer),
5858};
5859
5860static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5861 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5862 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5863 msm_routing_put_audio_mixer),
5864 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5865 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5866 msm_routing_put_audio_mixer),
5867 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5868 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5869 msm_routing_put_audio_mixer),
5870 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5871 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5872 msm_routing_put_audio_mixer),
5873 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5874 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5875 msm_routing_put_audio_mixer),
5876 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5877 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5878 msm_routing_put_audio_mixer),
5879 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5880 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5881 msm_routing_put_audio_mixer),
5882 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5883 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5884 msm_routing_put_audio_mixer),
5885 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5886 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5887 msm_routing_put_audio_mixer),
5888 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5889 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5890 msm_routing_put_audio_mixer),
5891 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5892 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5893 msm_routing_put_audio_mixer),
5894 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5895 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5896 msm_routing_put_audio_mixer),
5897 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5898 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5899 msm_routing_put_audio_mixer),
5900 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5901 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5902 msm_routing_put_audio_mixer),
5903 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5904 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5905 msm_routing_put_audio_mixer),
5906 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5907 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5908 msm_routing_put_audio_mixer),
5909};
5910
5911static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5912 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5913 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5914 msm_routing_put_audio_mixer),
5915 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5916 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5917 msm_routing_put_audio_mixer),
5918 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5919 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5920 msm_routing_put_audio_mixer),
5921 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5922 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5923 msm_routing_put_audio_mixer),
5924 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5925 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5926 msm_routing_put_audio_mixer),
5927 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5928 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5929 msm_routing_put_audio_mixer),
5930 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5931 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5932 msm_routing_put_audio_mixer),
5933 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5934 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5935 msm_routing_put_audio_mixer),
5936 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5937 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5938 msm_routing_put_audio_mixer),
5939 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5940 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5941 msm_routing_put_audio_mixer),
5942 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5943 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5944 msm_routing_put_audio_mixer),
5945 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5946 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5947 msm_routing_put_audio_mixer),
5948 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5949 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5950 msm_routing_put_audio_mixer),
5951 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5952 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5953 msm_routing_put_audio_mixer),
5954 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5955 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5956 msm_routing_put_audio_mixer),
5957 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5958 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5959 msm_routing_put_audio_mixer),
5960};
5961
5962static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5963 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5964 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5965 msm_routing_put_audio_mixer),
5966 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5967 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5968 msm_routing_put_audio_mixer),
5969 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5970 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5971 msm_routing_put_audio_mixer),
5972 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5973 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5974 msm_routing_put_audio_mixer),
5975 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5976 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5977 msm_routing_put_audio_mixer),
5978 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5979 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5980 msm_routing_put_audio_mixer),
5981 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5982 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5983 msm_routing_put_audio_mixer),
5984 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5985 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5986 msm_routing_put_audio_mixer),
5987 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5988 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5989 msm_routing_put_audio_mixer),
5990 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5991 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5992 msm_routing_put_audio_mixer),
5993 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5994 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5995 msm_routing_put_audio_mixer),
5996 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5997 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5998 msm_routing_put_audio_mixer),
5999 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
6000 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6001 msm_routing_put_audio_mixer),
6002 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
6003 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6004 msm_routing_put_audio_mixer),
6005 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
6006 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6007 msm_routing_put_audio_mixer),
6008 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
6009 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6010 msm_routing_put_audio_mixer),
6011};
6012
6013static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
6014 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6015 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6016 msm_routing_put_audio_mixer),
6017 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6018 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6019 msm_routing_put_audio_mixer),
6020 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6021 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6022 msm_routing_put_audio_mixer),
6023 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6024 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6025 msm_routing_put_audio_mixer),
6026 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6027 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6028 msm_routing_put_audio_mixer),
6029 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6030 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6031 msm_routing_put_audio_mixer),
6032 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6033 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6034 msm_routing_put_audio_mixer),
6035 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6036 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6037 msm_routing_put_audio_mixer),
6038 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6039 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6040 msm_routing_put_audio_mixer),
6041 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6042 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6043 msm_routing_put_audio_mixer),
6044 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6045 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6046 msm_routing_put_audio_mixer),
6047 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6048 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6049 msm_routing_put_audio_mixer),
6050 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6051 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6052 msm_routing_put_audio_mixer),
6053 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6054 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6055 msm_routing_put_audio_mixer),
6056 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6057 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6058 msm_routing_put_audio_mixer),
6059 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6060 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6061 msm_routing_put_audio_mixer),
6062};
6063
6064static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
6065 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6066 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6067 msm_routing_put_audio_mixer),
6068 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6069 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6070 msm_routing_put_audio_mixer),
6071 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6072 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6073 msm_routing_put_audio_mixer),
6074 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6075 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6076 msm_routing_put_audio_mixer),
6077 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6078 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6079 msm_routing_put_audio_mixer),
6080 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6081 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6082 msm_routing_put_audio_mixer),
6083 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6084 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6085 msm_routing_put_audio_mixer),
6086 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6087 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6088 msm_routing_put_audio_mixer),
6089 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6090 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6091 msm_routing_put_audio_mixer),
6092 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6093 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6094 msm_routing_put_audio_mixer),
6095 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6096 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6097 msm_routing_put_audio_mixer),
6098 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6099 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6100 msm_routing_put_audio_mixer),
6101 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6102 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6103 msm_routing_put_audio_mixer),
6104 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6105 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6106 msm_routing_put_audio_mixer),
6107 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6108 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6109 msm_routing_put_audio_mixer),
6110 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6111 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6112 msm_routing_put_audio_mixer),
6113};
6114
6115static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
6116 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6117 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6118 msm_routing_put_audio_mixer),
6119 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6120 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6121 msm_routing_put_audio_mixer),
6122 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6123 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6124 msm_routing_put_audio_mixer),
6125 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6126 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6127 msm_routing_put_audio_mixer),
6128 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6129 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6130 msm_routing_put_audio_mixer),
6131 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6132 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6133 msm_routing_put_audio_mixer),
6134 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6135 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6136 msm_routing_put_audio_mixer),
6137 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6138 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6139 msm_routing_put_audio_mixer),
6140 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6141 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6142 msm_routing_put_audio_mixer),
6143 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6144 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6145 msm_routing_put_audio_mixer),
6146 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6147 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6148 msm_routing_put_audio_mixer),
6149 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6150 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6151 msm_routing_put_audio_mixer),
6152 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6153 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6154 msm_routing_put_audio_mixer),
6155 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6156 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6157 msm_routing_put_audio_mixer),
6158 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6159 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6160 msm_routing_put_audio_mixer),
6161 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6162 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6163 msm_routing_put_audio_mixer),
6164};
6165
6166static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
6167 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6168 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6169 msm_routing_put_audio_mixer),
6170 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6171 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6172 msm_routing_put_audio_mixer),
6173 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6174 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6175 msm_routing_put_audio_mixer),
6176 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6177 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6178 msm_routing_put_audio_mixer),
6179 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6180 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6181 msm_routing_put_audio_mixer),
6182 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6183 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6184 msm_routing_put_audio_mixer),
6185 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6186 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6187 msm_routing_put_audio_mixer),
6188 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6189 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6190 msm_routing_put_audio_mixer),
6191 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6192 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6193 msm_routing_put_audio_mixer),
6194 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6195 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6196 msm_routing_put_audio_mixer),
6197 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6198 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6199 msm_routing_put_audio_mixer),
6200 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6201 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6202 msm_routing_put_audio_mixer),
6203 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6204 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6205 msm_routing_put_audio_mixer),
6206 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6207 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6208 msm_routing_put_audio_mixer),
6209 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6210 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6211 msm_routing_put_audio_mixer),
6212 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6213 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6214 msm_routing_put_audio_mixer),
6215};
6216
6217static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
6218 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6219 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6220 msm_routing_put_audio_mixer),
6221 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6222 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6223 msm_routing_put_audio_mixer),
6224 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6225 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6226 msm_routing_put_audio_mixer),
6227 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6228 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6229 msm_routing_put_audio_mixer),
6230 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6231 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6232 msm_routing_put_audio_mixer),
6233 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6234 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6235 msm_routing_put_audio_mixer),
6236 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6237 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6238 msm_routing_put_audio_mixer),
6239 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6240 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6241 msm_routing_put_audio_mixer),
6242 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6243 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6244 msm_routing_put_audio_mixer),
6245 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6246 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6247 msm_routing_put_audio_mixer),
6248 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6249 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6250 msm_routing_put_audio_mixer),
6251 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6252 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6253 msm_routing_put_audio_mixer),
6254 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6255 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6256 msm_routing_put_audio_mixer),
6257 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6258 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6259 msm_routing_put_audio_mixer),
6260 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6261 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6262 msm_routing_put_audio_mixer),
6263 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6264 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6265 msm_routing_put_audio_mixer),
6266};
6267
6268static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
6269 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6270 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6271 msm_routing_put_audio_mixer),
6272 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6273 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6274 msm_routing_put_audio_mixer),
6275 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6276 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6277 msm_routing_put_audio_mixer),
6278 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6279 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6280 msm_routing_put_audio_mixer),
6281 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6282 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6283 msm_routing_put_audio_mixer),
6284 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6285 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6286 msm_routing_put_audio_mixer),
6287 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6288 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6289 msm_routing_put_audio_mixer),
6290 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6291 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6292 msm_routing_put_audio_mixer),
6293 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6294 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6295 msm_routing_put_audio_mixer),
6296 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6297 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6298 msm_routing_put_audio_mixer),
6299 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6300 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6301 msm_routing_put_audio_mixer),
6302 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6303 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6304 msm_routing_put_audio_mixer),
6305 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6306 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6307 msm_routing_put_audio_mixer),
6308 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6309 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6310 msm_routing_put_audio_mixer),
6311 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6312 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6313 msm_routing_put_audio_mixer),
6314 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6315 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6316 msm_routing_put_audio_mixer),
6317};
6318
6319static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
6320 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6321 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6322 msm_routing_put_audio_mixer),
6323 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6324 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6325 msm_routing_put_audio_mixer),
6326 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6327 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6328 msm_routing_put_audio_mixer),
6329 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6330 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6331 msm_routing_put_audio_mixer),
6332 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6333 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6334 msm_routing_put_audio_mixer),
6335 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6336 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6337 msm_routing_put_audio_mixer),
6338 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6339 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6340 msm_routing_put_audio_mixer),
6341 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6342 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6343 msm_routing_put_audio_mixer),
6344 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6345 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6346 msm_routing_put_audio_mixer),
6347 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6348 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6349 msm_routing_put_audio_mixer),
6350 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6351 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6352 msm_routing_put_audio_mixer),
6353 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6354 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6355 msm_routing_put_audio_mixer),
6356 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6357 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6358 msm_routing_put_audio_mixer),
6359 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6360 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6361 msm_routing_put_audio_mixer),
6362 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6363 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6364 msm_routing_put_audio_mixer),
6365 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6366 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6367 msm_routing_put_audio_mixer),
6368};
6369
6370static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
6371 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6372 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6373 msm_routing_put_audio_mixer),
6374 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6375 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6376 msm_routing_put_audio_mixer),
6377 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6378 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6379 msm_routing_put_audio_mixer),
6380 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6381 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6382 msm_routing_put_audio_mixer),
6383 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6384 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6385 msm_routing_put_audio_mixer),
6386 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6387 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6388 msm_routing_put_audio_mixer),
6389 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6390 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6391 msm_routing_put_audio_mixer),
6392 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6393 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6394 msm_routing_put_audio_mixer),
6395 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6396 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6397 msm_routing_put_audio_mixer),
6398 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6399 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6400 msm_routing_put_audio_mixer),
6401 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6402 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6403 msm_routing_put_audio_mixer),
6404 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6405 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6406 msm_routing_put_audio_mixer),
6407 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6408 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6409 msm_routing_put_audio_mixer),
6410 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6411 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6412 msm_routing_put_audio_mixer),
6413 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6414 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6415 msm_routing_put_audio_mixer),
6416 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6417 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6418 msm_routing_put_audio_mixer),
6419};
6420
6421static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6422 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6423 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6424 msm_routing_put_audio_mixer),
6425 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6426 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6427 msm_routing_put_audio_mixer),
6428 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6429 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6430 msm_routing_put_audio_mixer),
6431 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6432 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6433 msm_routing_put_audio_mixer),
6434 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6435 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6436 msm_routing_put_audio_mixer),
6437 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6438 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6439 msm_routing_put_audio_mixer),
6440 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6441 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6442 msm_routing_put_audio_mixer),
6443 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6444 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6445 msm_routing_put_audio_mixer),
6446 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6447 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6448 msm_routing_put_audio_mixer),
6449 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6450 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6451 msm_routing_put_audio_mixer),
6452 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6453 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6454 msm_routing_put_audio_mixer),
6455 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6456 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6457 msm_routing_put_audio_mixer),
6458 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6459 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6460 msm_routing_put_audio_mixer),
6461 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6462 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6463 msm_routing_put_audio_mixer),
6464 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6465 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6466 msm_routing_put_audio_mixer),
6467 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6468 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6469 msm_routing_put_audio_mixer),
6470};
6471
6472static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6473 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6474 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6475 msm_routing_put_audio_mixer),
6476 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6477 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6478 msm_routing_put_audio_mixer),
6479 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6480 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6481 msm_routing_put_audio_mixer),
6482 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6483 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6484 msm_routing_put_audio_mixer),
6485 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6486 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6487 msm_routing_put_audio_mixer),
6488 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6489 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6490 msm_routing_put_audio_mixer),
6491 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6492 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6493 msm_routing_put_audio_mixer),
6494 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6495 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6496 msm_routing_put_audio_mixer),
6497 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6498 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6499 msm_routing_put_audio_mixer),
6500 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6501 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6502 msm_routing_put_audio_mixer),
6503 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6504 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6505 msm_routing_put_audio_mixer),
6506 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6507 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6508 msm_routing_put_audio_mixer),
6509 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6510 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6511 msm_routing_put_audio_mixer),
6512 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6513 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6514 msm_routing_put_audio_mixer),
6515 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6516 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6517 msm_routing_put_audio_mixer),
6518 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6519 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6520 msm_routing_put_audio_mixer),
6521};
6522
6523static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6524 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6525 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6526 msm_routing_put_audio_mixer),
6527 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6528 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6529 msm_routing_put_audio_mixer),
6530 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6531 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6532 msm_routing_put_audio_mixer),
6533 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6534 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6535 msm_routing_put_audio_mixer),
6536 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6537 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6538 msm_routing_put_audio_mixer),
6539 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6540 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6541 msm_routing_put_audio_mixer),
6542 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6543 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6544 msm_routing_put_audio_mixer),
6545 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6546 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6547 msm_routing_put_audio_mixer),
6548 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6549 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6550 msm_routing_put_audio_mixer),
6551 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6552 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6553 msm_routing_put_audio_mixer),
6554 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6555 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6556 msm_routing_put_audio_mixer),
6557 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6558 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6559 msm_routing_put_audio_mixer),
6560 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6561 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6562 msm_routing_put_audio_mixer),
6563 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6564 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6565 msm_routing_put_audio_mixer),
6566 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6567 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6568 msm_routing_put_audio_mixer),
6569 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6570 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6571 msm_routing_put_audio_mixer),
6572 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6573 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6574 msm_routing_put_audio_mixer),
6575};
6576
6577static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6578 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6579 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6580 msm_routing_put_audio_mixer),
6581 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6582 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6583 msm_routing_put_audio_mixer),
6584 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6585 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6586 msm_routing_put_audio_mixer),
6587 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6588 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6589 msm_routing_put_audio_mixer),
6590 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6591 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6592 msm_routing_put_audio_mixer),
6593 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6594 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6595 msm_routing_put_audio_mixer),
6596 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6597 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6598 msm_routing_put_audio_mixer),
6599 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6600 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6601 msm_routing_put_audio_mixer),
6602 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6603 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6604 msm_routing_put_audio_mixer),
6605 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6606 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6607 msm_routing_put_audio_mixer),
6608 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6609 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6610 msm_routing_put_audio_mixer),
6611 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6612 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6613 msm_routing_put_audio_mixer),
6614 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6615 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6616 msm_routing_put_audio_mixer),
6617 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6618 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6619 msm_routing_put_audio_mixer),
6620 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6621 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6622 msm_routing_put_audio_mixer),
6623 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6624 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6625 msm_routing_put_audio_mixer),
6626};
6627
6628static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6629 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6630 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6631 msm_routing_put_audio_mixer),
6632 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6633 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6634 msm_routing_put_audio_mixer),
6635 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6636 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6637 msm_routing_put_audio_mixer),
6638 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6639 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6640 msm_routing_put_audio_mixer),
6641 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6642 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6643 msm_routing_put_audio_mixer),
6644 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6645 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6646 msm_routing_put_audio_mixer),
6647 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6648 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6649 msm_routing_put_audio_mixer),
6650 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6651 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6652 msm_routing_put_audio_mixer),
6653 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6654 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6655 msm_routing_put_audio_mixer),
6656 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6657 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6658 msm_routing_put_audio_mixer),
6659 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6660 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6661 msm_routing_put_audio_mixer),
6662 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6663 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6664 msm_routing_put_audio_mixer),
6665 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6666 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6667 msm_routing_put_audio_mixer),
6668 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6669 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6670 msm_routing_put_audio_mixer),
6671 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6672 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6673 msm_routing_put_audio_mixer),
6674 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6675 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6676 msm_routing_put_audio_mixer),
6677 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6678 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6679 msm_routing_put_audio_mixer),
6680};
6681
6682static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6683 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6684 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6685 msm_routing_put_audio_mixer),
6686 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6687 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6688 msm_routing_put_audio_mixer),
6689 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6690 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6691 msm_routing_put_audio_mixer),
6692 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6693 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6694 msm_routing_put_audio_mixer),
6695 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6696 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6697 msm_routing_put_audio_mixer),
6698 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6699 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6700 msm_routing_put_audio_mixer),
6701 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6702 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6703 msm_routing_put_audio_mixer),
6704 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6705 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6706 msm_routing_put_audio_mixer),
6707 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6708 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6709 msm_routing_put_audio_mixer),
6710 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6711 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6712 msm_routing_put_audio_mixer),
6713 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6714 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6715 msm_routing_put_audio_mixer),
6716 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6717 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6718 msm_routing_put_audio_mixer),
6719 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6720 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6721 msm_routing_put_audio_mixer),
6722 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6723 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6724 msm_routing_put_audio_mixer),
6725 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6726 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6727 msm_routing_put_audio_mixer),
6728 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6729 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6730 msm_routing_put_audio_mixer),
6731 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6732 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6733 msm_routing_put_audio_mixer),
6734};
6735
6736static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6737 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6738 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6739 msm_routing_put_audio_mixer),
6740 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6741 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6742 msm_routing_put_audio_mixer),
6743 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6744 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6745 msm_routing_put_audio_mixer),
6746 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6747 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6748 msm_routing_put_audio_mixer),
6749 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6750 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6751 msm_routing_put_audio_mixer),
6752 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6753 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6754 msm_routing_put_audio_mixer),
6755 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6756 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6757 msm_routing_put_audio_mixer),
6758 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6759 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6760 msm_routing_put_audio_mixer),
6761 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6762 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6763 msm_routing_put_audio_mixer),
6764 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6765 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6766 msm_routing_put_audio_mixer),
6767 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6768 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6769 msm_routing_put_audio_mixer),
6770 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6771 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6772 msm_routing_put_audio_mixer),
6773 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6774 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6775 msm_routing_put_audio_mixer),
6776 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6777 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6778 msm_routing_put_audio_mixer),
6779 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6780 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6781 msm_routing_put_audio_mixer),
6782 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6783 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6784 msm_routing_put_audio_mixer),
6785 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6786 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6787 msm_routing_put_audio_mixer),
6788};
6789
Rohit Kumara5077932017-09-10 22:05:05 +05306790static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6791 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6792 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6793 msm_routing_put_audio_mixer),
6794 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6795 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6796 msm_routing_put_audio_mixer),
6797 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6798 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6799 msm_routing_put_audio_mixer),
6800 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6801 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6802 msm_routing_put_audio_mixer),
6803 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6804 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6805 msm_routing_put_audio_mixer),
6806 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6807 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6808 msm_routing_put_audio_mixer),
6809 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6810 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6811 msm_routing_put_audio_mixer),
6812 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6813 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6814 msm_routing_put_audio_mixer),
6815 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6816 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6817 msm_routing_put_audio_mixer),
6818 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6819 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6820 msm_routing_put_audio_mixer),
6821 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6822 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6823 msm_routing_put_audio_mixer),
6824 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6825 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6826 msm_routing_put_audio_mixer),
6827 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6828 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6829 msm_routing_put_audio_mixer),
6830 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6831 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6832 msm_routing_put_audio_mixer),
6833 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6834 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6835 msm_routing_put_audio_mixer),
6836 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6837 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6838 msm_routing_put_audio_mixer),
6839 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6840 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6841 msm_routing_put_audio_mixer),
6842};
6843
6844static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6845 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6846 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6847 msm_routing_put_audio_mixer),
6848 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6849 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6850 msm_routing_put_audio_mixer),
6851 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6852 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6853 msm_routing_put_audio_mixer),
6854 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6855 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6856 msm_routing_put_audio_mixer),
6857 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6858 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6859 msm_routing_put_audio_mixer),
6860 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6861 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6862 msm_routing_put_audio_mixer),
6863 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6864 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6865 msm_routing_put_audio_mixer),
6866 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6867 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6868 msm_routing_put_audio_mixer),
6869 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6870 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6871 msm_routing_put_audio_mixer),
6872 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6873 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6874 msm_routing_put_audio_mixer),
6875 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6876 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6877 msm_routing_put_audio_mixer),
6878 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6879 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6880 msm_routing_put_audio_mixer),
6881 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6882 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6883 msm_routing_put_audio_mixer),
6884 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6885 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6886 msm_routing_put_audio_mixer),
6887 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6888 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6889 msm_routing_put_audio_mixer),
6890 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6891 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6892 msm_routing_put_audio_mixer),
6893};
6894
6895static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6896 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6897 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6898 msm_routing_put_audio_mixer),
6899 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6900 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6901 msm_routing_put_audio_mixer),
6902 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6903 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6904 msm_routing_put_audio_mixer),
6905 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6906 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6907 msm_routing_put_audio_mixer),
6908 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6909 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6910 msm_routing_put_audio_mixer),
6911 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6912 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6913 msm_routing_put_audio_mixer),
6914 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6915 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6916 msm_routing_put_audio_mixer),
6917 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6918 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6919 msm_routing_put_audio_mixer),
6920 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6921 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6922 msm_routing_put_audio_mixer),
6923 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6924 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6925 msm_routing_put_audio_mixer),
6926 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6927 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6928 msm_routing_put_audio_mixer),
6929 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6930 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6931 msm_routing_put_audio_mixer),
6932 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6933 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6934 msm_routing_put_audio_mixer),
6935 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6936 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6937 msm_routing_put_audio_mixer),
6938 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6939 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6940 msm_routing_put_audio_mixer),
6941 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6942 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6943 msm_routing_put_audio_mixer),
6944 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6945 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6946 msm_routing_put_audio_mixer),
6947};
6948
6949static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6950 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6951 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6952 msm_routing_put_audio_mixer),
6953 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6954 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6955 msm_routing_put_audio_mixer),
6956 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6957 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6958 msm_routing_put_audio_mixer),
6959 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6960 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6961 msm_routing_put_audio_mixer),
6962 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6963 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6964 msm_routing_put_audio_mixer),
6965 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6966 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6967 msm_routing_put_audio_mixer),
6968 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6969 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6970 msm_routing_put_audio_mixer),
6971 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6972 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6973 msm_routing_put_audio_mixer),
6974 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6975 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6976 msm_routing_put_audio_mixer),
6977 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6978 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6979 msm_routing_put_audio_mixer),
6980 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6981 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6982 msm_routing_put_audio_mixer),
6983 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6984 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6985 msm_routing_put_audio_mixer),
6986 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6987 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6988 msm_routing_put_audio_mixer),
6989 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6990 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6991 msm_routing_put_audio_mixer),
6992 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6993 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6994 msm_routing_put_audio_mixer),
6995 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6996 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6997 msm_routing_put_audio_mixer),
6998 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6999 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7000 msm_routing_put_audio_mixer),
7001};
7002
7003static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
7004 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7005 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7006 msm_routing_put_audio_mixer),
7007 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7008 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7009 msm_routing_put_audio_mixer),
7010 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7011 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7012 msm_routing_put_audio_mixer),
7013 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7014 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7015 msm_routing_put_audio_mixer),
7016 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7017 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7018 msm_routing_put_audio_mixer),
7019 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7020 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7021 msm_routing_put_audio_mixer),
7022 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7023 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7024 msm_routing_put_audio_mixer),
7025 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7026 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7027 msm_routing_put_audio_mixer),
7028 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7029 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7030 msm_routing_put_audio_mixer),
7031 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7032 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7033 msm_routing_put_audio_mixer),
7034 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7035 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7036 msm_routing_put_audio_mixer),
7037 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7038 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7039 msm_routing_put_audio_mixer),
7040 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7041 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7042 msm_routing_put_audio_mixer),
7043 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7044 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7045 msm_routing_put_audio_mixer),
7046 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7047 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7048 msm_routing_put_audio_mixer),
7049 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7050 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7051 msm_routing_put_audio_mixer),
7052 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7053 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7054 msm_routing_put_audio_mixer),
7055};
7056
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307057static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
7058 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
7059 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7060 msm_routing_put_audio_mixer),
7061 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7062 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7063 msm_routing_put_audio_mixer),
7064 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7065 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7066 msm_routing_put_audio_mixer),
7067 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7068 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7069 msm_routing_put_audio_mixer),
7070 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7071 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7072 msm_routing_put_audio_mixer),
7073 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7074 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7075 msm_routing_put_audio_mixer),
7076 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7077 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7078 msm_routing_put_audio_mixer),
7079 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7080 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7081 msm_routing_put_audio_mixer),
7082 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7083 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7084 msm_routing_put_audio_mixer),
7085 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7086 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7087 msm_routing_put_audio_mixer),
7088 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7089 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7090 msm_routing_put_audio_mixer),
7091 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7092 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7093 msm_routing_put_audio_mixer),
7094 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7095 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7096 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307097 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7098 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7099 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307100 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7101 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7102 msm_routing_put_audio_mixer),
7103 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7104 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7105 msm_routing_put_audio_mixer),
7106 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7107 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7108 msm_routing_put_audio_mixer),
7109 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7110 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7111 msm_routing_put_audio_mixer),
7112 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7113 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7114 msm_routing_put_audio_mixer),
7115 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
7116 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7117 msm_routing_put_audio_mixer),
7118 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7119 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7120 msm_routing_put_audio_mixer),
7121 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7122 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7123 msm_routing_put_audio_mixer),
7124 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7125 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7126 msm_routing_put_audio_mixer),
7127 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7128 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7129 msm_routing_put_audio_mixer),
7130 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7131 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7132 msm_routing_put_audio_mixer),
7133 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7134 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7135 msm_routing_put_audio_mixer),
7136 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7137 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7138 msm_routing_put_audio_mixer),
7139 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7140 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7141 msm_routing_put_audio_mixer),
7142 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7143 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7144 msm_routing_put_audio_mixer),
7145 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7146 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7147 msm_routing_put_audio_mixer),
7148 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7149 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7150 msm_routing_put_audio_mixer),
7151 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7152 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7153 msm_routing_put_audio_mixer),
7154 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7155 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7156 msm_routing_put_audio_mixer),
7157 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7158 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7159 msm_routing_put_audio_mixer),
7160 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7161 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7162 msm_routing_put_audio_mixer),
7163 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7164 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7165 msm_routing_put_audio_mixer),
7166 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7167 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7168 msm_routing_put_audio_mixer),
7169 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7170 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7171 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307172 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7173 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7174 msm_routing_put_audio_mixer),
7175 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7176 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7177 msm_routing_put_audio_mixer),
7178 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7179 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7180 msm_routing_put_audio_mixer),
7181 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7182 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7183 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307184 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7185 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7186 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307187 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7188 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7189 msm_routing_put_audio_mixer),
7190 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7191 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7192 msm_routing_put_audio_mixer),
7193 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7194 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7195 msm_routing_put_audio_mixer),
7196};
7197
7198static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
7199 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7200 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7201 msm_routing_put_audio_mixer),
7202 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7203 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7204 msm_routing_put_audio_mixer),
7205 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7206 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7207 msm_routing_put_audio_mixer),
7208 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7209 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7210 msm_routing_put_audio_mixer),
7211 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7212 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7213 msm_routing_put_audio_mixer),
7214 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7215 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7216 msm_routing_put_audio_mixer),
7217 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7218 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7219 msm_routing_put_audio_mixer),
7220 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7221 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7222 msm_routing_put_audio_mixer),
7223 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7224 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7225 msm_routing_put_audio_mixer),
7226 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7227 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7228 msm_routing_put_audio_mixer),
7229 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
7230 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7231 msm_routing_put_audio_mixer),
7232 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7233 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7234 msm_routing_put_audio_mixer),
7235 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7236 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7237 msm_routing_put_audio_mixer),
7238 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7239 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7240 msm_routing_put_audio_mixer),
7241 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7242 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7243 msm_routing_put_audio_mixer),
7244 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7245 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7246 msm_routing_put_audio_mixer),
7247 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7248 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7249 msm_routing_put_audio_mixer),
7250 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7251 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7252 msm_routing_put_audio_mixer),
7253 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7254 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7255 msm_routing_put_audio_mixer),
7256 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7257 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7258 msm_routing_put_audio_mixer),
7259 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7260 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7261 msm_routing_put_audio_mixer),
7262 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7263 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7264 msm_routing_put_audio_mixer),
7265 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7266 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7267 msm_routing_put_audio_mixer),
7268 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7269 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7270 msm_routing_put_audio_mixer),
7271 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7272 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7273 msm_routing_put_audio_mixer),
7274 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7275 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7276 msm_routing_put_audio_mixer),
7277 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7278 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7279 msm_routing_put_audio_mixer),
7280 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7281 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7282 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307283 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7284 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7285 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307286 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7287 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7288 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307289 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7290 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7291 msm_routing_put_audio_mixer),
7292 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7293 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7294 msm_routing_put_audio_mixer),
7295 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7296 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7297 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307298 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7299 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7300 msm_routing_put_audio_mixer),
7301 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7302 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7303 msm_routing_put_audio_mixer),
7304};
7305
7306static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7307 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7308 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7309 msm_routing_put_audio_mixer),
7310 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7311 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7312 msm_routing_put_audio_mixer),
7313 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7314 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7315 msm_routing_put_audio_mixer),
7316 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7317 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7318 msm_routing_put_audio_mixer),
7319 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7320 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7321 msm_routing_put_audio_mixer),
7322 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7323 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7324 msm_routing_put_audio_mixer),
7325 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7326 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7327 msm_routing_put_audio_mixer),
7328 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7329 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7330 msm_routing_put_audio_mixer),
7331 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7332 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7333 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307334 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7335 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7336 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307337 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7338 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7339 msm_routing_put_audio_mixer),
7340 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7341 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7342 msm_routing_put_audio_mixer),
7343 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7344 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7345 msm_routing_put_audio_mixer),
7346 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7347 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7348 msm_routing_put_audio_mixer),
7349 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7350 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7351 msm_routing_put_audio_mixer),
7352 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7353 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7354 msm_routing_put_audio_mixer),
7355 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7356 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7357 msm_routing_put_audio_mixer),
7358 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7359 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7360 msm_routing_put_audio_mixer),
7361 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7362 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7363 msm_routing_put_audio_mixer),
7364 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7365 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7366 msm_routing_put_audio_mixer),
7367 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7368 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7369 msm_routing_put_audio_mixer),
7370 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7371 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7372 msm_routing_put_audio_mixer),
7373 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7374 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7375 msm_routing_put_audio_mixer),
7376 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7377 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7378 msm_routing_put_audio_mixer),
7379 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7380 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7381 msm_routing_put_audio_mixer),
7382 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7383 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7384 msm_routing_put_audio_mixer),
7385 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7386 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7387 msm_routing_put_audio_mixer),
7388 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7389 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7390 msm_routing_put_audio_mixer),
7391 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7392 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7393 msm_routing_put_audio_mixer),
7394 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7395 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7396 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307397 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7398 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7399 msm_routing_put_audio_mixer),
7400 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7401 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7402 msm_routing_put_audio_mixer),
7403 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7404 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7405 msm_routing_put_audio_mixer),
7406 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7407 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7408 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307409 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7410 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7411 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307412};
7413
7414static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7415 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7416 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7417 msm_routing_put_audio_mixer),
7418 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7419 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7420 msm_routing_put_audio_mixer),
7421 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7422 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7423 msm_routing_put_audio_mixer),
7424 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7425 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7426 msm_routing_put_audio_mixer),
7427 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7428 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7429 msm_routing_put_audio_mixer),
7430 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7431 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7432 msm_routing_put_audio_mixer),
7433 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7434 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7435 msm_routing_put_audio_mixer),
7436 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7437 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7438 msm_routing_put_audio_mixer),
7439 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7440 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7441 msm_routing_put_audio_mixer),
7442 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7443 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7444 msm_routing_put_audio_mixer),
7445 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7446 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7447 msm_routing_put_audio_mixer),
7448 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7449 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7450 msm_routing_put_audio_mixer),
7451 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7452 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7453 msm_routing_put_audio_mixer),
7454 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7455 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7456 msm_routing_put_audio_mixer),
7457 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7458 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7459 msm_routing_put_audio_mixer),
7460 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7461 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7462 msm_routing_put_audio_mixer),
7463 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7464 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7465 msm_routing_put_audio_mixer),
7466 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7467 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7468 msm_routing_put_audio_mixer),
7469 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7470 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7471 msm_routing_put_audio_mixer),
7472 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7473 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7474 msm_routing_put_audio_mixer),
7475 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7476 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7477 msm_routing_put_audio_mixer),
7478 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7479 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7480 msm_routing_put_audio_mixer),
7481 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7482 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7483 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307484 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7485 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7486 msm_routing_put_audio_mixer),
7487 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7488 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7489 msm_routing_put_audio_mixer),
7490 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7491 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7492 msm_routing_put_audio_mixer),
7493 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7494 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7495 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307496 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7497 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7498 msm_routing_put_audio_mixer),
7499 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7500 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7501 msm_routing_put_audio_mixer),
7502 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7503 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7504 msm_routing_put_audio_mixer),
7505 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7506 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7507 msm_routing_put_audio_mixer),
7508 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7509 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7510 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307511 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7512 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7513 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307514 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7515 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7516 msm_routing_put_audio_mixer),
7517};
7518
7519static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7520 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7521 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7522 msm_routing_put_audio_mixer),
7523 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7524 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7525 msm_routing_put_audio_mixer),
7526 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7527 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7528 msm_routing_put_audio_mixer),
7529 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7530 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7531 msm_routing_put_audio_mixer),
7532 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7533 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7534 msm_routing_put_audio_mixer),
7535 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7536 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7537 msm_routing_put_audio_mixer),
7538 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7539 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7540 msm_routing_put_audio_mixer),
7541 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7542 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7543 msm_routing_put_audio_mixer),
7544 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7545 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7546 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307547 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7548 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7549 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307550 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7551 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7552 msm_routing_put_audio_mixer),
7553 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7554 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7555 msm_routing_put_audio_mixer),
7556 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7557 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7558 msm_routing_put_audio_mixer),
7559 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7560 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7561 msm_routing_put_audio_mixer),
7562 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7563 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7564 msm_routing_put_audio_mixer),
7565 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7566 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7567 msm_routing_put_audio_mixer),
7568 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7569 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7570 msm_routing_put_audio_mixer),
7571 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7572 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7573 msm_routing_put_audio_mixer),
7574 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7575 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7576 msm_routing_put_audio_mixer),
7577 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7578 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7579 msm_routing_put_audio_mixer),
7580 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7581 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7582 msm_routing_put_audio_mixer),
7583 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7584 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7585 msm_routing_put_audio_mixer),
7586 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7587 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7588 msm_routing_put_audio_mixer),
7589 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7590 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7591 msm_routing_put_audio_mixer),
7592 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7593 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7594 msm_routing_put_audio_mixer),
7595 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7596 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7597 msm_routing_put_audio_mixer),
7598 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7599 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7600 msm_routing_put_audio_mixer),
7601 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7602 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7603 msm_routing_put_audio_mixer),
7604 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7605 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7606 msm_routing_put_audio_mixer),
7607 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7608 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7609 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307610 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7611 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7612 msm_routing_put_audio_mixer),
7613 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7614 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7615 msm_routing_put_audio_mixer),
7616 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7617 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7618 msm_routing_put_audio_mixer),
7619 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7620 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7621 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307622 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7623 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7624 msm_routing_put_audio_mixer),
7625 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7626 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7627 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307628 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7629 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7630 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307631 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7632 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7633 msm_routing_put_audio_mixer),
7634 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7635 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7636 msm_routing_put_audio_mixer),
7637 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7638 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7639 msm_routing_put_audio_mixer),
7640};
7641
7642static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7643 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7644 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7645 msm_routing_put_audio_mixer),
7646 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7647 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7648 msm_routing_put_audio_mixer),
7649 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7650 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7651 msm_routing_put_audio_mixer),
7652 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7653 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7654 msm_routing_put_audio_mixer),
7655 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7656 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7657 msm_routing_put_audio_mixer),
7658 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7659 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7660 msm_routing_put_audio_mixer),
7661 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7662 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7663 msm_routing_put_audio_mixer),
7664 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7665 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7666 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307667 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7668 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7669 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307670 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7671 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7672 msm_routing_put_audio_mixer),
7673 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7674 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7675 msm_routing_put_audio_mixer),
7676 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7677 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7678 msm_routing_put_audio_mixer),
7679 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7680 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7681 msm_routing_put_audio_mixer),
7682 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7683 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7684 msm_routing_put_audio_mixer),
7685 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7686 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7687 msm_routing_put_audio_mixer),
7688 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7689 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7690 msm_routing_put_audio_mixer),
7691 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7692 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7693 msm_routing_put_audio_mixer),
7694 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7695 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7696 msm_routing_put_audio_mixer),
7697 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7698 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7699 msm_routing_put_audio_mixer),
7700 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7701 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7702 msm_routing_put_audio_mixer),
7703 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7704 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7705 msm_routing_put_audio_mixer),
7706 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7707 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7708 msm_routing_put_audio_mixer),
7709 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7710 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7711 msm_routing_put_audio_mixer),
7712 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7713 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7714 msm_routing_put_audio_mixer),
7715 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7716 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7717 msm_routing_put_audio_mixer),
7718 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7719 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7720 msm_routing_put_audio_mixer),
7721 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7722 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7723 msm_routing_put_audio_mixer),
7724 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7725 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7726 msm_routing_put_audio_mixer),
7727 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7728 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7729 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307730 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7731 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7732 msm_routing_put_audio_mixer),
7733 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7734 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7735 msm_routing_put_audio_mixer),
7736 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7737 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7738 msm_routing_put_audio_mixer),
7739 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7740 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7741 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307742 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7743 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7744 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307745 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7746 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7747 msm_routing_put_audio_mixer),
7748};
7749
7750static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7751 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7752 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7753 msm_routing_put_audio_mixer),
7754 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7755 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7756 msm_routing_put_audio_mixer),
7757 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7758 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7759 msm_routing_put_audio_mixer),
7760 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7761 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7762 msm_routing_put_audio_mixer),
7763 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7764 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7765 msm_routing_put_audio_mixer),
7766 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7767 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7768 msm_routing_put_audio_mixer),
7769 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7770 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7771 msm_routing_put_audio_mixer),
7772 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7773 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7774 msm_routing_put_audio_mixer),
7775 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7776 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7777 msm_routing_put_audio_mixer),
7778 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7779 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7780 msm_routing_put_audio_mixer),
7781 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7782 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7783 msm_routing_put_audio_mixer),
7784 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7785 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7786 msm_routing_put_audio_mixer),
7787 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7788 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7789 msm_routing_put_audio_mixer),
7790 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7791 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7792 msm_routing_put_audio_mixer),
7793 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7794 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7795 msm_routing_put_audio_mixer),
7796 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7797 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7798 msm_routing_put_audio_mixer),
7799 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7800 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7801 msm_routing_put_audio_mixer),
7802 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7803 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7804 msm_routing_put_audio_mixer),
7805 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7806 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7807 msm_routing_put_audio_mixer),
7808 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7809 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7810 msm_routing_put_audio_mixer),
7811 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7812 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7813 msm_routing_put_audio_mixer),
7814 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7815 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7816 msm_routing_put_audio_mixer),
7817 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7818 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7819 msm_routing_put_audio_mixer),
7820 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7821 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7822 msm_routing_put_audio_mixer),
7823 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7824 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7825 msm_routing_put_audio_mixer),
7826 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7827 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7828 msm_routing_put_audio_mixer),
7829 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7830 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7831 msm_routing_put_audio_mixer),
7832 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7833 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7834 msm_routing_put_audio_mixer),
7835 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7836 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7837 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307838 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7839 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7840 msm_routing_put_audio_mixer),
7841 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7842 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7843 msm_routing_put_audio_mixer),
7844 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7845 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7846 msm_routing_put_audio_mixer),
7847 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7848 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7849 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307850 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7851 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7852 msm_routing_put_audio_mixer),
7853 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7854 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7855 msm_routing_put_audio_mixer),
7856};
7857
Asish Bhattacharya34504582017-08-08 12:55:01 +05307858static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7859 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7860 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7861 msm_routing_put_audio_mixer),
7862 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7863 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7864 msm_routing_put_audio_mixer),
7865 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7866 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7867 msm_routing_put_audio_mixer),
7868 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7869 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7870 msm_routing_put_audio_mixer),
7871 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7872 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7873 msm_routing_put_audio_mixer),
7874 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7875 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7876 msm_routing_put_audio_mixer),
7877 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7878 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7879 msm_routing_put_audio_mixer),
7880 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7881 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7882 msm_routing_put_audio_mixer),
7883 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7884 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7885 msm_routing_put_audio_mixer),
7886 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7887 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7888 msm_routing_put_audio_mixer),
7889 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7890 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7891 msm_routing_put_audio_mixer),
7892 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7893 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7894 msm_routing_put_audio_mixer),
7895 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7896 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7897 msm_routing_put_audio_mixer),
7898 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7899 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7900 msm_routing_put_audio_mixer),
7901 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7902 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7903 msm_routing_put_audio_mixer),
7904 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7905 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7906 msm_routing_put_audio_mixer),
7907 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7908 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7909 msm_routing_put_audio_mixer),
7910 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7911 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7912 msm_routing_put_audio_mixer),
7913 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7914 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7915 msm_routing_put_audio_mixer),
7916 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7917 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7918 msm_routing_put_audio_mixer),
7919 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7920 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7921 msm_routing_put_audio_mixer),
7922 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7923 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7924 msm_routing_put_audio_mixer),
7925 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7926 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7927 msm_routing_put_audio_mixer),
7928 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7929 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7930 msm_routing_put_audio_mixer),
7931 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7932 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7933 msm_routing_put_audio_mixer),
7934 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7935 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7936 msm_routing_put_audio_mixer),
7937 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7938 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7939 msm_routing_put_audio_mixer),
7940 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7941 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7942 msm_routing_put_audio_mixer),
7943 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7944 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7945 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307946 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7947 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7948 msm_routing_put_audio_mixer),
Asish Bhattacharya34504582017-08-08 12:55:01 +05307949 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7950 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7951 msm_routing_put_audio_mixer),
7952 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7953 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7954 msm_routing_put_audio_mixer),
7955 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7956 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7957 msm_routing_put_audio_mixer),
7958 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7959 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7960 msm_routing_put_audio_mixer),
7961 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7962 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7963 msm_routing_put_audio_mixer),
7964 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7965 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7966 msm_routing_put_audio_mixer),
7967};
7968
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307969static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7970 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7971 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7972 msm_routing_put_audio_mixer),
7973 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7974 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7975 msm_routing_put_audio_mixer),
7976 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7977 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7978 msm_routing_put_audio_mixer),
7979 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7980 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7981 msm_routing_put_audio_mixer),
7982 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7983 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7984 msm_routing_put_audio_mixer),
7985 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7986 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7987 msm_routing_put_audio_mixer),
7988 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7989 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7990 msm_routing_put_audio_mixer),
7991 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7992 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7993 msm_routing_put_audio_mixer),
7994 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7995 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7996 msm_routing_put_audio_mixer),
7997 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7998 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7999 msm_routing_put_audio_mixer),
8000 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
8001 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8002 msm_routing_put_audio_mixer),
8003 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
8004 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8005 msm_routing_put_audio_mixer),
8006 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
8007 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8008 msm_routing_put_audio_mixer),
8009 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
8010 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8011 msm_routing_put_audio_mixer),
8012 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
8013 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8014 msm_routing_put_audio_mixer),
8015 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
8016 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8017 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308018 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
8019 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8020 msm_routing_put_audio_mixer),
8021 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
8022 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8023 msm_routing_put_audio_mixer),
8024 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
8025 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8026 msm_routing_put_audio_mixer),
8027 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
8028 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8029 msm_routing_put_audio_mixer),
Sachin Mohan Gadagd1b8fbc2018-07-20 15:50:17 +05308030 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
8031 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8032 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308033};
8034
Laxminath Kasam38070be2017-08-17 18:21:59 +05308035static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
8036 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8037 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8038 msm_routing_put_audio_mixer),
8039 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8040 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8041 msm_routing_put_audio_mixer),
8042 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8043 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8044 msm_routing_put_audio_mixer),
8045 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8046 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8047 msm_routing_put_audio_mixer),
8048 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8049 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8050 msm_routing_put_audio_mixer),
8051 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8052 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8053 msm_routing_put_audio_mixer),
8054 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8055 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8056 msm_routing_put_audio_mixer),
8057 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
8058 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8059 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07008060 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8061 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8062 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05308063 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
8064 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8065 msm_routing_put_audio_mixer),
8066 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
8067 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8068 msm_routing_put_audio_mixer),
8069 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
8070 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8071 msm_routing_put_audio_mixer),
8072 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
8073 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8074 msm_routing_put_audio_mixer),
8075 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
8076 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8077 msm_routing_put_audio_mixer),
8078 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
8079 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8080 msm_routing_put_audio_mixer),
8081 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
8082 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8083 msm_routing_put_audio_mixer),
8084 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
8085 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8086 msm_routing_put_audio_mixer),
8087 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
8088 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8089 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07008090 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
8091 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8092 msm_routing_put_audio_mixer),
8093 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
Raja Mallik425e1d32018-05-20 19:21:10 +05308094 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8095 msm_routing_put_audio_mixer),
8096 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
Vikram Panduranga016c49f2017-09-11 15:15:56 -07008097 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8098 msm_routing_put_audio_mixer),
8099 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8100 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8101 msm_routing_put_audio_mixer),
8102 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8103 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8104 msm_routing_put_audio_mixer),
8105 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8106 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8107 msm_routing_put_audio_mixer),
8108 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8109 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8110 msm_routing_put_audio_mixer),
8111 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
8112 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8113 msm_routing_put_audio_mixer),
8114 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8115 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8116 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05308117};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308118static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
8119 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8120 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8121 msm_routing_put_audio_mixer),
8122 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8123 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8124 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308125 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8126 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8127 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308128 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8129 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8130 msm_routing_put_audio_mixer),
8131 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8132 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8133 msm_routing_put_audio_mixer),
8134 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8135 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8136 msm_routing_put_audio_mixer),
8137 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8138 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8139 msm_routing_put_audio_mixer),
8140 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8141 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8142 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008143 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8144 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8145 msm_routing_put_audio_mixer),
8146 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8147 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8148 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308149};
8150
8151static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
8152 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8153 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8154 msm_routing_put_audio_mixer),
8155 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8156 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8157 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308158 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8159 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8160 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008161 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8162 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8163 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308164 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8165 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8166 msm_routing_put_audio_mixer),
8167 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8168 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8169 msm_routing_put_audio_mixer),
8170 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8171 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8172 msm_routing_put_audio_mixer),
8173 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8174 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8175 msm_routing_put_audio_mixer),
8176 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8177 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8178 msm_routing_put_audio_mixer),
8179 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8180 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8181 msm_routing_put_audio_mixer),
8182};
8183
8184static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
8185 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8186 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8187 msm_routing_put_audio_mixer),
8188 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8189 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8190 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308191 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8192 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8193 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308194 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8195 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8196 msm_routing_put_audio_mixer),
8197 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8198 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8199 msm_routing_put_audio_mixer),
8200 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8201 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8202 msm_routing_put_audio_mixer),
8203 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8204 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8205 msm_routing_put_audio_mixer),
8206 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8207 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8208 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008209 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8210 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8211 msm_routing_put_audio_mixer),
8212 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8213 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8214 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308215};
8216
8217static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
8218 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8219 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8220 msm_routing_put_audio_mixer),
8221 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
8222 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8223 msm_routing_put_audio_mixer),
8224 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8225 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8226 msm_routing_put_audio_mixer),
8227 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8228 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8229 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308230 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
8231 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8232 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308233 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
8234 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8235 msm_routing_put_audio_mixer),
8236 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
8237 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8238 msm_routing_put_audio_mixer),
8239 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
8240 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8241 msm_routing_put_audio_mixer),
8242 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
8243 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8244 msm_routing_put_audio_mixer),
8245 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
8246 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8247 msm_routing_put_audio_mixer),
8248 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
8249 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8250 msm_routing_put_audio_mixer),
8251 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
8252 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8253 msm_routing_put_audio_mixer),
8254 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
8255 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8256 msm_routing_put_audio_mixer),
8257 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
8258 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8259 msm_routing_put_audio_mixer),
8260 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
8261 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8262 msm_routing_put_audio_mixer),
8263 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
8264 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8265 msm_routing_put_audio_mixer),
8266 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
8267 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8268 msm_routing_put_audio_mixer),
8269 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
8270 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8271 msm_routing_put_audio_mixer),
8272 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
8273 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8274 msm_routing_put_audio_mixer),
8275 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
8276 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8277 msm_routing_put_audio_mixer),
8278 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
8279 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8280 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308281 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
8282 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8283 msm_routing_put_audio_mixer),
8284 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
8285 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8286 msm_routing_put_audio_mixer),
8287 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
8288 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8289 msm_routing_put_audio_mixer),
8290 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
8291 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8292 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308293};
8294
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308295static const struct snd_kcontrol_new mmul28_mixer_controls[] = {
8296 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8297 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8298 msm_routing_put_audio_mixer),
8299 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8300 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8301 msm_routing_put_audio_mixer),
8302 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8303 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8304 msm_routing_put_audio_mixer),
8305 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8306 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8307 msm_routing_put_audio_mixer),
8308 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8309 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8310 msm_routing_put_audio_mixer),
8311 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8312 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8313 msm_routing_put_audio_mixer),
8314 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8315 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8316 msm_routing_put_audio_mixer),
8317 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8318 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8319 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008320 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8321 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8322 msm_routing_put_audio_mixer),
8323 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8324 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8325 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308326};
8327
8328static const struct snd_kcontrol_new mmul29_mixer_controls[] = {
8329 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8330 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8331 msm_routing_put_audio_mixer),
8332 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8333 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8334 msm_routing_put_audio_mixer),
8335 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8336 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8337 msm_routing_put_audio_mixer),
8338 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8339 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8340 msm_routing_put_audio_mixer),
8341 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8342 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8343 msm_routing_put_audio_mixer),
8344 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8345 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8346 msm_routing_put_audio_mixer),
8347 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8348 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8349 msm_routing_put_audio_mixer),
8350 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8351 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8352 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008353 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8354 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8355 msm_routing_put_audio_mixer),
8356 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8357 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8358 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308359};
8360
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308361static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308362 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
8363 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8364 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308365 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
8366 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8367 msm_routing_put_voice_mixer),
8368 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
8369 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8370 msm_routing_put_voice_mixer),
8371 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
8372 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8373 msm_routing_put_voice_mixer),
8374 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
8375 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8376 msm_routing_put_voice_mixer),
8377};
8378
8379static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308380 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
8381 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8382 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308383 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
8384 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8385 msm_routing_put_voice_mixer),
8386 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
8387 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8388 msm_routing_put_voice_mixer),
8389};
8390
8391static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308392 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8393 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8394 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308395 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8396 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8397 msm_routing_put_voice_mixer),
8398 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8399 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8400 msm_routing_put_voice_mixer),
8401 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8402 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8403 msm_routing_put_voice_mixer),
8404 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8405 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8406 msm_routing_put_voice_mixer),
8407};
8408
8409static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308410 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8411 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8412 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308413 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8414 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8415 msm_routing_put_voice_mixer),
8416 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8417 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8418 msm_routing_put_voice_mixer),
8419 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8420 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8421 msm_routing_put_voice_mixer),
8422 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8423 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8424 msm_routing_put_voice_mixer),
8425};
8426
8427static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308428 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8429 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8430 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308431 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8432 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8433 msm_routing_put_voice_mixer),
8434 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8435 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8436 msm_routing_put_voice_mixer),
8437 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8438 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8439 msm_routing_put_voice_mixer),
8440 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8441 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8442 msm_routing_put_voice_mixer),
8443};
8444
8445static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308446 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8447 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8448 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308449 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8450 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8451 msm_routing_put_voice_mixer),
8452 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8453 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8454 msm_routing_put_voice_mixer),
8455 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8456 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8457 msm_routing_put_voice_mixer),
8458 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8459 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8460 msm_routing_put_voice_mixer),
8461};
8462
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008463static const struct snd_kcontrol_new display_port_rx_voice_mixer_controls[] = {
8464 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8465 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8466 msm_routing_put_voice_mixer),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008467 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8468 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8469 msm_routing_put_voice_mixer),
8470 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8471 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8472 msm_routing_put_voice_mixer),
8473 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8474 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8475 msm_routing_put_voice_mixer),
8476 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8477 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8478 msm_routing_put_voice_mixer),
8479};
8480
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308481static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308482 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8483 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8484 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308485 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8486 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8487 msm_routing_put_voice_mixer),
8488 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8489 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8490 msm_routing_put_voice_mixer),
8491 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8492 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8493 msm_routing_put_voice_mixer),
8494 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8495 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8496 msm_routing_put_voice_mixer),
8497};
8498
8499static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308500 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8501 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8502 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308503 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8504 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8505 msm_routing_put_voice_mixer),
8506 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8507 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8508 msm_routing_put_voice_mixer),
8509 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8510 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8511 msm_routing_put_voice_mixer),
8512 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8513 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8514 msm_routing_put_voice_mixer),
8515};
8516
8517static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308518 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8519 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8520 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308521 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8522 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8523 msm_routing_put_voice_mixer),
8524 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8525 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8526 msm_routing_put_voice_mixer),
8527 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8528 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8529 msm_routing_put_voice_mixer),
8530 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8531 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8532 msm_routing_put_voice_mixer),
8533};
8534
8535static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8536 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8537 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8538 msm_routing_put_voice_mixer),
8539 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8540 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8541 msm_routing_put_voice_mixer),
8542 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8543 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8544 msm_routing_put_voice_mixer),
8545 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8546 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8547 msm_routing_put_voice_mixer),
8548 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8549 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8550 msm_routing_put_voice_mixer),
8551};
8552
8553static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8554 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8555 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8556 msm_routing_put_voice_mixer),
8557 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8558 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8559 msm_routing_put_voice_mixer),
8560 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8561 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8562 msm_routing_put_voice_mixer),
8563 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8564 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8565 msm_routing_put_voice_mixer),
8566 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8567 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8568 msm_routing_put_voice_mixer),
8569};
8570
8571static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308572 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8573 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8574 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308575 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8576 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8577 msm_routing_put_voice_mixer),
8578 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8579 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8580 msm_routing_put_voice_mixer),
8581 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8582 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8583 msm_routing_put_voice_mixer),
8584 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8585 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8586 msm_routing_put_voice_mixer),
8587};
8588
8589static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308590 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8591 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8592 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308593 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8594 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8595 msm_routing_put_voice_mixer),
8596 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8597 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8598 msm_routing_put_voice_mixer),
8599 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8600 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8601 msm_routing_put_voice_mixer),
8602 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8603 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8604 msm_routing_put_voice_mixer),
8605};
8606
8607static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308608 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8609 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8610 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308611 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8612 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8613 msm_routing_put_voice_mixer),
8614 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8615 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8616 msm_routing_put_voice_mixer),
8617 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8618 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8619 msm_routing_put_voice_mixer),
8620 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8621 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8622 msm_routing_put_voice_mixer),
8623};
8624
8625static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308626 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8627 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8628 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308629 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8630 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8631 msm_routing_put_voice_mixer),
8632 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8633 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8634 msm_routing_put_voice_mixer),
8635 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8636 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8637 msm_routing_put_voice_mixer),
8638 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8639 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8640 msm_routing_put_voice_mixer),
8641};
8642
8643static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308644 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8645 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8646 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308647 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8648 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8649 msm_routing_put_voice_mixer),
8650 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8651 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8652 msm_routing_put_voice_mixer),
8653 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8654 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8655 msm_routing_put_voice_mixer),
8656 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8657 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8658 msm_routing_put_voice_mixer),
8659};
8660
8661static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308662 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8663 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8664 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308665 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8666 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8667 msm_routing_put_voice_mixer),
8668 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8669 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8670 msm_routing_put_voice_mixer),
8671 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8672 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8673 msm_routing_put_voice_mixer),
8674 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8675 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8676 msm_routing_put_voice_mixer),
8677};
8678
8679static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308680 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8681 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8682 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308683 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8684 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8685 msm_routing_put_voice_mixer),
8686 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8687 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8688 msm_routing_put_voice_mixer),
8689 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8690 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8691 msm_routing_put_voice_mixer),
8692 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8693 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8694 msm_routing_put_voice_mixer),
8695};
8696
8697static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308698 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8699 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8700 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308701 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8702 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8703 msm_routing_put_voice_mixer),
8704 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8705 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8706 msm_routing_put_voice_mixer),
8707 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8708 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8709 msm_routing_put_voice_mixer),
8710 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8711 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8712 msm_routing_put_voice_mixer),
8713};
8714
Rohit Kumara5077932017-09-10 22:05:05 +05308715static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Rohit Kumara5077932017-09-10 22:05:05 +05308716 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8717 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8718 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308719 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8720 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8721 msm_routing_put_voice_mixer),
8722 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8723 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8724 msm_routing_put_voice_mixer),
8725 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8726 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8727 msm_routing_put_voice_mixer),
8728 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8729 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8730 msm_routing_put_voice_mixer),
8731};
8732
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308733static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308734 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8735 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8736 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308737 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8738 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8739 msm_routing_put_voice_mixer),
8740 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8741 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8742 msm_routing_put_voice_mixer),
8743 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8744 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8745 msm_routing_put_voice_mixer),
8746 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8747 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8748 msm_routing_put_voice_mixer),
8749};
8750
Raja Mallik321d5712018-05-04 17:22:11 +05308751static const struct snd_kcontrol_new pri_tdm_rx_0_voice_mixer_controls[] = {
8752 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8753 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8754 msm_routing_put_voice_mixer),
8755 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8756 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8757 msm_routing_put_voice_stub_mixer),
8758 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8759 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8760 msm_routing_put_voice_stub_mixer),
8761 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8762 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8763 msm_routing_put_voice_mixer),
8764 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8765 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8766 msm_routing_put_voice_mixer),
8767 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8768 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8769 msm_routing_put_voice_mixer),
8770 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8771 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8772 msm_routing_put_voice_mixer),
8773 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8774 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8775 msm_routing_put_voice_mixer),
8776};
8777
8778static const struct snd_kcontrol_new pri_tdm_rx_1_voice_mixer_controls[] = {
8779 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8780 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8781 msm_routing_put_voice_mixer),
8782 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8783 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8784 msm_routing_put_voice_stub_mixer),
8785 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8786 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8787 msm_routing_put_voice_stub_mixer),
8788 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8789 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8790 msm_routing_put_voice_mixer),
8791 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8792 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8793 msm_routing_put_voice_mixer),
8794 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8795 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8796 msm_routing_put_voice_mixer),
8797 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8798 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8799 msm_routing_put_voice_mixer),
8800 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8801 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8802 msm_routing_put_voice_mixer),
8803};
8804
8805static const struct snd_kcontrol_new pri_tdm_rx_2_voice_mixer_controls[] = {
8806 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8807 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8808 msm_routing_put_voice_mixer),
8809 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8810 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8811 msm_routing_put_voice_stub_mixer),
8812 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8813 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8814 msm_routing_put_voice_stub_mixer),
8815 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8816 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8817 msm_routing_put_voice_mixer),
8818 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8819 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8820 msm_routing_put_voice_mixer),
8821 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8822 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8823 msm_routing_put_voice_mixer),
8824 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8825 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8826 msm_routing_put_voice_mixer),
8827 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8828 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8829 msm_routing_put_voice_mixer),
8830};
8831
8832static const struct snd_kcontrol_new pri_tdm_rx_3_voice_mixer_controls[] = {
8833 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8834 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8835 msm_routing_put_voice_mixer),
8836 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8837 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8838 msm_routing_put_voice_stub_mixer),
8839 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8840 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8841 msm_routing_put_voice_stub_mixer),
8842 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8843 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8844 msm_routing_put_voice_mixer),
8845 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8846 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8847 msm_routing_put_voice_mixer),
8848 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8849 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8850 msm_routing_put_voice_mixer),
8851 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8852 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8853 msm_routing_put_voice_mixer),
8854 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8855 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8856 msm_routing_put_voice_mixer),
8857};
8858
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308859static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308860 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8861 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8862 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308863 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8864 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8865 msm_routing_put_voice_mixer),
8866 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8867 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8868 msm_routing_put_voice_mixer),
8869 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8870 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8871 msm_routing_put_voice_mixer),
8872 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8873 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8874 msm_routing_put_voice_mixer),
8875};
8876
8877static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308878 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8879 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8880 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308881 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8882 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8883 msm_routing_put_voice_mixer),
8884 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8885 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8886 msm_routing_put_voice_mixer),
8887 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8888 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8889 msm_routing_put_voice_mixer),
8890 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8891 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8892 msm_routing_put_voice_mixer),
8893};
8894
8895static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8896 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8897 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8898 msm_routing_put_voice_mixer),
8899};
8900
8901static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008902 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_EXTPROC_RX,
8903 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8904 msm_routing_put_voice_mixer),
8905 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_EXTPROC_RX,
8906 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8907 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308908};
8909
8910static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008911 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8912 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8913 msm_routing_put_voice_mixer),
8914 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8915 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8916 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308917};
8918
8919static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008920 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8921 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8922 msm_routing_put_voice_mixer),
8923 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8924 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8925 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308926};
8927
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308928static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8929 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8930 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8931 msm_routing_put_voice_mixer),
8932 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8933 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8934 msm_routing_put_voice_mixer),
8935 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8936 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8937 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8938 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8939 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8940 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8941 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8942 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8943 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8944 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8945 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8946 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8947 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8948 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8949 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8950 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8951 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8952 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8953 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8954 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8955 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308956 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
8957 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8958 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308959 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8960 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8961 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8962 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8963 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8964 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8965 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8966 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8967 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8968 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8969 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8970 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8971 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8972 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8973 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8974 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8975 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8976 msm_routing_put_voice_mixer),
8977 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8978 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8979 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05308980 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode1",
8981 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE1,
8982 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308983 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode1",
8984 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8985 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8986 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode1",
8987 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8988 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308989};
8990
8991static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8992 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8993 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8994 msm_routing_put_voice_mixer),
8995 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8996 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8997 msm_routing_put_voice_mixer),
8998 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8999 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9000 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9001 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
9002 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9003 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9004 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
9005 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
9006 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9007 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
9008 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
9009 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9010 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
9011 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9012 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9013 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
9014 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9015 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9016 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
9017 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9018 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309019 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
9020 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9021 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309022 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
9023 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
9024 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9025 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
9026 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
9027 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05309028 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode2",
9029 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE2,
9030 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309031 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
9032 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
9033 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9034 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
9035 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9036 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9037 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
9038 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9039 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9040 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
9041 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9042 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05309043 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode2",
9044 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
9045 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9046 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode2",
9047 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
9048 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309049};
9050
9051static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
9052 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
9053 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9054 msm_routing_put_voice_mixer),
9055 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
9056 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9057 msm_routing_put_voice_mixer),
9058 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9059 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9060 msm_routing_put_voice_mixer),
9061 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
9062 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9063 msm_routing_put_voice_mixer),
9064 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
9065 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9066 msm_routing_put_voice_mixer),
9067 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
9068 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9069 msm_routing_put_voice_mixer),
9070 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9071 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9072 msm_routing_put_voice_mixer),
9073 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9074 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9075 msm_routing_put_voice_mixer),
9076 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9077 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9078 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309079 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9080 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9081 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309082 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
9083 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9084 msm_routing_put_voice_mixer),
9085 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9086 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9087 msm_routing_put_voice_mixer),
9088 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
9089 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9090 msm_routing_put_voice_mixer),
9091 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9092 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9093 msm_routing_put_voice_mixer),
9094 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9095 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9096 msm_routing_put_voice_mixer),
9097 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
9098 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9099 msm_routing_put_voice_mixer),
Bala Kishore Pati38de3862018-06-15 17:38:40 +05309100 SOC_SINGLE_EXT("PRI_TDM_TX_3_Voip", MSM_BACKEND_DAI_PRI_TDM_TX_3,
9101 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9102 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309103};
9104
9105static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
9106 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9107 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9108 msm_routing_put_voice_stub_mixer),
9109 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
9110 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9111 msm_routing_put_voice_stub_mixer),
9112 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9113 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9114 msm_routing_put_voice_stub_mixer),
9115 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9116 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9117 msm_routing_put_voice_stub_mixer),
9118 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
9119 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9120 msm_routing_put_voice_stub_mixer),
9121 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9122 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9123 msm_routing_put_voice_stub_mixer),
9124 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9125 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9126 msm_routing_put_voice_stub_mixer),
9127 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
9128 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9129 msm_routing_put_voice_stub_mixer),
9130 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9131 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9132 msm_routing_put_voice_stub_mixer),
9133 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9134 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9135 msm_routing_put_voice_stub_mixer),
9136 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9137 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9138 msm_routing_put_voice_stub_mixer),
9139 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9140 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9141 msm_routing_put_voice_stub_mixer),
9142 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9143 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9144 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309145 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9146 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9147 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309148 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9149 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9150 msm_routing_put_voice_stub_mixer),
9151 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9152 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9153 msm_routing_put_voice_stub_mixer),
9154 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9155 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9156 msm_routing_put_voice_stub_mixer),
9157 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9158 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9159 msm_routing_put_voice_stub_mixer),
9160 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9161 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9162 msm_routing_put_voice_stub_mixer),
9163};
9164
9165static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
9166 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9167 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9168 msm_routing_put_voice_stub_mixer),
9169 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9170 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9171 msm_routing_put_voice_stub_mixer),
9172 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9173 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9174 msm_routing_put_voice_stub_mixer),
9175 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9176 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9177 msm_routing_put_voice_stub_mixer),
9178 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9179 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9180 msm_routing_put_voice_stub_mixer),
9181 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9182 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9183 msm_routing_put_voice_stub_mixer),
9184 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9185 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9186 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309187 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9188 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9189 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309190 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9191 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9192 msm_routing_put_voice_stub_mixer),
9193 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9194 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9195 msm_routing_put_voice_stub_mixer),
9196 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9197 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9198 msm_routing_put_voice_stub_mixer),
9199 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9200 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9201 msm_routing_put_voice_stub_mixer),
9202 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9203 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9204 msm_routing_put_voice_stub_mixer),
9205 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9206 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9207 msm_routing_put_voice_stub_mixer),
9208 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9209 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9210 msm_routing_put_voice_stub_mixer),
9211};
9212
9213static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
9214 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9215 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9216 msm_routing_put_voice_stub_mixer),
9217 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9218 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9219 msm_routing_put_voice_stub_mixer),
9220 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9221 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9222 msm_routing_put_voice_stub_mixer),
9223 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9224 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9225 msm_routing_put_voice_stub_mixer),
9226 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9227 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9228 msm_routing_put_voice_stub_mixer),
9229 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9230 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9231 msm_routing_put_voice_stub_mixer),
9232 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9233 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9234 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309235 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9236 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9237 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309238 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9239 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9240 msm_routing_put_voice_stub_mixer),
9241 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9242 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9243 msm_routing_put_voice_stub_mixer),
9244 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9245 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9246 msm_routing_put_voice_stub_mixer),
9247 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9248 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9249 msm_routing_put_voice_stub_mixer),
9250 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9251 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9252 msm_routing_put_voice_stub_mixer),
9253 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9254 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9255 msm_routing_put_voice_stub_mixer),
9256 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9257 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9258 msm_routing_put_voice_stub_mixer),
9259};
9260
9261static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
9262 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
9263 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9264 msm_routing_put_voice_mixer),
9265 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9266 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9267 msm_routing_put_voice_mixer),
9268 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
9269 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
9270 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9271 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
9272 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9273 msm_routing_put_voice_mixer),
9274 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
9275 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9276 msm_routing_put_voice_mixer),
9277 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9278 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9279 msm_routing_put_voice_mixer),
9280 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9281 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9282 msm_routing_put_voice_mixer),
9283 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9284 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9285 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309286 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9287 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9288 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309289 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
9290 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9291 msm_routing_put_voice_mixer),
9292 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
9293 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9294 msm_routing_put_voice_mixer),
9295 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9296 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9297 msm_routing_put_voice_mixer),
9298 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
9299 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9300 msm_routing_put_voice_mixer),
9301 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9302 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9303 msm_routing_put_voice_mixer),
9304 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9305 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9306 msm_routing_put_voice_mixer),
9307 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
9308 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9309 msm_routing_put_voice_mixer),
9310};
9311
9312static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
9313 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9314 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9315 msm_routing_put_port_mixer),
9316 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9317 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9318 msm_routing_put_port_mixer),
9319 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9320 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9321 msm_routing_put_port_mixer),
9322 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9323 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9324 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309325 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9326 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9327 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309328 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9329 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9330 msm_routing_put_port_mixer),
9331 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9332 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9333 msm_routing_put_port_mixer),
9334 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9335 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9336 msm_routing_put_port_mixer),
9337 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9338 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9339 msm_routing_put_port_mixer),
9340 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9341 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9342 msm_routing_put_port_mixer),
9343};
9344
9345static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
9346 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9347 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9348 msm_routing_put_port_mixer),
9349 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9350 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9351 msm_routing_put_port_mixer),
9352 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9353 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9354 msm_routing_put_port_mixer),
9355 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9356 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9357 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309358 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9359 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9360 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309361 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9362 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9363 msm_routing_put_port_mixer),
9364 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9365 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9366 msm_routing_put_port_mixer),
9367 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9368 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9369 msm_routing_put_port_mixer),
9370 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9371 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9372 msm_routing_put_port_mixer),
9373 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9374 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9375 msm_routing_put_port_mixer),
9376};
9377
9378static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
9379 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9380 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9381 msm_routing_put_port_mixer),
9382 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9383 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9384 msm_routing_put_port_mixer),
9385 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9386 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9387 msm_routing_put_port_mixer),
9388 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9389 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9390 msm_routing_put_port_mixer),
9391 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9392 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9393 msm_routing_put_port_mixer),
9394 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9395 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9396 msm_routing_put_port_mixer),
9397 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9398 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9399 msm_routing_put_port_mixer),
9400 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9401 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9402 msm_routing_put_port_mixer),
9403 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9404 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9405 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309406 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9407 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9408 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309409 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9410 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9411 msm_routing_put_port_mixer),
9412 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9413 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9414 msm_routing_put_port_mixer),
9415 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9416 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9417 msm_routing_put_port_mixer),
9418 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9419 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9420 msm_routing_put_port_mixer),
9421 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9422 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9423 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309424 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9425 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9426 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309427 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9428 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9429 msm_routing_put_port_mixer),
9430 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9431 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9432 msm_routing_put_port_mixer),
9433 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9434 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9435 msm_routing_put_port_mixer),
9436 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9437 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9438 msm_routing_put_port_mixer),
9439 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9440 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9441 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309442 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9443 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9444 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309445};
9446
9447static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
9448 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9449 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9450 msm_routing_put_port_mixer),
9451 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9452 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9453 msm_routing_put_port_mixer),
9454 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9455 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9456 msm_routing_put_port_mixer),
9457 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9458 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9459 msm_routing_put_port_mixer),
9460 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
9461 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
9462 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009463 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9464 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9465 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309466};
9467
9468static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
9469 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9470 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9471 msm_routing_put_port_mixer),
9472 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9473 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9474 msm_routing_put_port_mixer),
9475 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9476 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9477 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009478 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9479 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9480 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309481};
9482
9483static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
9484 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9485 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9486 msm_routing_put_port_mixer),
9487 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9488 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9489 msm_routing_put_port_mixer),
9490 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9491 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9492 msm_routing_put_port_mixer),
9493};
9494
9495static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
9496 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9497 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9498 msm_routing_put_port_mixer),
9499 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9500 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9501 msm_routing_put_port_mixer),
9502 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9503 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9504 msm_routing_put_port_mixer),
9505};
9506
Rohit Kumara5077932017-09-10 22:05:05 +05309507static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
9508 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9509 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9510 msm_routing_put_port_mixer),
9511 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9512 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9513 msm_routing_put_port_mixer),
9514 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9515 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9516 msm_routing_put_port_mixer),
9517};
9518
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309519static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9520 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9521 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9522 msm_routing_put_port_mixer),
9523 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9524 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9525 msm_routing_put_port_mixer),
9526 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9527 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9528 msm_routing_put_port_mixer),
9529 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9530 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9531 msm_routing_put_port_mixer),
9532 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9533 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9534 msm_routing_put_port_mixer),
9535 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9536 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9537 msm_routing_put_port_mixer),
9538};
9539
9540static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9541 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9542 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9543 msm_routing_put_port_mixer),
9544 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9545 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9546 msm_routing_put_port_mixer),
9547 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9548 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9549 msm_routing_put_port_mixer),
9550 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9551 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9552 msm_routing_put_port_mixer),
9553 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9554 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9555 msm_routing_put_port_mixer),
9556};
9557
9558static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9559 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9560 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9561 msm_routing_put_port_mixer),
9562 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9563 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9564 msm_routing_put_port_mixer),
9565 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9566 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9567 msm_routing_put_port_mixer),
9568 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9569 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9570 msm_routing_put_port_mixer),
9571 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9572 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9573 msm_routing_put_port_mixer),
9574 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9575 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9576 msm_routing_put_port_mixer),
9577 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9578 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9579 msm_routing_put_port_mixer),
9580 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9581 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9582 msm_routing_put_port_mixer),
9583 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9584 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9585 msm_routing_put_port_mixer),
9586 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9587 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9588 msm_routing_put_port_mixer),
9589 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9590 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9591 msm_routing_put_port_mixer),
9592 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9593 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9594 msm_routing_put_port_mixer),
9595};
9596
9597static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9598 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9599 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9600 msm_routing_put_port_mixer),
9601 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9602 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9603 msm_routing_put_port_mixer),
9604};
9605
9606static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9607 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9608 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9609 msm_routing_put_port_mixer),
9610 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9611 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9612 msm_routing_put_port_mixer),
9613};
9614
9615
9616static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9617 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9618 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9619 msm_routing_put_port_mixer),
9620};
9621
9622static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9623 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9624 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9625 msm_routing_put_port_mixer),
9626};
9627
9628static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9629 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9630 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9631 msm_routing_put_port_mixer),
9632};
9633
9634static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9635 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9636 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9637 msm_routing_put_port_mixer),
9638 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9639 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9640 msm_routing_put_port_mixer),
9641};
9642
9643static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9644 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9645 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9646 msm_routing_put_port_mixer),
9647 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9648 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9649 msm_routing_put_port_mixer),
9650 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9651 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9652 msm_routing_put_port_mixer),
9653 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9654 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9655 msm_routing_put_port_mixer),
9656 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9657 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9658 msm_routing_put_port_mixer),
9659 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9660 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9661 msm_routing_put_port_mixer),
9662 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9663 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9664 msm_routing_put_port_mixer),
9665 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9666 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9667 msm_routing_put_port_mixer),
9668 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9669 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9670 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009671 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9672 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9673 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309674};
9675
9676static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9677 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9678 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9679 msm_routing_put_port_mixer),
9680};
9681
9682static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9683 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9684 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9685 msm_routing_put_port_mixer),
9686 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9687 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9688 msm_routing_put_port_mixer),
9689 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9690 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9691 msm_routing_put_port_mixer),
9692 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9693 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9694 msm_routing_put_port_mixer),
9695 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9696 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9697 msm_routing_put_port_mixer),
9698 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9699 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9700 msm_routing_put_port_mixer),
9701 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9702 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9703 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309704 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9705 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9706 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309707 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9708 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9709 msm_routing_put_port_mixer),
9710};
9711
Rohit Kumara5077932017-09-10 22:05:05 +05309712static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9713 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9714 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9715 msm_routing_put_port_mixer),
9716 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9717 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9718 msm_routing_put_port_mixer),
9719 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9720 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9721 msm_routing_put_port_mixer),
9722 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9723 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9724 msm_routing_put_port_mixer),
9725 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9726 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9727 msm_routing_put_port_mixer),
9728 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9729 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9730 msm_routing_put_port_mixer),
9731 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9732 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9733 msm_routing_put_port_mixer),
9734};
9735
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309736static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9737 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9738 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9739 msm_routing_get_port_mixer,
9740 msm_routing_put_port_mixer),
9741 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9742 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9743 msm_routing_get_port_mixer,
9744 msm_routing_put_port_mixer),
9745 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9746 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9747 msm_routing_get_port_mixer,
9748 msm_routing_put_port_mixer),
9749 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9750 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9751 msm_routing_get_port_mixer,
9752 msm_routing_put_port_mixer),
9753 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9754 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9755 msm_routing_get_port_mixer,
9756 msm_routing_put_port_mixer),
9757 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9758 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9759 msm_routing_get_port_mixer,
9760 msm_routing_put_port_mixer),
9761 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9762 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9763 msm_routing_get_port_mixer,
9764 msm_routing_put_port_mixer),
9765 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9766 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9767 msm_routing_get_port_mixer,
9768 msm_routing_put_port_mixer),
9769 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9770 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9771 msm_routing_get_port_mixer,
9772 msm_routing_put_port_mixer),
9773 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9774 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9775 msm_routing_get_port_mixer,
9776 msm_routing_put_port_mixer),
9777 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9778 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9779 msm_routing_get_port_mixer,
9780 msm_routing_put_port_mixer),
9781 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9782 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9783 msm_routing_get_port_mixer,
9784 msm_routing_put_port_mixer),
9785 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9786 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9787 msm_routing_get_port_mixer,
9788 msm_routing_put_port_mixer),
9789 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9790 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9791 msm_routing_get_port_mixer,
9792 msm_routing_put_port_mixer),
9793 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9794 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9795 msm_routing_get_port_mixer,
9796 msm_routing_put_port_mixer),
9797 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9798 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9799 msm_routing_get_port_mixer,
9800 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309801 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9802 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9803 msm_routing_get_port_mixer,
9804 msm_routing_put_port_mixer),
9805 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9806 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9807 msm_routing_get_port_mixer,
9808 msm_routing_put_port_mixer),
9809 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9810 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9811 msm_routing_get_port_mixer,
9812 msm_routing_put_port_mixer),
9813 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9814 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9815 msm_routing_get_port_mixer,
9816 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309817};
9818
9819static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9820 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9821 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9822 msm_routing_get_port_mixer,
9823 msm_routing_put_port_mixer),
9824 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9825 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9826 msm_routing_get_port_mixer,
9827 msm_routing_put_port_mixer),
9828 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9829 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9830 msm_routing_get_port_mixer,
9831 msm_routing_put_port_mixer),
9832 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9833 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9834 msm_routing_get_port_mixer,
9835 msm_routing_put_port_mixer),
9836 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9837 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9838 msm_routing_get_port_mixer,
9839 msm_routing_put_port_mixer),
9840 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9841 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9842 msm_routing_get_port_mixer,
9843 msm_routing_put_port_mixer),
9844 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9845 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9846 msm_routing_get_port_mixer,
9847 msm_routing_put_port_mixer),
9848 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9849 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9850 msm_routing_get_port_mixer,
9851 msm_routing_put_port_mixer),
9852 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9853 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9854 msm_routing_get_port_mixer,
9855 msm_routing_put_port_mixer),
9856 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9857 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9858 msm_routing_get_port_mixer,
9859 msm_routing_put_port_mixer),
9860 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9861 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9862 msm_routing_get_port_mixer,
9863 msm_routing_put_port_mixer),
9864 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9865 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9866 msm_routing_get_port_mixer,
9867 msm_routing_put_port_mixer),
9868 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9869 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9870 msm_routing_get_port_mixer,
9871 msm_routing_put_port_mixer),
9872 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9873 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9874 msm_routing_get_port_mixer,
9875 msm_routing_put_port_mixer),
9876 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9877 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9878 msm_routing_get_port_mixer,
9879 msm_routing_put_port_mixer),
9880 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9881 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9882 msm_routing_get_port_mixer,
9883 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309884 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9885 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9886 msm_routing_get_port_mixer,
9887 msm_routing_put_port_mixer),
9888 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9889 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9890 msm_routing_get_port_mixer,
9891 msm_routing_put_port_mixer),
9892 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9893 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9894 msm_routing_get_port_mixer,
9895 msm_routing_put_port_mixer),
9896 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9897 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9898 msm_routing_get_port_mixer,
9899 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309900};
9901
9902static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9903 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9904 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9905 msm_routing_get_port_mixer,
9906 msm_routing_put_port_mixer),
9907 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9908 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9909 msm_routing_get_port_mixer,
9910 msm_routing_put_port_mixer),
9911 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9912 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9913 msm_routing_get_port_mixer,
9914 msm_routing_put_port_mixer),
9915 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9916 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9917 msm_routing_get_port_mixer,
9918 msm_routing_put_port_mixer),
9919 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9920 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9921 msm_routing_get_port_mixer,
9922 msm_routing_put_port_mixer),
9923 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9924 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9925 msm_routing_get_port_mixer,
9926 msm_routing_put_port_mixer),
9927 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9928 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9929 msm_routing_get_port_mixer,
9930 msm_routing_put_port_mixer),
9931 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9932 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9933 msm_routing_get_port_mixer,
9934 msm_routing_put_port_mixer),
9935 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9936 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9937 msm_routing_get_port_mixer,
9938 msm_routing_put_port_mixer),
9939 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9940 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9941 msm_routing_get_port_mixer,
9942 msm_routing_put_port_mixer),
9943 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9944 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9945 msm_routing_get_port_mixer,
9946 msm_routing_put_port_mixer),
9947 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9948 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9949 msm_routing_get_port_mixer,
9950 msm_routing_put_port_mixer),
9951 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9952 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9953 msm_routing_get_port_mixer,
9954 msm_routing_put_port_mixer),
9955 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9956 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9957 msm_routing_get_port_mixer,
9958 msm_routing_put_port_mixer),
9959 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9960 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9961 msm_routing_get_port_mixer,
9962 msm_routing_put_port_mixer),
9963 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9964 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9965 msm_routing_get_port_mixer,
9966 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309967 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9968 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9969 msm_routing_get_port_mixer,
9970 msm_routing_put_port_mixer),
9971 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9972 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9973 msm_routing_get_port_mixer,
9974 msm_routing_put_port_mixer),
9975 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9976 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9977 msm_routing_get_port_mixer,
9978 msm_routing_put_port_mixer),
9979 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9980 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9981 msm_routing_get_port_mixer,
9982 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309983};
9984
9985static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9986 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9987 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9988 msm_routing_get_port_mixer,
9989 msm_routing_put_port_mixer),
9990 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9991 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9992 msm_routing_get_port_mixer,
9993 msm_routing_put_port_mixer),
9994 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9995 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9996 msm_routing_get_port_mixer,
9997 msm_routing_put_port_mixer),
9998 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9999 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10000 msm_routing_get_port_mixer,
10001 msm_routing_put_port_mixer),
10002 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10003 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10004 msm_routing_get_port_mixer,
10005 msm_routing_put_port_mixer),
10006 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10007 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10008 msm_routing_get_port_mixer,
10009 msm_routing_put_port_mixer),
10010 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10011 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10012 msm_routing_get_port_mixer,
10013 msm_routing_put_port_mixer),
10014 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10015 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10016 msm_routing_get_port_mixer,
10017 msm_routing_put_port_mixer),
10018 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10019 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
10020 msm_routing_get_port_mixer,
10021 msm_routing_put_port_mixer),
10022 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10023 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
10024 msm_routing_get_port_mixer,
10025 msm_routing_put_port_mixer),
10026 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10027 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
10028 msm_routing_get_port_mixer,
10029 msm_routing_put_port_mixer),
10030 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10031 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
10032 msm_routing_get_port_mixer,
10033 msm_routing_put_port_mixer),
10034 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10035 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10036 msm_routing_get_port_mixer,
10037 msm_routing_put_port_mixer),
10038 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10039 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10040 msm_routing_get_port_mixer,
10041 msm_routing_put_port_mixer),
10042 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10043 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10044 msm_routing_get_port_mixer,
10045 msm_routing_put_port_mixer),
10046 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10047 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10048 msm_routing_get_port_mixer,
10049 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010050 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10051 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10052 msm_routing_get_port_mixer,
10053 msm_routing_put_port_mixer),
10054 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10055 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10056 msm_routing_get_port_mixer,
10057 msm_routing_put_port_mixer),
10058 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10059 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10060 msm_routing_get_port_mixer,
10061 msm_routing_put_port_mixer),
10062 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10063 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10064 msm_routing_get_port_mixer,
10065 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010066};
10067
10068static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
10069 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10070 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10071 msm_routing_get_port_mixer,
10072 msm_routing_put_port_mixer),
10073 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10074 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10075 msm_routing_get_port_mixer,
10076 msm_routing_put_port_mixer),
10077 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10078 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10079 msm_routing_get_port_mixer,
10080 msm_routing_put_port_mixer),
10081 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10082 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10083 msm_routing_get_port_mixer,
10084 msm_routing_put_port_mixer),
10085 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10086 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10087 msm_routing_get_port_mixer,
10088 msm_routing_put_port_mixer),
10089 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10090 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10091 msm_routing_get_port_mixer,
10092 msm_routing_put_port_mixer),
10093 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10094 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10095 msm_routing_get_port_mixer,
10096 msm_routing_put_port_mixer),
10097 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10098 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10099 msm_routing_get_port_mixer,
10100 msm_routing_put_port_mixer),
10101 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10102 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10103 msm_routing_get_port_mixer,
10104 msm_routing_put_port_mixer),
10105 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10106 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10107 msm_routing_get_port_mixer,
10108 msm_routing_put_port_mixer),
10109 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10110 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10111 msm_routing_get_port_mixer,
10112 msm_routing_put_port_mixer),
10113 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10114 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10115 msm_routing_get_port_mixer,
10116 msm_routing_put_port_mixer),
10117 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10118 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10119 msm_routing_get_port_mixer,
10120 msm_routing_put_port_mixer),
10121 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10122 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10123 msm_routing_get_port_mixer,
10124 msm_routing_put_port_mixer),
10125 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10126 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10127 msm_routing_get_port_mixer,
10128 msm_routing_put_port_mixer),
10129 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10130 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10131 msm_routing_get_port_mixer,
10132 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010133 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10134 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10135 msm_routing_get_port_mixer,
10136 msm_routing_put_port_mixer),
10137 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10138 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10139 msm_routing_get_port_mixer,
10140 msm_routing_put_port_mixer),
10141 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10142 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10143 msm_routing_get_port_mixer,
10144 msm_routing_put_port_mixer),
10145 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10146 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10147 msm_routing_get_port_mixer,
10148 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010149};
10150
10151static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
10152 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10153 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10154 msm_routing_get_port_mixer,
10155 msm_routing_put_port_mixer),
10156 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10157 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10158 msm_routing_get_port_mixer,
10159 msm_routing_put_port_mixer),
10160 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10161 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10162 msm_routing_get_port_mixer,
10163 msm_routing_put_port_mixer),
10164 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10165 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10166 msm_routing_get_port_mixer,
10167 msm_routing_put_port_mixer),
10168 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10169 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10170 msm_routing_get_port_mixer,
10171 msm_routing_put_port_mixer),
10172 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10173 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10174 msm_routing_get_port_mixer,
10175 msm_routing_put_port_mixer),
10176 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10177 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10178 msm_routing_get_port_mixer,
10179 msm_routing_put_port_mixer),
10180 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10181 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10182 msm_routing_get_port_mixer,
10183 msm_routing_put_port_mixer),
10184 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10185 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10186 msm_routing_get_port_mixer,
10187 msm_routing_put_port_mixer),
10188 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10189 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10190 msm_routing_get_port_mixer,
10191 msm_routing_put_port_mixer),
10192 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10193 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10194 msm_routing_get_port_mixer,
10195 msm_routing_put_port_mixer),
10196 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10197 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10198 msm_routing_get_port_mixer,
10199 msm_routing_put_port_mixer),
10200 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10201 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10202 msm_routing_get_port_mixer,
10203 msm_routing_put_port_mixer),
10204 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10205 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10206 msm_routing_get_port_mixer,
10207 msm_routing_put_port_mixer),
10208 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10209 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10210 msm_routing_get_port_mixer,
10211 msm_routing_put_port_mixer),
10212 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10213 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10214 msm_routing_get_port_mixer,
10215 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010216 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10217 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10218 msm_routing_get_port_mixer,
10219 msm_routing_put_port_mixer),
10220 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10221 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10222 msm_routing_get_port_mixer,
10223 msm_routing_put_port_mixer),
10224 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10225 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10226 msm_routing_get_port_mixer,
10227 msm_routing_put_port_mixer),
10228 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10229 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10230 msm_routing_get_port_mixer,
10231 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010232};
10233
10234static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
10235 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10236 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10237 msm_routing_get_port_mixer,
10238 msm_routing_put_port_mixer),
10239 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10240 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10241 msm_routing_get_port_mixer,
10242 msm_routing_put_port_mixer),
10243 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10244 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10245 msm_routing_get_port_mixer,
10246 msm_routing_put_port_mixer),
10247 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10248 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10249 msm_routing_get_port_mixer,
10250 msm_routing_put_port_mixer),
10251 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10252 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10253 msm_routing_get_port_mixer,
10254 msm_routing_put_port_mixer),
10255 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10256 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10257 msm_routing_get_port_mixer,
10258 msm_routing_put_port_mixer),
10259 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10260 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10261 msm_routing_get_port_mixer,
10262 msm_routing_put_port_mixer),
10263 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10264 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10265 msm_routing_get_port_mixer,
10266 msm_routing_put_port_mixer),
10267 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10268 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10269 msm_routing_get_port_mixer,
10270 msm_routing_put_port_mixer),
10271 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10272 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10273 msm_routing_get_port_mixer,
10274 msm_routing_put_port_mixer),
10275 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10276 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10277 msm_routing_get_port_mixer,
10278 msm_routing_put_port_mixer),
10279 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10280 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10281 msm_routing_get_port_mixer,
10282 msm_routing_put_port_mixer),
10283 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10284 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10285 msm_routing_get_port_mixer,
10286 msm_routing_put_port_mixer),
10287 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10288 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10289 msm_routing_get_port_mixer,
10290 msm_routing_put_port_mixer),
10291 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10292 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10293 msm_routing_get_port_mixer,
10294 msm_routing_put_port_mixer),
10295 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10296 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10297 msm_routing_get_port_mixer,
10298 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010299 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10300 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10301 msm_routing_get_port_mixer,
10302 msm_routing_put_port_mixer),
10303 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10304 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10305 msm_routing_get_port_mixer,
10306 msm_routing_put_port_mixer),
10307 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10308 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10309 msm_routing_get_port_mixer,
10310 msm_routing_put_port_mixer),
10311 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10312 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10313 msm_routing_get_port_mixer,
10314 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010315};
10316
10317static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
10318 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10319 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10320 msm_routing_get_port_mixer,
10321 msm_routing_put_port_mixer),
10322 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10323 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10324 msm_routing_get_port_mixer,
10325 msm_routing_put_port_mixer),
10326 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10327 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10328 msm_routing_get_port_mixer,
10329 msm_routing_put_port_mixer),
10330 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10331 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10332 msm_routing_get_port_mixer,
10333 msm_routing_put_port_mixer),
10334 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10335 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10336 msm_routing_get_port_mixer,
10337 msm_routing_put_port_mixer),
10338 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10339 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10340 msm_routing_get_port_mixer,
10341 msm_routing_put_port_mixer),
10342 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10343 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10344 msm_routing_get_port_mixer,
10345 msm_routing_put_port_mixer),
10346 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10347 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10348 msm_routing_get_port_mixer,
10349 msm_routing_put_port_mixer),
10350 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10351 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10352 msm_routing_get_port_mixer,
10353 msm_routing_put_port_mixer),
10354 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10355 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10356 msm_routing_get_port_mixer,
10357 msm_routing_put_port_mixer),
10358 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10359 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10360 msm_routing_get_port_mixer,
10361 msm_routing_put_port_mixer),
10362 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10363 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10364 msm_routing_get_port_mixer,
10365 msm_routing_put_port_mixer),
10366 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10367 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10368 msm_routing_get_port_mixer,
10369 msm_routing_put_port_mixer),
10370 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10371 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10372 msm_routing_get_port_mixer,
10373 msm_routing_put_port_mixer),
10374 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10375 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10376 msm_routing_get_port_mixer,
10377 msm_routing_put_port_mixer),
10378 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10379 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10380 msm_routing_get_port_mixer,
10381 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010382 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10383 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10384 msm_routing_get_port_mixer,
10385 msm_routing_put_port_mixer),
10386 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10387 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10388 msm_routing_get_port_mixer,
10389 msm_routing_put_port_mixer),
10390 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10391 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10392 msm_routing_get_port_mixer,
10393 msm_routing_put_port_mixer),
10394 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10395 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10396 msm_routing_get_port_mixer,
10397 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010398};
10399
10400static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
10401 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10402 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10403 msm_routing_get_port_mixer,
10404 msm_routing_put_port_mixer),
10405 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10406 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10407 msm_routing_get_port_mixer,
10408 msm_routing_put_port_mixer),
10409 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10410 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10411 msm_routing_get_port_mixer,
10412 msm_routing_put_port_mixer),
10413 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10414 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10415 msm_routing_get_port_mixer,
10416 msm_routing_put_port_mixer),
10417 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10418 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10419 msm_routing_get_port_mixer,
10420 msm_routing_put_port_mixer),
10421 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10422 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10423 msm_routing_get_port_mixer,
10424 msm_routing_put_port_mixer),
10425 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10426 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10427 msm_routing_get_port_mixer,
10428 msm_routing_put_port_mixer),
10429 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10430 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10431 msm_routing_get_port_mixer,
10432 msm_routing_put_port_mixer),
10433 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10434 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10435 msm_routing_get_port_mixer,
10436 msm_routing_put_port_mixer),
10437 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10438 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10439 msm_routing_get_port_mixer,
10440 msm_routing_put_port_mixer),
10441 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10442 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10443 msm_routing_get_port_mixer,
10444 msm_routing_put_port_mixer),
10445 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10446 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10447 msm_routing_get_port_mixer,
10448 msm_routing_put_port_mixer),
10449 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10450 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10451 msm_routing_get_port_mixer,
10452 msm_routing_put_port_mixer),
10453 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10454 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10455 msm_routing_get_port_mixer,
10456 msm_routing_put_port_mixer),
10457 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10458 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10459 msm_routing_get_port_mixer,
10460 msm_routing_put_port_mixer),
10461 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10462 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10463 msm_routing_get_port_mixer,
10464 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010465 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10466 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10467 msm_routing_get_port_mixer,
10468 msm_routing_put_port_mixer),
10469 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10470 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10471 msm_routing_get_port_mixer,
10472 msm_routing_put_port_mixer),
10473 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10474 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10475 msm_routing_get_port_mixer,
10476 msm_routing_put_port_mixer),
10477 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10478 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10479 msm_routing_get_port_mixer,
10480 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010481};
10482
10483static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
10484 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10485 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10486 msm_routing_get_port_mixer,
10487 msm_routing_put_port_mixer),
10488 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10489 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10490 msm_routing_get_port_mixer,
10491 msm_routing_put_port_mixer),
10492 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10493 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10494 msm_routing_get_port_mixer,
10495 msm_routing_put_port_mixer),
10496 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10497 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10498 msm_routing_get_port_mixer,
10499 msm_routing_put_port_mixer),
10500 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10501 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10502 msm_routing_get_port_mixer,
10503 msm_routing_put_port_mixer),
10504 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10505 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10506 msm_routing_get_port_mixer,
10507 msm_routing_put_port_mixer),
10508 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10509 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10510 msm_routing_get_port_mixer,
10511 msm_routing_put_port_mixer),
10512 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10513 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10514 msm_routing_get_port_mixer,
10515 msm_routing_put_port_mixer),
10516 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10517 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10518 msm_routing_get_port_mixer,
10519 msm_routing_put_port_mixer),
10520 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10521 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10522 msm_routing_get_port_mixer,
10523 msm_routing_put_port_mixer),
10524 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10525 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10526 msm_routing_get_port_mixer,
10527 msm_routing_put_port_mixer),
10528 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10529 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10530 msm_routing_get_port_mixer,
10531 msm_routing_put_port_mixer),
10532 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10533 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10534 msm_routing_get_port_mixer,
10535 msm_routing_put_port_mixer),
10536 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10537 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10538 msm_routing_get_port_mixer,
10539 msm_routing_put_port_mixer),
10540 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10541 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10542 msm_routing_get_port_mixer,
10543 msm_routing_put_port_mixer),
10544 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10545 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10546 msm_routing_get_port_mixer,
10547 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010548 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10549 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10550 msm_routing_get_port_mixer,
10551 msm_routing_put_port_mixer),
10552 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10553 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10554 msm_routing_get_port_mixer,
10555 msm_routing_put_port_mixer),
10556 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10557 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10558 msm_routing_get_port_mixer,
10559 msm_routing_put_port_mixer),
10560 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10561 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10562 msm_routing_get_port_mixer,
10563 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010564};
10565
10566static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10567 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10568 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10569 msm_routing_get_port_mixer,
10570 msm_routing_put_port_mixer),
10571 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10572 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10573 msm_routing_get_port_mixer,
10574 msm_routing_put_port_mixer),
10575 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10576 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10577 msm_routing_get_port_mixer,
10578 msm_routing_put_port_mixer),
10579 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10580 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10581 msm_routing_get_port_mixer,
10582 msm_routing_put_port_mixer),
10583 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10584 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10585 msm_routing_get_port_mixer,
10586 msm_routing_put_port_mixer),
10587 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10588 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10589 msm_routing_get_port_mixer,
10590 msm_routing_put_port_mixer),
10591 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10592 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10593 msm_routing_get_port_mixer,
10594 msm_routing_put_port_mixer),
10595 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10596 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10597 msm_routing_get_port_mixer,
10598 msm_routing_put_port_mixer),
10599 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10600 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10601 msm_routing_get_port_mixer,
10602 msm_routing_put_port_mixer),
10603 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10604 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10605 msm_routing_get_port_mixer,
10606 msm_routing_put_port_mixer),
10607 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10608 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10609 msm_routing_get_port_mixer,
10610 msm_routing_put_port_mixer),
10611 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10612 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10613 msm_routing_get_port_mixer,
10614 msm_routing_put_port_mixer),
10615 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10616 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10617 msm_routing_get_port_mixer,
10618 msm_routing_put_port_mixer),
10619 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10620 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10621 msm_routing_get_port_mixer,
10622 msm_routing_put_port_mixer),
10623 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10624 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10625 msm_routing_get_port_mixer,
10626 msm_routing_put_port_mixer),
10627 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10628 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10629 msm_routing_get_port_mixer,
10630 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010631 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10632 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10633 msm_routing_get_port_mixer,
10634 msm_routing_put_port_mixer),
10635 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10636 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10637 msm_routing_get_port_mixer,
10638 msm_routing_put_port_mixer),
10639 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10640 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10641 msm_routing_get_port_mixer,
10642 msm_routing_put_port_mixer),
10643 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10644 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10645 msm_routing_get_port_mixer,
10646 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010647};
10648
10649static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10650 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10651 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10652 msm_routing_get_port_mixer,
10653 msm_routing_put_port_mixer),
10654 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10655 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10656 msm_routing_get_port_mixer,
10657 msm_routing_put_port_mixer),
10658 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10659 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10660 msm_routing_get_port_mixer,
10661 msm_routing_put_port_mixer),
10662 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10663 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10664 msm_routing_get_port_mixer,
10665 msm_routing_put_port_mixer),
10666 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10667 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10668 msm_routing_get_port_mixer,
10669 msm_routing_put_port_mixer),
10670 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10671 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10672 msm_routing_get_port_mixer,
10673 msm_routing_put_port_mixer),
10674 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10675 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10676 msm_routing_get_port_mixer,
10677 msm_routing_put_port_mixer),
10678 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10679 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10680 msm_routing_get_port_mixer,
10681 msm_routing_put_port_mixer),
10682 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10683 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10684 msm_routing_get_port_mixer,
10685 msm_routing_put_port_mixer),
10686 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10687 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10688 msm_routing_get_port_mixer,
10689 msm_routing_put_port_mixer),
10690 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10691 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10692 msm_routing_get_port_mixer,
10693 msm_routing_put_port_mixer),
10694 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10695 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10696 msm_routing_get_port_mixer,
10697 msm_routing_put_port_mixer),
10698 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10699 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10700 msm_routing_get_port_mixer,
10701 msm_routing_put_port_mixer),
10702 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10703 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10704 msm_routing_get_port_mixer,
10705 msm_routing_put_port_mixer),
10706 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10707 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10708 msm_routing_get_port_mixer,
10709 msm_routing_put_port_mixer),
10710 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10711 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10712 msm_routing_get_port_mixer,
10713 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010714 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10715 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10716 msm_routing_get_port_mixer,
10717 msm_routing_put_port_mixer),
10718 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10719 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10720 msm_routing_get_port_mixer,
10721 msm_routing_put_port_mixer),
10722 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10723 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10724 msm_routing_get_port_mixer,
10725 msm_routing_put_port_mixer),
10726 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10727 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10728 msm_routing_get_port_mixer,
10729 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010730};
10731
10732static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10733 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10734 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10735 msm_routing_get_port_mixer,
10736 msm_routing_put_port_mixer),
10737 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10738 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10739 msm_routing_get_port_mixer,
10740 msm_routing_put_port_mixer),
10741 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10742 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10743 msm_routing_get_port_mixer,
10744 msm_routing_put_port_mixer),
10745 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10746 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10747 msm_routing_get_port_mixer,
10748 msm_routing_put_port_mixer),
10749 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10750 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10751 msm_routing_get_port_mixer,
10752 msm_routing_put_port_mixer),
10753 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10754 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10755 msm_routing_get_port_mixer,
10756 msm_routing_put_port_mixer),
10757 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10758 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10759 msm_routing_get_port_mixer,
10760 msm_routing_put_port_mixer),
10761 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10762 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10763 msm_routing_get_port_mixer,
10764 msm_routing_put_port_mixer),
10765 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10766 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10767 msm_routing_get_port_mixer,
10768 msm_routing_put_port_mixer),
10769 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10770 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10771 msm_routing_get_port_mixer,
10772 msm_routing_put_port_mixer),
10773 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10774 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10775 msm_routing_get_port_mixer,
10776 msm_routing_put_port_mixer),
10777 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10778 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10779 msm_routing_get_port_mixer,
10780 msm_routing_put_port_mixer),
10781 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10782 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10783 msm_routing_get_port_mixer,
10784 msm_routing_put_port_mixer),
10785 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10786 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10787 msm_routing_get_port_mixer,
10788 msm_routing_put_port_mixer),
10789 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10790 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10791 msm_routing_get_port_mixer,
10792 msm_routing_put_port_mixer),
10793 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10794 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10795 msm_routing_get_port_mixer,
10796 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010797 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10798 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10799 msm_routing_get_port_mixer,
10800 msm_routing_put_port_mixer),
10801 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10802 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10803 msm_routing_get_port_mixer,
10804 msm_routing_put_port_mixer),
10805 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10806 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10807 msm_routing_get_port_mixer,
10808 msm_routing_put_port_mixer),
10809 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10810 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10811 msm_routing_get_port_mixer,
10812 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010813};
10814
10815static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10816 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10817 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10818 msm_routing_get_port_mixer,
10819 msm_routing_put_port_mixer),
10820 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10821 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10822 msm_routing_get_port_mixer,
10823 msm_routing_put_port_mixer),
10824 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10825 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10826 msm_routing_get_port_mixer,
10827 msm_routing_put_port_mixer),
10828 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10829 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10830 msm_routing_get_port_mixer,
10831 msm_routing_put_port_mixer),
10832 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10833 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10834 msm_routing_get_port_mixer,
10835 msm_routing_put_port_mixer),
10836 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10837 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10838 msm_routing_get_port_mixer,
10839 msm_routing_put_port_mixer),
10840 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10841 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10842 msm_routing_get_port_mixer,
10843 msm_routing_put_port_mixer),
10844 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10845 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10846 msm_routing_get_port_mixer,
10847 msm_routing_put_port_mixer),
10848 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10849 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10850 msm_routing_get_port_mixer,
10851 msm_routing_put_port_mixer),
10852 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10853 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10854 msm_routing_get_port_mixer,
10855 msm_routing_put_port_mixer),
10856 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10857 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10858 msm_routing_get_port_mixer,
10859 msm_routing_put_port_mixer),
10860 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10861 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10862 msm_routing_get_port_mixer,
10863 msm_routing_put_port_mixer),
10864 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10865 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10866 msm_routing_get_port_mixer,
10867 msm_routing_put_port_mixer),
10868 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10869 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10870 msm_routing_get_port_mixer,
10871 msm_routing_put_port_mixer),
10872 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10873 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10874 msm_routing_get_port_mixer,
10875 msm_routing_put_port_mixer),
10876 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10877 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10878 msm_routing_get_port_mixer,
10879 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010880 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10881 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10882 msm_routing_get_port_mixer,
10883 msm_routing_put_port_mixer),
10884 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10885 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10886 msm_routing_get_port_mixer,
10887 msm_routing_put_port_mixer),
10888 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10889 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10890 msm_routing_get_port_mixer,
10891 msm_routing_put_port_mixer),
10892 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10893 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10894 msm_routing_get_port_mixer,
10895 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010896};
10897
10898static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10899 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10900 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10901 msm_routing_get_port_mixer,
10902 msm_routing_put_port_mixer),
10903 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10904 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10905 msm_routing_get_port_mixer,
10906 msm_routing_put_port_mixer),
10907 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10908 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10909 msm_routing_get_port_mixer,
10910 msm_routing_put_port_mixer),
10911 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10912 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10913 msm_routing_get_port_mixer,
10914 msm_routing_put_port_mixer),
10915 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10916 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10917 msm_routing_get_port_mixer,
10918 msm_routing_put_port_mixer),
10919 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10920 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10921 msm_routing_get_port_mixer,
10922 msm_routing_put_port_mixer),
10923 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10924 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10925 msm_routing_get_port_mixer,
10926 msm_routing_put_port_mixer),
10927 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10928 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10929 msm_routing_get_port_mixer,
10930 msm_routing_put_port_mixer),
10931 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10932 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10933 msm_routing_get_port_mixer,
10934 msm_routing_put_port_mixer),
10935 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10936 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10937 msm_routing_get_port_mixer,
10938 msm_routing_put_port_mixer),
10939 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10940 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10941 msm_routing_get_port_mixer,
10942 msm_routing_put_port_mixer),
10943 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10944 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10945 msm_routing_get_port_mixer,
10946 msm_routing_put_port_mixer),
10947 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10948 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10949 msm_routing_get_port_mixer,
10950 msm_routing_put_port_mixer),
10951 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10952 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10953 msm_routing_get_port_mixer,
10954 msm_routing_put_port_mixer),
10955 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10956 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10957 msm_routing_get_port_mixer,
10958 msm_routing_put_port_mixer),
10959 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10960 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10961 msm_routing_get_port_mixer,
10962 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010963 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10964 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10965 msm_routing_get_port_mixer,
10966 msm_routing_put_port_mixer),
10967 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10968 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10969 msm_routing_get_port_mixer,
10970 msm_routing_put_port_mixer),
10971 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10972 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10973 msm_routing_get_port_mixer,
10974 msm_routing_put_port_mixer),
10975 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10976 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10977 msm_routing_get_port_mixer,
10978 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010979};
10980
10981static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10982 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10983 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10984 msm_routing_get_port_mixer,
10985 msm_routing_put_port_mixer),
10986 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10987 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10988 msm_routing_get_port_mixer,
10989 msm_routing_put_port_mixer),
10990 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10991 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10992 msm_routing_get_port_mixer,
10993 msm_routing_put_port_mixer),
10994 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10995 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10996 msm_routing_get_port_mixer,
10997 msm_routing_put_port_mixer),
10998 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10999 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11000 msm_routing_get_port_mixer,
11001 msm_routing_put_port_mixer),
11002 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11003 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11004 msm_routing_get_port_mixer,
11005 msm_routing_put_port_mixer),
11006 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11007 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11008 msm_routing_get_port_mixer,
11009 msm_routing_put_port_mixer),
11010 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11011 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11012 msm_routing_get_port_mixer,
11013 msm_routing_put_port_mixer),
11014 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11015 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11016 msm_routing_get_port_mixer,
11017 msm_routing_put_port_mixer),
11018 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11019 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11020 msm_routing_get_port_mixer,
11021 msm_routing_put_port_mixer),
11022 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11023 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11024 msm_routing_get_port_mixer,
11025 msm_routing_put_port_mixer),
11026 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11027 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11028 msm_routing_get_port_mixer,
11029 msm_routing_put_port_mixer),
11030 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11031 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11032 msm_routing_get_port_mixer,
11033 msm_routing_put_port_mixer),
11034 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11035 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11036 msm_routing_get_port_mixer,
11037 msm_routing_put_port_mixer),
11038 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11039 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11040 msm_routing_get_port_mixer,
11041 msm_routing_put_port_mixer),
11042 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11043 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11044 msm_routing_get_port_mixer,
11045 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011046 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11047 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11048 msm_routing_get_port_mixer,
11049 msm_routing_put_port_mixer),
11050 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11051 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11052 msm_routing_get_port_mixer,
11053 msm_routing_put_port_mixer),
11054 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11055 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11056 msm_routing_get_port_mixer,
11057 msm_routing_put_port_mixer),
11058 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11059 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11060 msm_routing_get_port_mixer,
11061 msm_routing_put_port_mixer),
11062};
11063
11064static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
11065 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11066 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11067 msm_routing_get_port_mixer,
11068 msm_routing_put_port_mixer),
11069 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11070 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11071 msm_routing_get_port_mixer,
11072 msm_routing_put_port_mixer),
11073 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11074 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11075 msm_routing_get_port_mixer,
11076 msm_routing_put_port_mixer),
11077 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11078 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11079 msm_routing_get_port_mixer,
11080 msm_routing_put_port_mixer),
11081 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11082 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11083 msm_routing_get_port_mixer,
11084 msm_routing_put_port_mixer),
11085 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11086 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11087 msm_routing_get_port_mixer,
11088 msm_routing_put_port_mixer),
11089 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11090 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11091 msm_routing_get_port_mixer,
11092 msm_routing_put_port_mixer),
11093 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11094 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11095 msm_routing_get_port_mixer,
11096 msm_routing_put_port_mixer),
11097 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11098 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11099 msm_routing_get_port_mixer,
11100 msm_routing_put_port_mixer),
11101 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11102 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11103 msm_routing_get_port_mixer,
11104 msm_routing_put_port_mixer),
11105 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11106 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11107 msm_routing_get_port_mixer,
11108 msm_routing_put_port_mixer),
11109 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11110 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11111 msm_routing_get_port_mixer,
11112 msm_routing_put_port_mixer),
11113 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11114 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11115 msm_routing_get_port_mixer,
11116 msm_routing_put_port_mixer),
11117 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11118 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11119 msm_routing_get_port_mixer,
11120 msm_routing_put_port_mixer),
11121 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11122 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11123 msm_routing_get_port_mixer,
11124 msm_routing_put_port_mixer),
11125 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11126 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11127 msm_routing_get_port_mixer,
11128 msm_routing_put_port_mixer),
11129 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11130 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11131 msm_routing_get_port_mixer,
11132 msm_routing_put_port_mixer),
11133 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11134 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11135 msm_routing_get_port_mixer,
11136 msm_routing_put_port_mixer),
11137 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11138 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11139 msm_routing_get_port_mixer,
11140 msm_routing_put_port_mixer),
11141 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11142 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11143 msm_routing_get_port_mixer,
11144 msm_routing_put_port_mixer),
11145};
11146
11147static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
11148 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11149 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11150 msm_routing_get_port_mixer,
11151 msm_routing_put_port_mixer),
11152 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11153 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11154 msm_routing_get_port_mixer,
11155 msm_routing_put_port_mixer),
11156 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11157 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11158 msm_routing_get_port_mixer,
11159 msm_routing_put_port_mixer),
11160 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11161 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11162 msm_routing_get_port_mixer,
11163 msm_routing_put_port_mixer),
11164 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11165 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11166 msm_routing_get_port_mixer,
11167 msm_routing_put_port_mixer),
11168 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11169 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11170 msm_routing_get_port_mixer,
11171 msm_routing_put_port_mixer),
11172 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11173 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11174 msm_routing_get_port_mixer,
11175 msm_routing_put_port_mixer),
11176 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11177 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11178 msm_routing_get_port_mixer,
11179 msm_routing_put_port_mixer),
11180 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11181 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11182 msm_routing_get_port_mixer,
11183 msm_routing_put_port_mixer),
11184 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11185 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11186 msm_routing_get_port_mixer,
11187 msm_routing_put_port_mixer),
11188 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11189 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11190 msm_routing_get_port_mixer,
11191 msm_routing_put_port_mixer),
11192 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11193 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11194 msm_routing_get_port_mixer,
11195 msm_routing_put_port_mixer),
11196 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11197 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11198 msm_routing_get_port_mixer,
11199 msm_routing_put_port_mixer),
11200 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11201 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11202 msm_routing_get_port_mixer,
11203 msm_routing_put_port_mixer),
11204 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11205 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11206 msm_routing_get_port_mixer,
11207 msm_routing_put_port_mixer),
11208 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11209 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11210 msm_routing_get_port_mixer,
11211 msm_routing_put_port_mixer),
11212 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11213 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11214 msm_routing_get_port_mixer,
11215 msm_routing_put_port_mixer),
11216 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11217 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11218 msm_routing_get_port_mixer,
11219 msm_routing_put_port_mixer),
11220 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11221 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11222 msm_routing_get_port_mixer,
11223 msm_routing_put_port_mixer),
11224 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11225 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11226 msm_routing_get_port_mixer,
11227 msm_routing_put_port_mixer),
11228};
11229
11230static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
11231 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11232 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11233 msm_routing_get_port_mixer,
11234 msm_routing_put_port_mixer),
11235 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11236 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11237 msm_routing_get_port_mixer,
11238 msm_routing_put_port_mixer),
11239 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11240 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11241 msm_routing_get_port_mixer,
11242 msm_routing_put_port_mixer),
11243 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11244 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11245 msm_routing_get_port_mixer,
11246 msm_routing_put_port_mixer),
11247 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11248 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11249 msm_routing_get_port_mixer,
11250 msm_routing_put_port_mixer),
11251 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11252 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11253 msm_routing_get_port_mixer,
11254 msm_routing_put_port_mixer),
11255 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11256 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11257 msm_routing_get_port_mixer,
11258 msm_routing_put_port_mixer),
11259 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11260 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11261 msm_routing_get_port_mixer,
11262 msm_routing_put_port_mixer),
11263 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11264 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11265 msm_routing_get_port_mixer,
11266 msm_routing_put_port_mixer),
11267 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11268 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11269 msm_routing_get_port_mixer,
11270 msm_routing_put_port_mixer),
11271 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11272 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11273 msm_routing_get_port_mixer,
11274 msm_routing_put_port_mixer),
11275 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11276 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11277 msm_routing_get_port_mixer,
11278 msm_routing_put_port_mixer),
11279 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11280 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11281 msm_routing_get_port_mixer,
11282 msm_routing_put_port_mixer),
11283 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11284 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11285 msm_routing_get_port_mixer,
11286 msm_routing_put_port_mixer),
11287 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11288 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11289 msm_routing_get_port_mixer,
11290 msm_routing_put_port_mixer),
11291 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11292 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11293 msm_routing_get_port_mixer,
11294 msm_routing_put_port_mixer),
11295 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11296 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11297 msm_routing_get_port_mixer,
11298 msm_routing_put_port_mixer),
11299 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11300 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11301 msm_routing_get_port_mixer,
11302 msm_routing_put_port_mixer),
11303 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11304 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11305 msm_routing_get_port_mixer,
11306 msm_routing_put_port_mixer),
11307 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11308 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11309 msm_routing_get_port_mixer,
11310 msm_routing_put_port_mixer),
11311};
11312
11313static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
11314 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11315 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11316 msm_routing_get_port_mixer,
11317 msm_routing_put_port_mixer),
11318 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11319 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11320 msm_routing_get_port_mixer,
11321 msm_routing_put_port_mixer),
11322 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11323 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11324 msm_routing_get_port_mixer,
11325 msm_routing_put_port_mixer),
11326 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11327 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11328 msm_routing_get_port_mixer,
11329 msm_routing_put_port_mixer),
11330 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11331 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11332 msm_routing_get_port_mixer,
11333 msm_routing_put_port_mixer),
11334 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11335 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11336 msm_routing_get_port_mixer,
11337 msm_routing_put_port_mixer),
11338 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11339 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11340 msm_routing_get_port_mixer,
11341 msm_routing_put_port_mixer),
11342 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11343 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11344 msm_routing_get_port_mixer,
11345 msm_routing_put_port_mixer),
11346 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11347 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11348 msm_routing_get_port_mixer,
11349 msm_routing_put_port_mixer),
11350 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11351 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11352 msm_routing_get_port_mixer,
11353 msm_routing_put_port_mixer),
11354 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11355 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11356 msm_routing_get_port_mixer,
11357 msm_routing_put_port_mixer),
11358 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11359 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11360 msm_routing_get_port_mixer,
11361 msm_routing_put_port_mixer),
11362 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11363 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11364 msm_routing_get_port_mixer,
11365 msm_routing_put_port_mixer),
11366 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11367 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11368 msm_routing_get_port_mixer,
11369 msm_routing_put_port_mixer),
11370 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11371 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11372 msm_routing_get_port_mixer,
11373 msm_routing_put_port_mixer),
11374 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11375 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11376 msm_routing_get_port_mixer,
11377 msm_routing_put_port_mixer),
11378 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11379 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11380 msm_routing_get_port_mixer,
11381 msm_routing_put_port_mixer),
11382 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11383 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11384 msm_routing_get_port_mixer,
11385 msm_routing_put_port_mixer),
11386 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11387 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11388 msm_routing_get_port_mixer,
11389 msm_routing_put_port_mixer),
11390 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11391 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11392 msm_routing_get_port_mixer,
11393 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011394};
11395
11396static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
11397 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11398 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11399 msm_routing_put_port_mixer),
11400 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11401 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11402 msm_routing_put_port_mixer),
11403 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11404 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11405 msm_routing_put_port_mixer),
11406 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11407 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11408 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011409 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11410 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11411 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011412 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11413 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11414 msm_routing_put_port_mixer),
11415 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11416 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11417 msm_routing_put_port_mixer),
11418};
11419
11420static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
11421 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11422 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11423 msm_routing_put_port_mixer),
11424 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11425 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11426 msm_routing_put_port_mixer),
11427 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11428 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11429 msm_routing_put_port_mixer),
11430 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11431 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11432 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011433 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11434 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11435 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011436 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11437 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11438 msm_routing_put_port_mixer),
11439 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11440 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
11441 msm_routing_put_port_mixer),
11442 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11443 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11444 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080011445 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11446 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
11447 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011448};
11449
11450static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
11451 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11452 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11453 msm_routing_put_listen_mixer),
11454 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11455 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11456 msm_routing_put_listen_mixer),
11457 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11458 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11459 msm_routing_put_listen_mixer),
11460 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11461 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11462 msm_routing_put_listen_mixer),
11463 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11464 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11465 msm_routing_put_listen_mixer),
11466 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11467 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11468 msm_routing_put_listen_mixer),
11469 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11470 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11471 msm_routing_put_listen_mixer),
11472 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11473 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11474 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011475 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11476 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11477 msm_routing_put_listen_mixer),
11478 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11479 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11480 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011481};
11482
11483static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
11484 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11485 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11486 msm_routing_put_listen_mixer),
11487 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11488 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11489 msm_routing_put_listen_mixer),
11490 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11491 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11492 msm_routing_put_listen_mixer),
11493 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11494 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11495 msm_routing_put_listen_mixer),
11496 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11497 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11498 msm_routing_put_listen_mixer),
11499 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11500 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11501 msm_routing_put_listen_mixer),
11502 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11503 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11504 msm_routing_put_listen_mixer),
11505 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11506 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11507 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011508 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11509 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11510 msm_routing_put_listen_mixer),
11511 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11512 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11513 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011514};
11515
11516static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
11517 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11518 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11519 msm_routing_put_listen_mixer),
11520 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11521 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11522 msm_routing_put_listen_mixer),
11523 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11524 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11525 msm_routing_put_listen_mixer),
11526 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11527 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11528 msm_routing_put_listen_mixer),
11529 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11530 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11531 msm_routing_put_listen_mixer),
11532 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11533 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11534 msm_routing_put_listen_mixer),
11535 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11536 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11537 msm_routing_put_listen_mixer),
11538 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11539 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11540 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011541 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11542 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11543 msm_routing_put_listen_mixer),
11544 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11545 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11546 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011547};
11548
11549static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11550 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11551 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11552 msm_routing_put_listen_mixer),
11553 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11554 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11555 msm_routing_put_listen_mixer),
11556 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11557 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11558 msm_routing_put_listen_mixer),
11559 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11560 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11561 msm_routing_put_listen_mixer),
11562 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11563 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11564 msm_routing_put_listen_mixer),
11565 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11566 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11567 msm_routing_put_listen_mixer),
11568 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11569 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11570 msm_routing_put_listen_mixer),
11571 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11572 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11573 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011574 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11575 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11576 msm_routing_put_listen_mixer),
11577 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11578 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11579 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011580};
11581
11582static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11583 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11584 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11585 msm_routing_put_listen_mixer),
11586 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11587 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11588 msm_routing_put_listen_mixer),
11589 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11590 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11591 msm_routing_put_listen_mixer),
11592 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11593 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11594 msm_routing_put_listen_mixer),
11595 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11596 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11597 msm_routing_put_listen_mixer),
11598 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11599 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11600 msm_routing_put_listen_mixer),
11601 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11602 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11603 msm_routing_put_listen_mixer),
11604 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11605 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11606 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011607 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11608 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11609 msm_routing_put_listen_mixer),
11610 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11611 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11612 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011613};
11614
11615static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11616 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11617 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11618 msm_routing_put_listen_mixer),
11619 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11620 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11621 msm_routing_put_listen_mixer),
11622 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11623 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11624 msm_routing_put_listen_mixer),
11625 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11626 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11627 msm_routing_put_listen_mixer),
11628 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11629 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11630 msm_routing_put_listen_mixer),
11631 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11632 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11633 msm_routing_put_listen_mixer),
11634 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11635 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11636 msm_routing_put_listen_mixer),
11637 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11638 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11639 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011640 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11641 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11642 msm_routing_put_listen_mixer),
11643 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11644 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11645 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011646};
11647
11648static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11649 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11650 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11651 msm_routing_put_listen_mixer),
11652 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11653 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11654 msm_routing_put_listen_mixer),
11655 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11656 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11657 msm_routing_put_listen_mixer),
11658 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11659 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11660 msm_routing_put_listen_mixer),
11661 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11662 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11663 msm_routing_put_listen_mixer),
11664 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11665 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11666 msm_routing_put_listen_mixer),
11667 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11668 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11669 msm_routing_put_listen_mixer),
11670 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11671 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11672 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011673 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11674 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11675 msm_routing_put_listen_mixer),
11676 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11677 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11678 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011679};
11680
11681static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11682 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11683 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11684 msm_routing_put_listen_mixer),
11685 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11686 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11687 msm_routing_put_listen_mixer),
11688 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11689 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11690 msm_routing_put_listen_mixer),
11691 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11692 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11693 msm_routing_put_listen_mixer),
11694 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11695 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11696 msm_routing_put_listen_mixer),
11697 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11698 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11699 msm_routing_put_listen_mixer),
11700 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11701 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11702 msm_routing_put_listen_mixer),
11703 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11704 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11705 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011706 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11707 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11708 msm_routing_put_listen_mixer),
11709 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11710 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11711 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011712};
11713
11714static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11715 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11716 0, 1, 0, msm_routing_get_switch_mixer,
11717 msm_routing_put_switch_mixer);
11718
11719static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11720 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11721 0, 1, 0, msm_routing_get_switch_mixer,
11722 msm_routing_put_switch_mixer);
11723
11724static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11725 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11726 0, 1, 0, msm_routing_get_switch_mixer,
11727 msm_routing_put_switch_mixer);
11728
11729static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11730 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11731 0, 1, 0, msm_routing_get_switch_mixer,
11732 msm_routing_put_switch_mixer);
11733
11734static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11735 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11736 0, 1, 0, msm_routing_get_switch_mixer,
11737 msm_routing_put_switch_mixer);
11738
11739static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11740 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11741 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11742 msm_routing_put_fm_pcmrx_switch_mixer);
11743
11744static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11745 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11746 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11747 msm_routing_put_int0_mi2s_switch_mixer);
11748
11749static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11750 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11751 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11752 msm_routing_put_int4_mi2s_switch_mixer);
11753
11754static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11755 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11756 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11757 msm_routing_put_pri_mi2s_switch_mixer);
11758
11759static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11760 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11761 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11762 msm_routing_put_sec_mi2s_switch_mixer);
11763
11764static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11765 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11766 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11767 msm_routing_put_tert_mi2s_switch_mixer);
11768
11769static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11770 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11771 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11772 msm_routing_put_quat_mi2s_switch_mixer);
11773
Rohit Kumara5077932017-09-10 22:05:05 +053011774static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11775 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11776 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11777 msm_routing_put_quin_mi2s_switch_mixer);
11778
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011779static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11780 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11781 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11782 msm_routing_put_hfp_switch_mixer);
11783
11784static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11785 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11786 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11787 msm_routing_put_hfp_switch_mixer);
11788
11789static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11790 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11791 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11792 msm_routing_put_hfp_switch_mixer);
11793
11794static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11795 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11796 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11797 msm_routing_put_hfp_switch_mixer);
11798
11799static const struct snd_kcontrol_new usb_switch_mixer_controls =
11800 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11801 0, 1, 0, msm_routing_get_usb_switch_mixer,
11802 msm_routing_put_usb_switch_mixer);
11803
Aniket Kumar Lataf8664712018-02-22 14:46:09 -080011804static const struct snd_kcontrol_new a2dp_slim7_switch_mixer_controls =
11805 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11806 0, 1, 0, msm_routing_a2dp_switch_mixer_get,
11807 msm_routing_a2dp_switch_mixer_put);
11808
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011809static const struct soc_enum lsm_port_enum =
11810 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11811
11812static const char * const lsm_func_text[] = {
11813 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11814};
11815static const struct soc_enum lsm_func_enum =
11816 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11817
11818static const struct snd_kcontrol_new lsm_controls[] = {
11819 /* kcontrol of lsm_function */
11820 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11821 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11822 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11823 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11824 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11825 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11826 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11827 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11828 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11829 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11830 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11831 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11832 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11833 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11834 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11835 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11836 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11837 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Ashish Jain01b10322018-05-12 15:37:44 +053011838 SOC_ENUM_EXT(PRI_TDM_TX_2_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11839 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11840 SOC_ENUM_EXT(PRI_TDM_TX_3_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11841 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011842 /* kcontrol of lsm_port */
11843 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11844 msm_routing_lsm_port_get,
11845 msm_routing_lsm_port_put),
11846 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11847 msm_routing_lsm_port_get,
11848 msm_routing_lsm_port_put),
11849 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11850 msm_routing_lsm_port_get,
11851 msm_routing_lsm_port_put),
11852 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11853 msm_routing_lsm_port_get,
11854 msm_routing_lsm_port_put),
11855 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11856 msm_routing_lsm_port_get,
11857 msm_routing_lsm_port_put),
11858 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11859 msm_routing_lsm_port_get,
11860 msm_routing_lsm_port_put),
11861 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11862 msm_routing_lsm_port_get,
11863 msm_routing_lsm_port_put),
11864 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11865 msm_routing_lsm_port_get,
11866 msm_routing_lsm_port_put),
11867};
11868
11869static const char * const aanc_slim_0_rx_text[] = {
11870 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11871 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11872};
11873
11874static const struct soc_enum aanc_slim_0_rx_enum =
11875 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11876 aanc_slim_0_rx_text);
11877
11878static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11879 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11880 msm_routing_slim_0_rx_aanc_mux_get,
11881 msm_routing_slim_0_rx_aanc_mux_put)
11882};
11883
11884static int msm_routing_get_stereo_to_custom_stereo_control(
11885 struct snd_kcontrol *kcontrol,
11886 struct snd_ctl_elem_value *ucontrol)
11887{
11888 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11889 return 0;
11890}
11891
11892static int msm_routing_put_stereo_to_custom_stereo_control(
11893 struct snd_kcontrol *kcontrol,
11894 struct snd_ctl_elem_value *ucontrol)
11895{
11896 int flag = 0, i = 0, rc = 0, idx = 0;
11897 int be_index = 0, port_id, topo_id;
11898 unsigned int session_id = 0;
11899 uint16_t op_FL_ip_FL_weight = 0;
11900 uint16_t op_FL_ip_FR_weight = 0;
11901 uint16_t op_FR_ip_FL_weight = 0;
11902 uint16_t op_FR_ip_FR_weight = 0;
11903
11904 flag = ucontrol->value.integer.value[0];
11905 pr_debug("%s E flag %d\n", __func__, flag);
11906
11907 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11908 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11909 __func__, is_custom_stereo_on, flag);
11910 return 0;
11911 }
11912 is_custom_stereo_on = flag ? true : false;
11913 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11914 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11915 port_id = msm_bedais[be_index].port_id;
11916 if (!msm_bedais[be_index].active)
11917 continue;
11918 if ((port_id != SLIMBUS_0_RX) &&
11919 (port_id != RT_PROXY_PORT_001_RX) &&
11920 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11921 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11922 continue;
11923
11924 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11925 MSM_FRONTEND_DAI_MM_SIZE) {
11926 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11927 LEGACY_PCM_MODE)
11928 goto skip_send_custom_stereo;
11929 session_id =
11930 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11931 if (is_custom_stereo_on) {
11932 op_FL_ip_FL_weight =
11933 Q14_GAIN_ZERO_POINT_FIVE;
11934 op_FL_ip_FR_weight =
11935 Q14_GAIN_ZERO_POINT_FIVE;
11936 op_FR_ip_FL_weight =
11937 Q14_GAIN_ZERO_POINT_FIVE;
11938 op_FR_ip_FR_weight =
11939 Q14_GAIN_ZERO_POINT_FIVE;
11940 } else {
11941 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11942 op_FL_ip_FR_weight = 0;
11943 op_FR_ip_FL_weight = 0;
11944 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11945 }
11946 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11947 unsigned long copp =
11948 session_copp_map[i]
11949 [SESSION_TYPE_RX][be_index];
11950 if (!test_bit(idx, &copp))
11951 goto skip_send_custom_stereo;
11952 topo_id = adm_get_topology_for_port_copp_idx(
11953 msm_bedais[be_index].port_id, idx);
11954 if (topo_id < 0)
11955 pr_debug("%s:Err:custom stereo topo %d",
11956 __func__, topo_id);
11957 pr_debug("idx %d\n", idx);
11958 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11959 rc = msm_ds2_dap_set_custom_stereo_onoff
11960 (msm_bedais[be_index].port_id,
11961 idx, is_custom_stereo_on);
11962 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11963 rc = dolby_dap_set_custom_stereo_onoff(
11964 msm_bedais[be_index].port_id,
11965 idx, is_custom_stereo_on);
11966 else
11967 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11968 (msm_bedais[be_index].port_id,
11969 idx, session_id,
11970 op_FL_ip_FL_weight,
11971 op_FL_ip_FR_weight,
11972 op_FR_ip_FL_weight,
11973 op_FR_ip_FR_weight);
11974 if (rc < 0)
11975skip_send_custom_stereo:
11976 pr_err("%s: err setting custom stereo\n",
11977 __func__);
11978 }
11979
11980 }
11981 }
11982 return 0;
11983}
11984
11985static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11986 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11987 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11988 msm_routing_put_stereo_to_custom_stereo_control),
11989};
11990
11991static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11992 struct snd_ctl_elem_value *ucontrol)
11993{
11994 return 0;
11995}
11996
11997static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11998 struct snd_ctl_elem_value *ucontrol)
11999{
12000 int i = 0, j;
12001 int num_app_types = ucontrol->value.integer.value[i++];
12002
12003 pr_debug("%s\n", __func__);
12004
12005 memset(app_type_cfg, 0, MAX_APP_TYPES*
12006 sizeof(struct msm_pcm_routing_app_type_data));
12007 if (num_app_types > MAX_APP_TYPES) {
12008 pr_err("%s: number of app types exceed the max supported\n",
12009 __func__);
12010 return -EINVAL;
12011 }
12012 for (j = 0; j < num_app_types; j++) {
12013 app_type_cfg[j].app_type =
12014 ucontrol->value.integer.value[i++];
12015 app_type_cfg[j].sample_rate =
12016 ucontrol->value.integer.value[i++];
12017 app_type_cfg[j].bit_width =
12018 ucontrol->value.integer.value[i++];
12019 }
12020
12021 return 0;
12022}
12023
12024static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
12025 struct snd_ctl_elem_value *ucontrol)
12026{
12027 int j, fe_id, be_id, port_type;
12028 int ret = 0;
12029 unsigned long copp;
12030 struct msm_pcm_routing_bdai_data *bedai;
12031 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
12032 SESSION_TYPE_RX;
12033 int app_type = ucontrol->value.integer.value[1];
12034 int gain = (ucontrol->value.integer.value[2] +
12035 ucontrol->value.integer.value[3])/2;
12036
12037 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
12038 MSM_AFE_PORT_TYPE_TX;
12039
12040 mutex_lock(&routing_lock);
12041 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
12042 if (is_be_dai_extproc(be_id))
12043 continue;
12044
12045 bedai = &msm_bedais[be_id];
12046 if (afe_get_port_type(bedai->port_id) != port_type)
12047 continue;
12048
12049 if (!bedai->active)
12050 continue;
12051
12052 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
12053 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
12054 continue;
12055
12056 if (app_type !=
12057 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
12058 continue;
12059
12060 copp = session_copp_map[fe_id][dir][be_id];
12061 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
12062 if (!test_bit(j, &copp))
12063 continue;
12064 ret |= adm_set_volume(bedai->port_id, j, gain);
12065 }
12066 }
12067 }
12068 mutex_unlock(&routing_lock);
12069 return ret ? -EINVAL : 0;
12070}
12071
12072static const struct snd_kcontrol_new app_type_cfg_controls[] = {
12073 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
12074 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
12075 msm_routing_put_app_type_cfg_control),
12076 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
12077 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
12078};
12079
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070012080static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
12081 struct snd_ctl_elem_value *ucontrol)
12082{
12083 int copp_idx, fe_id, be_id, port_type;
12084 int ret = 0;
12085 unsigned long copp;
12086 struct msm_pcm_routing_bdai_data *bedai;
12087 char *param_data = NULL;
12088 uint32_t *update_param_data = NULL;
12089 uint32_t param_size = sizeof(uint32_t) +
12090 sizeof(struct adm_param_data_v5);
12091 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
12092 SESSION_TYPE_RX;
12093 int app_type = ucontrol->value.integer.value[1];
12094 int module_id = ucontrol->value.integer.value[2];
12095 int instance_id = ucontrol->value.integer.value[3];
12096 int param_id = ucontrol->value.integer.value[4];
12097 int param_value = ucontrol->value.integer.value[5];
12098
12099 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
12100 MSM_AFE_PORT_TYPE_TX;
12101 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
12102 __func__, app_type, module_id,
12103 instance_id, param_id, param_value);
12104
12105 param_data = kzalloc(param_size, GFP_KERNEL);
12106 if (!param_data)
12107 return -ENOMEM;
12108
12109 update_param_data = (uint32_t *)param_data;
12110 *update_param_data++ = module_id;
12111 *update_param_data++ = param_id;
12112 *update_param_data++ = sizeof(uint32_t);
12113 *update_param_data++ = param_value;
12114
12115 mutex_lock(&routing_lock);
12116 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
12117 if (is_be_dai_extproc(be_id))
12118 continue;
12119
12120 bedai = &msm_bedais[be_id];
12121 if (afe_get_port_type(bedai->port_id) != port_type)
12122 continue;
12123
12124 if (!bedai->active)
12125 continue;
12126
12127 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
12128 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
12129 continue;
12130
12131 if (app_type !=
12132 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
12133 continue;
12134
12135 copp = session_copp_map[fe_id][dir][be_id];
12136 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
12137 copp_idx++) {
12138 if (!test_bit(copp_idx, &copp))
12139 continue;
12140
12141 ret = adm_send_params_v5(bedai->port_id,
12142 copp_idx,
12143 param_data,
12144 param_size);
12145 if (ret) {
12146 pr_err("%s: Setting param failed with err=%d\n",
12147 __func__, ret);
12148 ret = -EINVAL;
12149 goto done;
12150 }
12151 }
12152 }
12153 }
12154done:
12155 mutex_unlock(&routing_lock);
12156 kfree(param_data);
12157 return ret;
12158}
12159
12160static const struct snd_kcontrol_new module_cfg_controls[] = {
12161 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
12162 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
12163};
12164
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012165static int msm_routing_get_lsm_app_type_cfg_control(
12166 struct snd_kcontrol *kcontrol,
12167 struct snd_ctl_elem_value *ucontrol)
12168{
12169 return 0;
12170}
12171
12172static int msm_routing_put_lsm_app_type_cfg_control(
12173 struct snd_kcontrol *kcontrol,
12174 struct snd_ctl_elem_value *ucontrol)
12175{
12176 int i = 0, j;
12177 int num_app_types = ucontrol->value.integer.value[i++];
12178
12179 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
12180 sizeof(struct msm_pcm_routing_app_type_data));
12181 if (num_app_types > MAX_APP_TYPES) {
12182 pr_err("%s: number of app types exceed the max supported\n",
12183 __func__);
12184 return -EINVAL;
12185 }
12186 for (j = 0; j < num_app_types; j++) {
12187 lsm_app_type_cfg[j].app_type =
12188 ucontrol->value.integer.value[i++];
12189 lsm_app_type_cfg[j].sample_rate =
12190 ucontrol->value.integer.value[i++];
12191 lsm_app_type_cfg[j].bit_width =
12192 ucontrol->value.integer.value[i++];
12193 }
12194
12195 return 0;
12196}
12197
12198static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
12199 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
12200 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
12201 msm_routing_put_lsm_app_type_cfg_control),
12202};
12203
12204static int msm_routing_get_use_ds1_or_ds2_control(
12205 struct snd_kcontrol *kcontrol,
12206 struct snd_ctl_elem_value *ucontrol)
12207{
12208 ucontrol->value.integer.value[0] = is_ds2_on;
12209 return 0;
12210}
12211
12212static int msm_routing_put_use_ds1_or_ds2_control(
12213 struct snd_kcontrol *kcontrol,
12214 struct snd_ctl_elem_value *ucontrol)
12215{
12216 is_ds2_on = ucontrol->value.integer.value[0];
12217 return 0;
12218}
12219
12220static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
12221 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
12222 1, 0, msm_routing_get_use_ds1_or_ds2_control,
12223 msm_routing_put_use_ds1_or_ds2_control),
12224};
12225
12226int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
12227 struct snd_ctl_elem_value *ucontrol) {
12228 int rc = 0;
12229 int be_idx = 0;
12230 char *param_value;
12231 int *update_param_value;
12232 uint32_t param_length = sizeof(uint32_t);
12233 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
12234
12235 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
12236 if (!param_value)
12237 return -ENOMEM;
12238
12239 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
12240 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
12241 break;
12242 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
12243 rc = adm_get_params(SLIMBUS_0_TX, 0,
12244 RMS_MODULEID_APPI_PASSTHRU,
12245 RMS_PARAM_FIRST_SAMPLE,
12246 param_length + param_payload_len,
12247 param_value);
12248 if (rc) {
12249 pr_err("%s: get parameters failed:%d\n", __func__, rc);
12250 kfree(param_value);
12251 return -EINVAL;
12252 }
12253 update_param_value = (int *)param_value;
12254 ucontrol->value.integer.value[0] = update_param_value[0];
12255
12256 pr_debug("%s: FROM DSP value[0] 0x%x\n",
12257 __func__, update_param_value[0]);
12258 }
12259 kfree(param_value);
12260 return 0;
12261}
12262
12263static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
12264 struct snd_ctl_elem_value *ucontrol)
12265{
12266 voc_session_id = ucontrol->value.integer.value[0];
12267
12268 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
12269
12270 return 0;
12271}
12272
12273static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
12274 struct snd_ctl_elem_value *ucontrol)
12275{
12276 ucontrol->value.integer.value[0] = voc_session_id;
12277
12278 return 0;
12279}
12280
12281static struct snd_kcontrol_new msm_voc_session_controls[] = {
12282 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
12283 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
12284 msm_voc_session_id_put),
12285};
12286
12287static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
12288 struct snd_ctl_elem_info *uinfo)
12289{
12290 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12291 uinfo->count = sizeof(struct sound_focus_param);
12292
12293 return 0;
12294}
12295
12296static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
12297 struct snd_ctl_elem_value *ucontrol)
12298{
12299 int ret = 0;
12300 struct sound_focus_param soundFocusData;
12301
12302 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12303 sizeof(struct sound_focus_param));
12304 ret = voc_set_sound_focus(soundFocusData);
12305 if (ret) {
12306 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12307 __func__, ret);
12308
12309 ret = -EINVAL;
12310 }
12311
12312 return ret;
12313}
12314
12315static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
12316 struct snd_ctl_elem_value *ucontrol)
12317{
12318 int ret = 0;
12319 struct sound_focus_param soundFocusData;
12320
12321 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
12322
12323 ret = voc_get_sound_focus(&soundFocusData);
12324 if (ret) {
12325 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12326 __func__, ret);
12327
12328 ret = -EINVAL;
12329 goto done;
12330 }
12331 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12332 sizeof(struct sound_focus_param));
12333
12334done:
12335 return ret;
12336}
12337
12338static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
12339 struct snd_ctl_elem_info *uinfo)
12340{
12341 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12342 uinfo->count = sizeof(struct source_tracking_param);
12343
12344 return 0;
12345}
12346
12347static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
12348 struct snd_ctl_elem_value *ucontrol)
12349{
12350 int ret = 0;
12351 struct source_tracking_param sourceTrackingData;
12352
12353 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
12354
12355 ret = voc_get_source_tracking(&sourceTrackingData);
12356 if (ret) {
12357 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12358 __func__, ret);
12359
12360 ret = -EINVAL;
12361 goto done;
12362 }
12363 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12364 sizeof(struct source_tracking_param));
12365
12366done:
12367 return ret;
12368}
12369
12370static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
12371 int *copp_idx)
12372{
12373 int i, idx, be_idx;
12374 int ret = 0;
12375 unsigned long copp;
12376
12377 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
12378
12379 ret = q6audio_validate_port(port_id);
12380 if (ret < 0) {
12381 pr_err("%s: port validation failed id 0x%x ret %d\n",
12382 __func__, port_id, ret);
12383
12384 ret = -EINVAL;
12385 goto done;
12386 }
12387
12388 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
12389 if (msm_bedais[be_idx].port_id == port_id)
12390 break;
12391 }
12392 if (be_idx >= MSM_BACKEND_DAI_MAX) {
12393 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
12394
12395 ret = -EINVAL;
12396 goto done;
12397 }
12398
12399 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
12400 MSM_FRONTEND_DAI_MM_SIZE) {
12401 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
12402 copp = session_copp_map[i]
12403 [session_type][be_idx];
12404 if (test_bit(idx, &copp))
12405 break;
12406 }
12407 if (idx >= MAX_COPPS_PER_PORT)
12408 continue;
12409 else
12410 break;
12411 }
12412 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
12413 pr_err("%s: Invalid FE, exiting\n", __func__);
12414
12415 ret = -EINVAL;
12416 goto done;
12417 }
12418 *copp_idx = idx;
12419 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
12420
12421done:
12422 return ret;
12423}
12424
12425static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
12426 const char *prefix, int *port_id)
12427{
12428 int ret = 0;
12429
12430 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
12431
12432 /*
12433 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
12434 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
12435 * and compare the string with the backend name to derive the port id.
12436 */
12437 if (!strcmp(kcontrol->id.name + strlen(prefix),
12438 "SLIMBUS_0")) {
12439 *port_id = SLIMBUS_0_TX;
12440 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12441 "TERT_MI2S")) {
12442 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
12443 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12444 "INT3_MI2S")) {
12445 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
Sachin Mohan Gadag8c6e2db2018-07-16 19:53:19 +053012446 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12447 "PRIMARY_TDM")) {
12448 *port_id = AFE_PORT_ID_PRIMARY_TDM_TX;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012449 } else {
12450 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
12451 __func__, kcontrol->id.name);
12452
12453 ret = -EINVAL;
12454 goto done;
12455 }
12456 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
12457 __func__, kcontrol->id.name, *port_id);
12458
12459done:
12460 return ret;
12461}
12462
12463static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
12464 struct snd_ctl_elem_value *ucontrol)
12465{
12466 int ret = 0;
12467 struct sound_focus_param soundFocusData;
12468 int port_id, copp_idx;
12469
12470 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12471 "Sound Focus Audio Tx ", &port_id);
12472 if (ret != 0) {
12473 pr_err("%s: Error in deriving port id, err=%d\n",
12474 __func__, ret);
12475
12476 ret = -EINVAL;
12477 goto done;
12478 }
12479
12480 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12481 &copp_idx);
12482 if (ret) {
12483 pr_err("%s: Could not get copp idx for port_id=%d\n",
12484 __func__, port_id);
12485
12486 ret = -EINVAL;
12487 goto done;
12488 }
12489
12490 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12491 sizeof(struct sound_focus_param));
12492
12493 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
12494 if (ret) {
12495 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12496 __func__, ret);
12497
12498 ret = -EINVAL;
12499 goto done;
12500 }
12501
12502done:
12503 return ret;
12504}
12505
12506static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
12507 struct snd_ctl_elem_value *ucontrol)
12508{
12509 int ret = 0;
12510 struct sound_focus_param soundFocusData;
12511 int port_id, copp_idx;
12512
12513 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12514 "Sound Focus Audio Tx ", &port_id);
12515 if (ret) {
12516 pr_err("%s: Error in deriving port id, err=%d\n",
12517 __func__, ret);
12518
12519 ret = -EINVAL;
12520 goto done;
12521 }
12522
12523 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12524 &copp_idx);
12525 if (ret) {
12526 pr_err("%s: Could not get copp idx for port_id=%d\n",
12527 __func__, port_id);
12528
12529 ret = -EINVAL;
12530 goto done;
12531 }
12532
12533 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
12534 if (ret) {
12535 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12536 __func__, ret);
12537
12538 ret = -EINVAL;
12539 goto done;
12540 }
12541
12542 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12543 sizeof(struct sound_focus_param));
12544
12545done:
12546 return ret;
12547}
12548
12549static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
12550 struct snd_ctl_elem_value *ucontrol)
12551{
12552 int ret = 0;
12553 struct source_tracking_param sourceTrackingData;
12554 int port_id, copp_idx;
12555
12556 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12557 "Source Tracking Audio Tx ", &port_id);
12558 if (ret) {
12559 pr_err("%s: Error in deriving port id, err=%d\n",
12560 __func__, ret);
12561
12562 ret = -EINVAL;
12563 goto done;
12564 }
12565
12566 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12567 &copp_idx);
12568 if (ret) {
12569 pr_err("%s: Could not get copp idx for port_id=%d\n",
12570 __func__, port_id);
12571
12572 ret = -EINVAL;
12573 goto done;
12574 }
12575
12576 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
12577 if (ret) {
12578 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12579 __func__, ret);
12580
12581 ret = -EINVAL;
12582 goto done;
12583 }
12584
12585 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12586 sizeof(struct source_tracking_param));
12587
12588done:
12589 return ret;
12590}
12591
12592static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12593 {
12594 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12595 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12596 .name = "Sound Focus Voice Tx SLIMBUS_0",
12597 .info = msm_sound_focus_info,
12598 .get = msm_voice_sound_focus_get,
12599 .put = msm_voice_sound_focus_put,
12600 },
12601 {
12602 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12603 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12604 .name = "Source Tracking Voice Tx SLIMBUS_0",
12605 .info = msm_source_tracking_info,
12606 .get = msm_voice_source_tracking_get,
12607 },
12608 {
12609 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12610 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12611 .name = "Sound Focus Audio Tx SLIMBUS_0",
12612 .info = msm_sound_focus_info,
12613 .get = msm_audio_sound_focus_get,
12614 .put = msm_audio_sound_focus_put,
12615 },
12616 {
12617 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12618 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12619 .name = "Source Tracking Audio Tx SLIMBUS_0",
12620 .info = msm_source_tracking_info,
12621 .get = msm_audio_source_tracking_get,
12622 },
12623 {
12624 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12625 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12626 .name = "Sound Focus Voice Tx TERT_MI2S",
12627 .info = msm_sound_focus_info,
12628 .get = msm_voice_sound_focus_get,
12629 .put = msm_voice_sound_focus_put,
12630 },
12631 {
12632 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12633 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12634 .name = "Source Tracking Voice Tx TERT_MI2S",
12635 .info = msm_source_tracking_info,
12636 .get = msm_voice_source_tracking_get,
12637 },
12638 {
12639 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12640 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12641 .name = "Sound Focus Audio Tx TERT_MI2S",
12642 .info = msm_sound_focus_info,
12643 .get = msm_audio_sound_focus_get,
12644 .put = msm_audio_sound_focus_put,
12645 },
12646 {
12647 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12648 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12649 .name = "Source Tracking Audio Tx TERT_MI2S",
12650 .info = msm_source_tracking_info,
12651 .get = msm_audio_source_tracking_get,
12652 },
12653 {
12654 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12655 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12656 .name = "Sound Focus Voice Tx INT3_MI2S",
12657 .info = msm_sound_focus_info,
12658 .get = msm_voice_sound_focus_get,
12659 .put = msm_voice_sound_focus_put,
12660 },
12661 {
12662 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12663 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12664 .name = "Source Tracking Voice Tx INT3_MI2S",
12665 .info = msm_source_tracking_info,
12666 .get = msm_voice_source_tracking_get,
12667 },
12668 {
12669 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12670 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12671 .name = "Sound Focus Audio Tx INT3_MI2S",
12672 .info = msm_sound_focus_info,
12673 .get = msm_audio_sound_focus_get,
12674 .put = msm_audio_sound_focus_put,
12675 },
12676 {
12677 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12678 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12679 .name = "Source Tracking Audio Tx INT3_MI2S",
12680 .info = msm_source_tracking_info,
12681 .get = msm_audio_source_tracking_get,
12682 },
Sachin Mohan Gadag8c6e2db2018-07-16 19:53:19 +053012683 {
12684 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12685 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12686 .name = "Sound Focus Audio Tx PRIMARY_TDM",
12687 .info = msm_sound_focus_info,
12688 .get = msm_audio_sound_focus_get,
12689 .put = msm_audio_sound_focus_put,
12690 },
12691 {
12692 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12693 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12694 .name = "Source Tracking Audio Tx PRIMARY_TDM",
12695 .info = msm_source_tracking_info,
12696 .get = msm_audio_source_tracking_get,
12697 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012698};
12699
12700static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12701 struct snd_ctl_elem_value *ucontrol)
12702{
12703 int ret = 0;
12704 int item;
12705 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12706
12707 pr_debug("%s item is %d\n", __func__,
12708 ucontrol->value.enumerated.item[0]);
12709 mutex_lock(&routing_lock);
12710 item = ucontrol->value.enumerated.item[0];
12711 if (item < e->items) {
12712 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12713 __func__, e->shift_l, e->values[item]);
12714 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12715 e->values[item] < MSM_BACKEND_DAI_MAX)
12716 /* Enable feedback TX path */
12717 ret = afe_spk_prot_feed_back_cfg(
12718 msm_bedais[e->values[item]].port_id,
12719 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12720 else {
12721 pr_debug("%s values are out of range item %d\n",
12722 __func__, e->values[item]);
12723 /* Disable feedback TX path */
12724 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12725 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12726 else
12727 ret = -EINVAL;
12728 }
12729 } else {
12730 pr_err("%s item value is out of range item\n", __func__);
12731 ret = -EINVAL;
12732 }
12733 mutex_unlock(&routing_lock);
12734 return ret;
12735}
12736
12737static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12738 struct snd_ctl_elem_value *ucontrol)
12739{
12740 int ret = 0;
12741 int item;
12742 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12743
12744 pr_debug("%s item is %d\n", __func__,
12745 ucontrol->value.enumerated.item[0]);
12746 mutex_lock(&routing_lock);
12747 item = ucontrol->value.enumerated.item[0];
12748 if (item < e->items) {
12749 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12750 __func__, e->shift_l, e->values[item]);
12751 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12752 e->values[item] < MSM_BACKEND_DAI_MAX)
12753 /* Enable feedback TX path */
12754 ret = afe_spk_prot_feed_back_cfg(
12755 msm_bedais[e->values[item]].port_id,
12756 msm_bedais[e->shift_l].port_id,
12757 1, 1, 1);
12758 else {
12759 pr_debug("%s values are out of range item %d\n",
12760 __func__, e->values[item]);
12761 /* Disable feedback TX path */
12762 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12763 ret = afe_spk_prot_feed_back_cfg(0,
12764 0, 0, 0, 0);
12765 else
12766 ret = -EINVAL;
12767 }
12768 } else {
12769 pr_err("%s item value is out of range item\n", __func__);
12770 ret = -EINVAL;
12771 }
12772 mutex_unlock(&routing_lock);
12773 return ret;
12774}
12775
12776static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12777 struct snd_ctl_elem_value *ucontrol)
12778{
12779 pr_debug("%s\n", __func__);
12780 return 0;
12781}
12782
12783static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12784 struct snd_ctl_elem_value *ucontrol)
12785{
12786 pr_debug("%s\n", __func__);
12787 ucontrol->value.enumerated.item[0] = 0;
12788 return 0;
12789}
12790
12791static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12792 "ZERO", "SLIM4_TX"
12793};
12794
12795static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12796 "ZERO", "SLIM4_TX"
12797};
12798
12799static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12800 "ZERO", "SENARY_TX"
12801};
12802
12803static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12804 "ZERO", "INT5_MI2S_TX"
12805};
12806
12807static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12808 "ZERO", "INT5_MI2S_TX"
12809};
12810
12811static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12812 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12813};
12814
12815static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12816 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12817};
12818
12819static const int const mi2s_rx_vi_fb_tx_value[] = {
12820 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12821};
12822
12823static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12824 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12825};
12826
12827static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12828 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12829};
12830
12831static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
Soumya Managoli83eac4f2019-07-23 17:50:08 +053012832 SOC_VALUE_ENUM_DOUBLE(SND_SOC_NOPM, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012833 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12834 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12835
12836static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
Soumya Managoli83eac4f2019-07-23 17:50:08 +053012837 SOC_VALUE_ENUM_DOUBLE(SND_SOC_NOPM, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012838 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12839 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12840
12841static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
Soumya Managoli83eac4f2019-07-23 17:50:08 +053012842 SOC_VALUE_ENUM_DOUBLE(SND_SOC_NOPM, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012843 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12844 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12845
12846static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
Soumya Managoli83eac4f2019-07-23 17:50:08 +053012847 SOC_VALUE_ENUM_DOUBLE(SND_SOC_NOPM, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012848 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12849 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12850 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12851
12852static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
Soumya Managoli83eac4f2019-07-23 17:50:08 +053012853 SOC_VALUE_ENUM_DOUBLE(SND_SOC_NOPM, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012854 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12855 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12856 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12857
12858static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12859 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12860 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12861 spkr_prot_put_vi_lch_port);
12862
12863static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12864 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12865 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12866 spkr_prot_put_vi_rch_port);
12867
12868static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12869 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12870 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12871 spkr_prot_put_vi_lch_port);
12872
12873static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12874 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12875 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12876 spkr_prot_put_vi_lch_port);
12877
12878static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12879 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12880 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12881 spkr_prot_put_vi_rch_port);
12882
12883static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12884 /* Frontend AIF */
12885 /* Widget name equals to Front-End DAI name<Need confirmation>,
12886 * Stream name must contains substring of front-end dai name
12887 */
12888 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12889 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12890 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12891 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12892 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12893 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12894 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12895 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12896 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12897 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12898 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12899 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12900 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12901 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12902 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12903 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12904 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12905 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12906 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12907 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12908 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12909 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12910 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12911 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12912 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12913 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012914 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012915 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012916 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12917 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12918 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12919 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Meng Wangbe8194e2018-04-25 10:40:01 +080012920 SND_SOC_DAPM_AIF_OUT("MM_UL28", "MultiMedia28 Capture", 0, 0, 0, 0),
12921 SND_SOC_DAPM_AIF_OUT("MM_UL29", "MultiMedia29 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012922 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12923 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12924 "VoiceMMode1 Playback", 0, 0, 0, 0),
12925 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12926 "VoiceMMode1 Capture", 0, 0, 0, 0),
12927 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12928 "VoiceMMode2 Playback", 0, 0, 0, 0),
12929 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12930 "VoiceMMode2 Capture", 0, 0, 0, 0),
12931 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12932 0, 0, 0, 0),
12933 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12934 0, 0, 0, 0),
12935 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12936 0, 0, 0, 0),
12937 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12938 0, 0, 0, 0),
12939 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12940 0, 0, 0, 0),
12941 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12942 0, 0, 0, 0),
12943 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12944 0, 0, 0, 0),
12945 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12946 0, 0, 0, 0),
12947 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12948 0, 0, 0, 0),
12949 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12950 0, 0, 0, 0),
12951 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12952 0, 0, 0, 0),
12953 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12954 0, 0, 0, 0),
12955 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12956 0, 0, 0, 0),
12957 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12958 0, 0, 0, 0),
12959 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12960 0, 0, 0, 0),
12961 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12962 0, 0, 0, 0),
12963 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12964 0, 0, 0, 0),
12965 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12966 0, 0, 0, 0),
12967 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12968 0, 0, 0, 0),
12969 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12970 0, 0, 0, 0),
12971 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12972 0, 0, 0, 0),
12973 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12974 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12975 0, 0, 0, 0),
12976 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12977 "INT0 MI2S_RX Hostless Playback",
12978 0, 0, 0, 0),
12979 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12980 "INT4 MI2S_RX Hostless Playback",
12981 0, 0, 0, 0),
12982 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12983 "Primary MI2S_RX Hostless Playback",
12984 0, 0, 0, 0),
12985 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12986 "Secondary MI2S_RX Hostless Playback",
12987 0, 0, 0, 0),
12988 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12989 "Tertiary MI2S_RX Hostless Playback",
12990 0, 0, 0, 0),
12991 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12992 "Quaternary MI2S_RX Hostless Playback",
12993 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012994 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12995 "Quinary MI2S_RX Hostless Playback",
12996 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012997
12998 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12999 0, 0, 0, 0),
13000 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
13001 0, 0, 0, 0),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080013002 SND_SOC_DAPM_AIF_IN("SEC_AUXPCM_DL_HL", "SEC_AUXPCM_HOSTLESS Playback",
13003 0, 0, 0, 0),
13004 SND_SOC_DAPM_AIF_OUT("SEC_AUXPCM_UL_HL", "SEC_AUXPCM_HOSTLESS Capture",
13005 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013006 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
13007 0, 0, 0, 0),
13008 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
13009 "INT3 MI2S_TX Hostless Capture",
13010 0, 0, 0, 0),
13011 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
13012 "Tertiary MI2S_TX Hostless Capture",
13013 0, 0, 0, 0),
13014 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
13015 "Secondary MI2S_TX Hostless Capture",
13016 0, 0, 0, 0),
13017 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
13018 "Primary MI2S_TX Hostless Capture",
13019 0, 0, 0, 0),
13020 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
13021 0, 0, 0, 0),
13022 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
13023 0, 0, 0, 0),
13024 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
13025 "Quaternary MI2S_TX Hostless Capture",
13026 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013027 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
13028 "Quinary MI2S_TX Hostless Capture",
13029 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013030
13031 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
13032 "Primary TDM0 Hostless Playback",
13033 0, 0, 0, 0),
13034 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
13035 "Primary TDM0 Hostless Capture",
13036 0, 0, 0, 0),
13037 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
13038 "Primary TDM1 Hostless Playback",
13039 0, 0, 0, 0),
13040 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
13041 "Primary TDM1 Hostless Capture",
13042 0, 0, 0, 0),
13043 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
13044 "Primary TDM2 Hostless Playback",
13045 0, 0, 0, 0),
13046 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
13047 "Primary TDM2 Hostless Capture",
13048 0, 0, 0, 0),
13049 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
13050 "Primary TDM3 Hostless Playback",
13051 0, 0, 0, 0),
13052 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
13053 "Primary TDM3 Hostless Capture",
13054 0, 0, 0, 0),
13055 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
13056 "Primary TDM4 Hostless Playback",
13057 0, 0, 0, 0),
13058 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
13059 "Primary TDM4 Hostless Capture",
13060 0, 0, 0, 0),
13061 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
13062 "Primary TDM5 Hostless Playback",
13063 0, 0, 0, 0),
13064 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
13065 "Primary TDM5 Hostless Capture",
13066 0, 0, 0, 0),
13067 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
13068 "Primary TDM6 Hostless Playback",
13069 0, 0, 0, 0),
13070 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
13071 "Primary TDM6 Hostless Capture",
13072 0, 0, 0, 0),
13073 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
13074 "Primary TDM7 Hostless Playback",
13075 0, 0, 0, 0),
13076 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
13077 "Primary TDM7 Hostless Capture",
13078 0, 0, 0, 0),
13079 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
13080 "Secondary TDM0 Hostless Playback",
13081 0, 0, 0, 0),
13082 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
13083 "Secondary TDM0 Hostless Capture",
13084 0, 0, 0, 0),
13085 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
13086 "Secondary TDM1 Hostless Playback",
13087 0, 0, 0, 0),
13088 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
13089 "Secondary TDM1 Hostless Capture",
13090 0, 0, 0, 0),
13091 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
13092 "Secondary TDM2 Hostless Playback",
13093 0, 0, 0, 0),
13094 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
13095 "Secondary TDM2 Hostless Capture",
13096 0, 0, 0, 0),
13097 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
13098 "Secondary TDM3 Hostless Playback",
13099 0, 0, 0, 0),
13100 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
13101 "Secondary TDM3 Hostless Capture",
13102 0, 0, 0, 0),
13103 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
13104 "Secondary TDM4 Hostless Playback",
13105 0, 0, 0, 0),
13106 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
13107 "Secondary TDM4 Hostless Capture",
13108 0, 0, 0, 0),
13109 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
13110 "Secondary TDM5 Hostless Playback",
13111 0, 0, 0, 0),
13112 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
13113 "Secondary TDM5 Hostless Capture",
13114 0, 0, 0, 0),
13115 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
13116 "Secondary TDM6 Hostless Playback",
13117 0, 0, 0, 0),
13118 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
13119 "Secondary TDM6 Hostless Capture",
13120 0, 0, 0, 0),
13121 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
13122 "Secondary TDM7 Hostless Playback",
13123 0, 0, 0, 0),
13124 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
13125 "Secondary TDM7 Hostless Capture",
13126 0, 0, 0, 0),
13127 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
13128 "Tertiary TDM0 Hostless Playback",
13129 0, 0, 0, 0),
13130 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
13131 "Tertiary TDM0 Hostless Capture",
13132 0, 0, 0, 0),
13133 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
13134 "Tertiary TDM1 Hostless Playback",
13135 0, 0, 0, 0),
13136 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
13137 "Tertiary TDM1 Hostless Capture",
13138 0, 0, 0, 0),
13139 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
13140 "Tertiary TDM2 Hostless Playback",
13141 0, 0, 0, 0),
13142 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
13143 "Tertiary TDM2 Hostless Capture",
13144 0, 0, 0, 0),
13145 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
13146 "Tertiary TDM3 Hostless Playback",
13147 0, 0, 0, 0),
13148 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
13149 "Tertiary TDM3 Hostless Capture",
13150 0, 0, 0, 0),
13151 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
13152 "Tertiary TDM4 Hostless Playback",
13153 0, 0, 0, 0),
13154 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
13155 "Tertiary TDM4 Hostless Capture",
13156 0, 0, 0, 0),
13157 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
13158 "Tertiary TDM5 Hostless Playback",
13159 0, 0, 0, 0),
13160 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
13161 "Tertiary TDM5 Hostless Capture",
13162 0, 0, 0, 0),
13163 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
13164 "Tertiary TDM6 Hostless Playback",
13165 0, 0, 0, 0),
13166 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
13167 "Tertiary TDM6 Hostless Capture",
13168 0, 0, 0, 0),
13169 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
13170 "Tertiary TDM7 Hostless Playback",
13171 0, 0, 0, 0),
13172 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
13173 "Tertiary TDM7 Hostless Capture",
13174 0, 0, 0, 0),
13175 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
13176 "Quaternary TDM0 Hostless Playback",
13177 0, 0, 0, 0),
13178 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
13179 "Quaternary TDM0 Hostless Capture",
13180 0, 0, 0, 0),
13181 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
13182 "Quaternary TDM1 Hostless Playback",
13183 0, 0, 0, 0),
13184 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
13185 "Quaternary TDM1 Hostless Capture",
13186 0, 0, 0, 0),
13187 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
13188 "Quaternary TDM2 Hostless Playback",
13189 0, 0, 0, 0),
13190 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
13191 "Quaternary TDM2 Hostless Capture",
13192 0, 0, 0, 0),
13193 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
13194 "Quaternary TDM3 Hostless Playback",
13195 0, 0, 0, 0),
13196 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
13197 "Quaternary TDM3 Hostless Capture",
13198 0, 0, 0, 0),
13199 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
13200 "Quaternary TDM4 Hostless Playback",
13201 0, 0, 0, 0),
13202 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
13203 "Quaternary TDM4 Hostless Capture",
13204 0, 0, 0, 0),
13205 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
13206 "Quaternary TDM5 Hostless Playback",
13207 0, 0, 0, 0),
13208 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
13209 "Quaternary TDM5 Hostless Capture",
13210 0, 0, 0, 0),
13211 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
13212 "Quaternary TDM6 Hostless Playback",
13213 0, 0, 0, 0),
13214 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
13215 "Quaternary TDM6 Hostless Capture",
13216 0, 0, 0, 0),
13217 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
13218 "Quaternary TDM7 Hostless Playback",
13219 0, 0, 0, 0),
13220 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
13221 "Quaternary TDM7 Hostless Capture",
13222 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013223 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
13224 "Quinary TDM0 Hostless Playback",
13225 0, 0, 0, 0),
13226 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
13227 "Quinary TDM0 Hostless Capture",
13228 0, 0, 0, 0),
13229 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
13230 "Quinary TDM1 Hostless Playback",
13231 0, 0, 0, 0),
13232 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
13233 "Quinary TDM1 Hostless Capture",
13234 0, 0, 0, 0),
13235 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
13236 "Quinary TDM2 Hostless Playback",
13237 0, 0, 0, 0),
13238 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
13239 "Quinary TDM2 Hostless Capture",
13240 0, 0, 0, 0),
13241 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
13242 "Quinary TDM3 Hostless Playback",
13243 0, 0, 0, 0),
13244 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
13245 "Quinary TDM3 Hostless Capture",
13246 0, 0, 0, 0),
13247 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
13248 "Quinary TDM4 Hostless Playback",
13249 0, 0, 0, 0),
13250 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
13251 "Quinary TDM4 Hostless Capture",
13252 0, 0, 0, 0),
13253 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
13254 "Quinary TDM5 Hostless Playback",
13255 0, 0, 0, 0),
13256 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
13257 "Quinary TDM5 Hostless Capture",
13258 0, 0, 0, 0),
13259 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
13260 "Quinary TDM6 Hostless Playback",
13261 0, 0, 0, 0),
13262 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
13263 "Quinary TDM6 Hostless Capture",
13264 0, 0, 0, 0),
13265 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
13266 "Quinary TDM7 Hostless Playback",
13267 0, 0, 0, 0),
13268 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
13269 "Quinary TDM7 Hostless Capture",
13270 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013271
13272 /* LSM */
13273 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
13274 0, 0, 0, 0),
13275 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
13276 0, 0, 0, 0),
13277 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
13278 0, 0, 0, 0),
13279 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
13280 0, 0, 0, 0),
13281 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
13282 0, 0, 0, 0),
13283 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
13284 0, 0, 0, 0),
13285 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
13286 0, 0, 0, 0),
13287 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
13288 0, 0, 0, 0),
13289 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
13290 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
13291 /* Backend AIF */
13292 /* Stream name equals to backend dai link stream name */
13293 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
13294 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
13295 0, 0, 0, 0),
13296 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
13297 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
13298 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
13299 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
13300 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
13301 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
13302 0, 0, 0, 0),
13303 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
13304 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
13305 0, 0, 0, 0),
13306 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
13307 0, 0, 0, 0),
13308 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
13309 0, 0, 0, 0),
13310 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
13311 "Secondary MI2S Playback SD1",
13312 0, 0, 0, 0),
13313 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
13314 0, 0, 0, 0),
13315 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
13316 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013317 SND_SOC_DAPM_AIF_OUT("INT2_MI2S_RX", "INT2 MI2S Playback",
13318 0, 0, 0, 0),
13319 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_RX", "INT3 MI2S Playback",
13320 0, 0, 0, 0),
13321 SND_SOC_DAPM_AIF_OUT("INT5_MI2S_RX", "INT5 MI2S Playback",
13322 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013323 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
13324 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013325 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_TX", "INT4 MI2S Capture",
13326 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013327 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
13328 0, 0, 0, 0),
13329 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
13330 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
13331 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
13332 0, 0, 0, 0),
13333 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
13334 0, 0, 0, 0),
13335 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
13336 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013337 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_TX", "INT0 MI2S Capture",
13338 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013339 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
13340 0, 0, 0, 0),
13341 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
13342 0, 0, 0, 0),
13343 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
13344 0, 0, 0, 0),
13345 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
13346 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
13347 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
13348 0, 0, 0, 0),
13349 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
13350 0, 0, 0, 0),
13351 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
13352 0, 0, 0, 0),
13353 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
13354 0, 0, 0, 0),
13355 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
13356 0, 0, 0, 0),
13357 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
13358 0, 0, 0, 0),
13359 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
13360 0, 0, 0, 0),
13361 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
13362 0, 0, 0, 0),
13363 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
13364 0, 0, 0, 0),
13365 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
13366 0, 0, 0, 0),
13367 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
13368 0, 0, 0, 0),
13369 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
13370 0, 0, 0, 0),
13371 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
13372 0, 0, 0, 0),
13373 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
13374 0, 0, 0, 0),
13375 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
13376 0, 0, 0, 0),
13377 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
13378 0, 0, 0, 0),
13379 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
13380 0, 0, 0, 0),
13381 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
13382 0, 0, 0, 0),
13383 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
13384 0, 0, 0, 0),
13385 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
13386 0, 0, 0, 0),
13387 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
13388 0, 0, 0, 0),
13389 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
13390 0, 0, 0, 0),
13391 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
13392 0, 0, 0, 0),
13393 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
13394 0, 0, 0, 0),
13395 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
13396 0, 0, 0, 0),
13397 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
13398 0, 0, 0, 0),
13399 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
13400 0, 0, 0, 0),
13401 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
13402 0, 0, 0, 0),
13403 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
13404 0, 0, 0, 0),
13405 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
13406 0, 0, 0, 0),
13407 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
13408 0, 0, 0, 0),
13409 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
13410 0, 0, 0, 0),
13411 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
13412 0, 0, 0, 0),
13413 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
13414 0, 0, 0, 0),
13415 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
13416 0, 0, 0, 0),
13417 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
13418 0, 0, 0, 0),
13419 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
13420 0, 0, 0, 0),
13421 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
13422 0, 0, 0, 0),
13423 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
13424 0, 0, 0, 0),
13425 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
13426 0, 0, 0, 0),
13427 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
13428 0, 0, 0, 0),
13429 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
13430 0, 0, 0, 0),
13431 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
13432 0, 0, 0, 0),
13433 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
13434 0, 0, 0, 0),
13435 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
13436 0, 0, 0, 0),
13437 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
13438 0, 0, 0, 0),
13439 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
13440 0, 0, 0, 0),
13441 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
13442 0, 0, 0, 0),
13443 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
13444 0, 0, 0, 0),
13445 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
13446 0, 0, 0, 0),
13447 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
13448 0, 0, 0, 0),
13449 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
13450 0, 0, 0, 0),
13451 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
13452 0, 0, 0, 0),
13453 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
13454 0, 0, 0, 0),
13455 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
13456 0, 0, 0, 0),
13457 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
13458 0, 0, 0, 0),
13459 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
13460 0, 0, 0, 0),
13461 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
13462 0, 0, 0, 0),
13463 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
13464 0, 0, 0, 0),
13465 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
13466 0, 0, 0, 0),
13467 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
13468 0, 0, 0, 0),
13469 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
13470 0, 0, 0, 0),
13471 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
13472 0, 0, 0, 0),
13473 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
13474 0, 0, 0, 0),
13475 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
13476 0, 0, 0, 0),
13477 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
13478 0, 0, 0, 0),
13479 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
13480 0, 0, 0, 0),
13481 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
13482 0, 0, 0, 0),
13483 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
13484 0, 0, 0, 0),
13485 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
13486 0, 0, 0, 0),
13487 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
13488 0, 0, 0, 0),
13489 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
13490 0, 0, 0, 0),
13491 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
13492 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013493 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
13494 0, 0, 0, 0),
13495 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
13496 0, 0, 0, 0),
13497 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
13498 0, 0, 0, 0),
13499 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
13500 0, 0, 0, 0),
13501 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
13502 0, 0, 0, 0),
13503 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
13504 0, 0, 0, 0),
13505 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
13506 0, 0, 0, 0),
13507 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
13508 0, 0, 0, 0),
13509 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
13510 0, 0, 0, 0),
13511 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
13512 0, 0, 0, 0),
13513 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
13514 0, 0, 0, 0),
13515 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
13516 0, 0, 0, 0),
13517 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
13518 0, 0, 0, 0),
13519 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
13520 0, 0, 0, 0),
13521 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
13522 0, 0, 0, 0),
13523 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
13524 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013525 /* incall */
13526 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
13527 0, 0, 0, 0),
13528 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
13529 0, 0, 0, 0),
13530 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
13531 0, 0, 0, 0),
13532 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
13533 0, 0, 0, 0),
13534 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
13535 0, 0, 0, 0),
13536 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
13537 0, 0, 0, 0),
13538 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
13539 0, 0, 0, 0),
13540 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
13541 0, 0, 0, 0),
13542 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
13543
13544 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
13545 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
13546 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
13547 0, 0, 0, 0),
13548 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
13549 0, 0, 0, 0),
13550 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
13551 0, 0, 0, 0),
13552 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
13553 0, 0, 0, 0),
13554 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
13555 0, 0, 0, 0),
13556 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
13557 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013558 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
13559 0, 0, 0, 0),
13560 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
13561 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013562 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
13563 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
13564 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
13565 0, 0, 0, 0),
13566 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
13567 0, 0, 0, 0),
13568 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
13569 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
13570 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
13571 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
13572 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
13573 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
13574 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
13575 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
13576 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
13577 /* In- call recording */
13578 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
13579 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
Raja Mallik425e1d32018-05-20 19:21:10 +053013580 SND_SOC_DAPM_AIF_IN("AFE_LOOPBACK_TX", "AFE Loopback Capture",
13581 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013582 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
13583 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
13584
13585 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
13586 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
13587 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
13588 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
13589
13590 /* Switch Definitions */
13591 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
13592 &slim_fm_switch_mixer_controls),
13593 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
13594 &slim1_fm_switch_mixer_controls),
13595 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
13596 &slim3_fm_switch_mixer_controls),
13597 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
13598 &slim4_fm_switch_mixer_controls),
13599 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
13600 &slim6_fm_switch_mixer_controls),
13601 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13602 &pcm_rx_switch_mixer_controls),
13603 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13604 &int0_mi2s_rx_switch_mixer_controls),
13605 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13606 &int4_mi2s_rx_switch_mixer_controls),
13607 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13608 &pri_mi2s_rx_switch_mixer_controls),
13609 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13610 &sec_mi2s_rx_switch_mixer_controls),
13611 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13612 &tert_mi2s_rx_switch_mixer_controls),
13613 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13614 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013615 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13616 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013617 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13618 &hfp_pri_aux_switch_mixer_controls),
13619 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13620 &hfp_aux_switch_mixer_controls),
13621 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13622 &hfp_int_switch_mixer_controls),
13623 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13624 &hfp_slim7_switch_mixer_controls),
13625 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13626 &usb_switch_mixer_controls),
Aniket Kumar Lataf8664712018-02-22 14:46:09 -080013627 SND_SOC_DAPM_SWITCH("A2DP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13628 &a2dp_slim7_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013629
13630 /* Mixer definitions */
13631 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13632 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13633 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13634 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13635 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13636 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13637 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13638 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13639 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13640 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13641 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13642 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13643 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13644 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13645 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13646 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13647 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13648 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13649 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13650 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13651 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13652 quaternary_mi2s_rx_mixer_controls,
13653 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13654 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13655 tertiary_mi2s_rx_mixer_controls,
13656 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13657 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13658 secondary_mi2s_rx_mixer_controls,
13659 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13660 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13661 secondary_mi2s_rx2_mixer_controls,
13662 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13663 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13664 primary_mi2s_rx_mixer_controls,
13665 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13666 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13667 int0_mi2s_rx_mixer_controls,
13668 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13669 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13670 int4_mi2s_rx_mixer_controls,
13671 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13672 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13673 quinary_mi2s_rx_mixer_controls,
13674 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13675 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13676 pri_tdm_rx_0_mixer_controls,
13677 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13678 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13679 pri_tdm_rx_1_mixer_controls,
13680 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13681 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13682 pri_tdm_rx_2_mixer_controls,
13683 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13684 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13685 pri_tdm_rx_3_mixer_controls,
13686 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13687 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13688 pri_tdm_tx_0_mixer_controls,
13689 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13690 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13691 sec_tdm_rx_0_mixer_controls,
13692 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13693 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13694 sec_tdm_rx_1_mixer_controls,
13695 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13696 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13697 sec_tdm_rx_2_mixer_controls,
13698 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13699 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13700 sec_tdm_rx_3_mixer_controls,
13701 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13702 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13703 sec_tdm_tx_0_mixer_controls,
13704 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13705 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13706 tert_tdm_rx_0_mixer_controls,
13707 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13708 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13709 tert_tdm_tx_0_mixer_controls,
13710 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13711 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13712 tert_tdm_rx_1_mixer_controls,
13713 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13714 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13715 tert_tdm_rx_2_mixer_controls,
13716 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13717 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13718 tert_tdm_rx_3_mixer_controls,
13719 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13720 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13721 tert_tdm_rx_4_mixer_controls,
13722 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13723 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13724 quat_tdm_rx_0_mixer_controls,
13725 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13726 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13727 quat_tdm_tx_0_mixer_controls,
13728 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13729 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13730 quat_tdm_rx_1_mixer_controls,
13731 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13732 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13733 quat_tdm_rx_2_mixer_controls,
13734 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13735 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13736 quat_tdm_rx_3_mixer_controls,
13737 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013738 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13739 quin_tdm_rx_0_mixer_controls,
13740 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13741 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13742 quin_tdm_tx_0_mixer_controls,
13743 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13744 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13745 quin_tdm_rx_1_mixer_controls,
13746 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13747 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13748 quin_tdm_rx_2_mixer_controls,
13749 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13750 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13751 quin_tdm_rx_3_mixer_controls,
13752 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013753 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13754 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13755 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13756 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13757 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13758 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13759 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13760 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13761 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13762 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13763 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13764 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13765 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13766 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13767 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13768 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013769 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13770 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013771 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13772 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013773 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13774 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13775 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13776 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13777 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13778 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13779 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13780 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053013781 SND_SOC_DAPM_MIXER("MultiMedia28 Mixer", SND_SOC_NOPM, 0, 0,
13782 mmul28_mixer_controls, ARRAY_SIZE(mmul28_mixer_controls)),
13783 SND_SOC_DAPM_MIXER("MultiMedia29 Mixer", SND_SOC_NOPM, 0, 0,
13784 mmul29_mixer_controls, ARRAY_SIZE(mmul29_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013785 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13786 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13787 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13788 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13789 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13790 tert_auxpcm_rx_mixer_controls,
13791 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13792 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13793 quat_auxpcm_rx_mixer_controls,
13794 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013795 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13796 quin_auxpcm_rx_mixer_controls,
13797 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013798 /* incall */
13799 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13800 incall_music_delivery_mixer_controls,
13801 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13802 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13803 incall_music2_delivery_mixer_controls,
13804 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13805 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13806 slimbus_4_rx_mixer_controls,
13807 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13808 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13809 slimbus_6_rx_mixer_controls,
13810 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13811 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13812 usb_audio_rx_mixer_controls,
13813 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13814 /* Voice Mixer */
13815 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13816 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13817 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13818 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13819 SND_SOC_NOPM, 0, 0,
13820 sec_i2s_rx_voice_mixer_controls,
13821 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13822 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13823 SND_SOC_NOPM, 0, 0,
13824 sec_mi2s_rx_voice_mixer_controls,
13825 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13826 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13827 SND_SOC_NOPM, 0, 0,
13828 slimbus_rx_voice_mixer_controls,
13829 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13830 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13831 SND_SOC_NOPM, 0, 0,
13832 bt_sco_rx_voice_mixer_controls,
13833 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13834 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13835 SND_SOC_NOPM, 0, 0,
13836 afe_pcm_rx_voice_mixer_controls,
13837 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13838 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13839 SND_SOC_NOPM, 0, 0,
13840 aux_pcm_rx_voice_mixer_controls,
13841 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13842 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13843 SND_SOC_NOPM, 0, 0,
13844 sec_aux_pcm_rx_voice_mixer_controls,
13845 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13846 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13847 SND_SOC_NOPM, 0, 0,
13848 tert_aux_pcm_rx_voice_mixer_controls,
13849 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13850 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13851 SND_SOC_NOPM, 0, 0,
13852 quat_aux_pcm_rx_voice_mixer_controls,
13853 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013854 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13855 SND_SOC_NOPM, 0, 0,
13856 quin_aux_pcm_rx_voice_mixer_controls,
13857 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013858 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13859 SND_SOC_NOPM, 0, 0,
13860 hdmi_rx_voice_mixer_controls,
13861 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13862 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13863 SND_SOC_NOPM, 0, 0,
13864 mi2s_rx_voice_mixer_controls,
13865 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13866 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13867 SND_SOC_NOPM, 0, 0,
13868 pri_mi2s_rx_voice_mixer_controls,
13869 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13870 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13871 SND_SOC_NOPM, 0, 0,
13872 int0_mi2s_rx_voice_mixer_controls,
13873 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13874 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13875 SND_SOC_NOPM, 0, 0,
13876 int4_mi2s_rx_voice_mixer_controls,
13877 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13878 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13879 SND_SOC_NOPM, 0, 0,
13880 tert_mi2s_rx_voice_mixer_controls,
13881 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13882 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13883 SND_SOC_NOPM, 0, 0,
13884 quat_mi2s_rx_voice_mixer_controls,
13885 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13886 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13887 SND_SOC_NOPM, 0, 0,
13888 quin_mi2s_rx_voice_mixer_controls,
13889 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
Raja Mallik321d5712018-05-04 17:22:11 +053013890 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0_Voice Mixer",
13891 SND_SOC_NOPM, 0, 0,
13892 pri_tdm_rx_0_voice_mixer_controls,
13893 ARRAY_SIZE(pri_tdm_rx_0_voice_mixer_controls)),
13894 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1_Voice Mixer",
13895 SND_SOC_NOPM, 0, 0,
13896 pri_tdm_rx_1_voice_mixer_controls,
13897 ARRAY_SIZE(pri_tdm_rx_1_voice_mixer_controls)),
13898 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2_Voice Mixer",
13899 SND_SOC_NOPM, 0, 0,
13900 pri_tdm_rx_2_voice_mixer_controls,
13901 ARRAY_SIZE(pri_tdm_rx_2_voice_mixer_controls)),
13902 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3_Voice Mixer",
13903 SND_SOC_NOPM, 0, 0,
13904 pri_tdm_rx_3_voice_mixer_controls,
13905 ARRAY_SIZE(pri_tdm_rx_3_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013906 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13907 SND_SOC_NOPM, 0, 0,
13908 quat_tdm_rx_2_voice_mixer_controls,
13909 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013910 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13911 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13912 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013913 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13914 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13915 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13916 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13917 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13918 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13919 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13920 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13921 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13922 int_bt_a2dp_rx_mixer_controls,
13923 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13924 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13925 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13926 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13927 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13928 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13929 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13930 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13931 tx_voice2_stub_mixer_controls,
13932 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13933 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13934 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13935 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13936 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13937 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13938 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13939 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13940 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13941 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13942 SND_SOC_NOPM, 0, 0,
13943 slimbus_6_rx_voice_mixer_controls,
13944 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13945 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13946 slimbus_7_rx_voice_mixer_controls,
13947 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13948 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13949 slimbus_8_rx_voice_mixer_controls,
13950 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13951 /* port mixer */
13952 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13953 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13954 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13955 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13956 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13957 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13958 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13959 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13960 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13961 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13962 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13963 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13964 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13965 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13966 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013967 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13968 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13969 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013970 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13971 sbus_1_rx_port_mixer_controls,
13972 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13973 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13974 bt_sco_rx_port_mixer_controls,
13975 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13976 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13977 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13978 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13979 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13980 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13981 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13982 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13983 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13984 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13985 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13986 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13987 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13988 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13989 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13990 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13991 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13992 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13993 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13994 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13995 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13996 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13997 primary_mi2s_rx_port_mixer_controls,
13998 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13999 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
14000 sec_mi2s_rx_port_mixer_controls,
14001 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
14002 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
14003 tert_mi2s_rx_port_mixer_controls,
14004 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
14005 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
14006 quat_mi2s_rx_port_mixer_controls,
14007 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053014008 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
14009 quin_mi2s_rx_port_mixer_controls,
14010 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014011 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
14012 pri_tdm_rx_0_port_mixer_controls,
14013 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
14014 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
14015 pri_tdm_rx_1_port_mixer_controls,
14016 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
14017 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
14018 pri_tdm_rx_2_port_mixer_controls,
14019 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
14020 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
14021 pri_tdm_rx_3_port_mixer_controls,
14022 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
14023 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
14024 sec_tdm_rx_0_port_mixer_controls,
14025 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
14026 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
14027 sec_tdm_rx_1_port_mixer_controls,
14028 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
14029 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
14030 sec_tdm_rx_2_port_mixer_controls,
14031 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
14032 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
14033 sec_tdm_rx_3_port_mixer_controls,
14034 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
14035 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
14036 tert_tdm_rx_0_port_mixer_controls,
14037 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
14038 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
14039 tert_tdm_rx_1_port_mixer_controls,
14040 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
14041 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
14042 tert_tdm_rx_2_port_mixer_controls,
14043 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
14044 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
14045 tert_tdm_rx_3_port_mixer_controls,
14046 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
14047 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
14048 quat_tdm_rx_0_port_mixer_controls,
14049 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
14050 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
14051 quat_tdm_rx_1_port_mixer_controls,
14052 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
14053 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
14054 quat_tdm_rx_2_port_mixer_controls,
14055 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
14056 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
14057 quat_tdm_rx_3_port_mixer_controls,
14058 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053014059 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
14060 quin_tdm_rx_0_port_mixer_controls,
14061 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
14062 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
14063 quin_tdm_rx_1_port_mixer_controls,
14064 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
14065 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
14066 quin_tdm_rx_2_port_mixer_controls,
14067 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
14068 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
14069 quin_tdm_rx_3_port_mixer_controls,
14070 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014071 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
14072 int0_mi2s_rx_port_mixer_controls,
14073 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
14074 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
14075 int4_mi2s_rx_port_mixer_controls,
14076 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
14077 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
14078 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
14079 ARRAY_SIZE(tx_qchat_mixer_controls)),
14080 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
14081 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
14082 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
14083 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
14084 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
14085 ARRAY_SIZE(usb_rx_port_mixer_controls)),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080014086 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
14087 SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
14088 ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014089 /* lsm mixer definitions */
14090 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
14091 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
14092 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
14093 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
14094 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
14095 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
14096 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
14097 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
14098 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
14099 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
14100 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
14101 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
14102 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
14103 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
14104 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
14105 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
14106 /* Virtual Pins to force backends ON atm */
14107 SND_SOC_DAPM_OUTPUT("BE_OUT"),
14108 SND_SOC_DAPM_INPUT("BE_IN"),
14109
14110 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
14111 &slim0_rx_vi_fb_lch_mux),
14112 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
14113 &slim0_rx_vi_fb_rch_mux),
14114 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
14115 &mi2s_rx_vi_fb_mux),
14116 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
14117 &int4_mi2s_rx_vi_fb_mono_ch_mux),
14118 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
14119 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
14120
14121 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
14122 &voc_ext_ec_mux),
14123 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
14124 &ext_ec_ref_mux_ul1),
14125 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
14126 &ext_ec_ref_mux_ul2),
14127 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
14128 &ext_ec_ref_mux_ul3),
14129 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
14130 &ext_ec_ref_mux_ul4),
14131 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
14132 &ext_ec_ref_mux_ul5),
14133 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
14134 &ext_ec_ref_mux_ul6),
14135 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
14136 &ext_ec_ref_mux_ul8),
14137 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
14138 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053014139 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
14140 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053014141 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
14142 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014143 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
14144 &ext_ec_ref_mux_ul17),
14145 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
14146 &ext_ec_ref_mux_ul18),
14147 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
14148 &ext_ec_ref_mux_ul19),
Meng Wangbe8194e2018-04-25 10:40:01 +080014149 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL28 MUX", SND_SOC_NOPM, 0, 0,
14150 &ext_ec_ref_mux_ul28),
14151 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL29 MUX", SND_SOC_NOPM, 0, 0,
14152 &ext_ec_ref_mux_ul29),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014153};
14154
14155static const struct snd_soc_dapm_route intercon[] = {
14156 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14157 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14158 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14159 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14160 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14161 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14162 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14163 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14164 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14165 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14166 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14167 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14168 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14169 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14170 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14171 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14172 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
14173
14174 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14175 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14176 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14177 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14178 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14179 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14180 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14181 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14182 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14183 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14184 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14185 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14186 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14187 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14188 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14189 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14190 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
14191
14192 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14193 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14194 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14195 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14196 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14197 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14198 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14199 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14200 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14201 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14202 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14203 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14204 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14205 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14206 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14207 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14208 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
14209
14210 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14211 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14212 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14213 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14214 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14215 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14216 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14217 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14218 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14219 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14220 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14221 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14222 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14223 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14224 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14225 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14226 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
14227
14228 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14229 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14230 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14231 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14232 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14233 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14234 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14235 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14236 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14237 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14238 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14239 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14240 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14241 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14242 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14243 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14244 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
14245
14246 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
14247 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
14248 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
14249 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
14250 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
14251 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
14252 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
14253 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
14254 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
14255 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
14256 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
14257 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
14258 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
14259 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
14260 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
14261 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
14262 {"HDMI", NULL, "HDMI Mixer"},
14263
14264 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
14265 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
14266 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
14267 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
14268 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
14269 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
14270 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
14271 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
14272 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
14273 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
14274 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
14275 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
14276 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
14277 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
14278 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
14279 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
14280 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
14281
14282 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14283 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14284 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14285 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14286 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14287 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14288 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14289 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14290 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14291 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14292 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14293 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14294 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14295 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14296 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14297 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14298 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
14299
14300 /* incall */
14301 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
14302 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
14303 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
14304 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
14305 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
14306 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14307 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14308 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14309 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14310 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
14311 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14312 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14313 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14314 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14315 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
14316
14317 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14318 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14319 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14320 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14321 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14322 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14323 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14324 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14325 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14326 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14327 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14328 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14329 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14330 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14331 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14332 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14333 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
14334
14335 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14336 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14337 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14338 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14339 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14340 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14341 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14342 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14343 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14344 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14345 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14346 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14347 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14348 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14349 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14350 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14351 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
14352
14353 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14354 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14355 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14356 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14357 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14358 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14359 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14360 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14361 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14362 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14363 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14364 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14365 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14366 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14367 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14368 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14369 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
14370
14371 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14372 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14373 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14374 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14375 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14376 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14377 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
14378 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14379 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14380 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14381 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14382 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14383 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14384 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14385 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14386 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014387 {"MultiMedia28 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14388 {"MultiMedia29 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014389 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14390 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14391 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14392 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14393 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14394 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014395 {"MultiMedia28 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14396 {"MultiMedia29 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014397 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014398 {"MultiMedia17 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14399 {"MultiMedia18 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14400 {"MultiMedia19 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14401 {"MultiMedia28 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14402 {"MultiMedia29 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14403 {"MultiMedia17 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014404 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014405 {"MultiMedia19 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14406 {"MultiMedia28 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14407 {"MultiMedia29 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014408 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14409 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14410 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014411 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014412 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014413 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14414 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014415 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014416 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14417 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14418 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14419 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14420 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14421 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14422 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14423 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14424 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14425 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14426 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14427 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14428 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14429 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14430 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14431 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14432 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
14433
14434 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14435 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14436 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14437 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14438 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14439 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14440 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14441 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14442 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14443 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14444 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14445 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14446 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14447 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14448 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14449 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
14450
14451 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14452 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14453 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14454 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14455 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14456 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14457 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14458 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14459 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14460 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14461 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14462 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14463 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14464 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14465 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
14466
14467 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14468 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14469 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14470 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14471 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14472 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14473 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14474 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14475 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14476 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14477 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14478 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14479 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14480 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14481 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
14482
14483 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14484 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
14485
14486 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14487 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14488
14489 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14490 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14491 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14492 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14493 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14494 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14495 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14496 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
Sachin Mohan Gadagd1b8fbc2018-07-20 15:50:17 +053014497 {"PRI_MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014498 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14499 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14500 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14501 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14502 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14503 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14504 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14505 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
14506
14507 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14508 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14509 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14510 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14511 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14512 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14513 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14514 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14515 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14516 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14517 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14518 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14519 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14520 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14521 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14522 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
14523
14524 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14525 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14526 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14527 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14528 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14529 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14530 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14531 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14532 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14533 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14534 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14535 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14536 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14537 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14538 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14539 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
14540
14541 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14542 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14543 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14544 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14545 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14546 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14547 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14548 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14549 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14550 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14551 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14552 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14553 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14554 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14555 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14556 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14557 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14558 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
14559
14560 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14561 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14562 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14563 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14564 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14565 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14566 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14567 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14568 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14569 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14570 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14571 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14572 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14573 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14574 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14575 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14576 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
14577
14578 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14579 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14580 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14581 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14582 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14583 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14584 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14585 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14586 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14587 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14588 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14589 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14590 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14591 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14592 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14593 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14594 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
14595
14596 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14597 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14598 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14599 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14600 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14601 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14602 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14603 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14604 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14605 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14606 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14607 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14608 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14609 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14610 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14611 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14612 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
14613
14614 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14615 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14616 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14617 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14618 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14619 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14620 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14621 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14622 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14623 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14624 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14625 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14626 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14627 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14628 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14629 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14630 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
14631
14632 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14633 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14634 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14635 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14636 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14637 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14638 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14639 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14640 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14641 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14642 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14643 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14644 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14645 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14646 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14647 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14648 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14649
14650 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14651 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14652 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14653 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14654 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14655 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14656 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14657 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14658 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14659 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14660 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14661 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14662 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14663 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14664 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14665 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14666 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14667
14668 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14669 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14670 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14671 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14672 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14673 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14674 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14675 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14676 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14677 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14678 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14679 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14680 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14681 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14682 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14683 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14684 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14685
14686 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14687 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14688 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14689 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14690 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14691 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14692 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14693 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14694 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14695 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14696 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14697 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14698 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14699 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14700 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14701 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14702 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14703
14704 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14705 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14706 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14707 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14708 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14709 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14710 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14711 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14712 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14713 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14714 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14715 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14716 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14717 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14718 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14719 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14720 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14721
14722 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14723 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14724 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14725 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14726 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14727 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14728 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14729 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14730 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14731 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14732 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14733 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14734 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14735 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14736 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14737 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14738 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14739
14740 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14741 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14742 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14743 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14744 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14745 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14746 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14747 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14748 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14749 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14750 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14751 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14752 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14753 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14754 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14755 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14756 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14757
14758 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14759 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14760 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14761 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14762 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14763 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14764 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14765 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14766 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14767 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14768 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14769 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14770 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14771 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14772 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14773 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14774 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14775
14776 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14777 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14778 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14779 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14780 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14781 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14782 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14783 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14784 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14785 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14786 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14787 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14788 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14789 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14790 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14791 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14792 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14793
14794 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14795 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14796 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14797 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14798 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14799 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14800 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14801 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14802 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14803 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14804 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14805 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14806 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14807 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14808 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14809 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14810 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14811
14812 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14813 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14814 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14815 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14816 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14817 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14818 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14819 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14820 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14821 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14822 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14823 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14824 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14825 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14826 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14827 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14828 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14829
14830 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14831 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14832 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14833 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14834 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14835 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14836 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14837 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14838 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14839 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14840 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14841 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14842 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14843 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14844 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14845 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14846 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14847
14848 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14849 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14850 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14851 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14852 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14853 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14854 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14855 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14856 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14857 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14858 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14859 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14860 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14861 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14862 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14863 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14864 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14865 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14866
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014867 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14868 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14869 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14870 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14871 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14872 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14873 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14874 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14875 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14876 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14877 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14878 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14879 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14880 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14881 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14882 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14883 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14884
14885 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14886 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14887 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14888 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14889 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14890 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14891 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14892 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14893 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14894 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14895 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14896 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14897 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14898 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14899 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14900 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14901 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14902 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14903
14904 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14905 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14906 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14907 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14908 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14909 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14910 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14911 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14912 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14913 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14914 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14915 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14916 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14917 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14918 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14919 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14920 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14921 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14922
14923 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14924 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14925 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14926 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14927 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14928 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14929 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14930 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14931 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14932 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14933 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14934 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14935 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14936 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14937 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14938 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14939 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14940 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14941
Rohit Kumara5077932017-09-10 22:05:05 +053014942 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14943 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14944 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14945 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14946 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14947 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14948 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14949 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14950 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14951 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14952 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14953 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14954 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14955 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14956 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14957 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14958 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14959 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14960
14961 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14962 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14963 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14964 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14965 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14966 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14967 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14968 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14969 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14970 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14971 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14972 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14973 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14974 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14975 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14976 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14977 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14978
14979 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14980 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14981 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14982 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14983 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14984 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14985 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14986 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14987 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14988 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14989 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14990 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14991 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14992 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14993 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14994 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14995 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14996 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14997
14998 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14999 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
15000 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
15001 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
15002 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
15003 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
15004 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
15005 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
15006 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
15007 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
15008 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
15009 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
15010 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
15011 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
15012 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
15013 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
15014 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
15015 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
15016
15017 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
15018 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
15019 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
15020 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
15021 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
15022 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
15023 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
15024 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
15025 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
15026 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
15027 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
15028 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
15029 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
15030 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
15031 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
15032 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
15033 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
15034 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
15035
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015036 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
15037 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
15038 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
15039 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
15040 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015041 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015042 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015043 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15044 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15045 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15046 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
15047 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
15048 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15049 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15050 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
15051 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
15052 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15053 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15054 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15055 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15056 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
15057 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015058 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015059 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15060 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
15061 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015062 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015063 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
15064 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015065 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
15066 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
15067 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015068 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015069 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
15070 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
15071 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015072 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015073 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015074 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
15075 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
15076 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015077 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15078 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
15079 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15080 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15081 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15082 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15083 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15084 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15085 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15086 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15087 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015088 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015089 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
15090 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
15091 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015092 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015093 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015094 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15095 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15096 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015097 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015098 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015099 {"MultiMedia17 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15100 {"MultiMedia18 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15101 {"MultiMedia19 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15102 {"MultiMedia28 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15103 {"MultiMedia29 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015104 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15105 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15106 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15107 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015108 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015109
15110 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15111 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15112 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15113 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15114 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15115 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15116 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15117 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15118 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15119 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15120 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15121 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15122 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15123 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15124 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15125 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015126 {"MultiMedia1 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015127 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15128 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15129 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15130 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015131
15132 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15133 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15134 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15135 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15136 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15137 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15138 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15139 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15140 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15141 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15142 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15143 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15144 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15145 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15146 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15147 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015148 {"MultiMedia2 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015149 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15150 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15151 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15152 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015153
15154 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15155 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15156 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15157 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15158 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15159 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15160 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15161 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15162 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15163 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15164 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15165 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15166 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15167 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15168 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15169 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015170 {"MultiMedia3 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015171 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15172 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15173 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15174 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015175
15176 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15177 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15178 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15179 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15180 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15181 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15182 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15183 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15184 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15185 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15186 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15187 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15188 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15189 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15190 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15191 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015192 {"MultiMedia4 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015193 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15194 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15195 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15196 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015197
15198 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15199 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15200 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15201 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15202 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15203 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15204 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15205 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15206 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15207 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15208 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15209 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15210 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15211 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15212 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15213 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015214 {"MultiMedia5 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015215 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15216 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15217 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15218 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015219
15220 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15221 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15222 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15223 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15224 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15225 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15226 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15227 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15228 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15229 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15230 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15231 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15232 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15233 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15234 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15235 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015236 {"MultiMedia6 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015237 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15238 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15239 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15240 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015241
15242 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15243 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15244 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15245 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15246 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15247 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15248 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15249 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15250 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15251 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15252 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15253 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15254 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15255 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15256 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15257 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015258 {"MultiMedia8 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015259 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15260 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15261 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15262 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015263
15264 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15265 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15266 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15267 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15268 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15269 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15270 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15271 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015272 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15273 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15274 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15275 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015276 {"MultiMedia9 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015277
Laxminath Kasam38070be2017-08-17 18:21:59 +053015278 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15279 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15280 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15281 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15282 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15283 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15284 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15285 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015286 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15287 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15288 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15289 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015290 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015291 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15292 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15293 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15294 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15295 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15296 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15297 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15298 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15299 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15300 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15301 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15302 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15303 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15304 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15305 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15306 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015307 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15308 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15309 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15310 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015311
15312 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15313 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15314 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15315 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15316 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15317 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015318 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015319
Asish Bhattacharya34504582017-08-08 12:55:01 +053015320 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15321 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15322 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15323 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15324 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15325 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15326 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15327 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15328 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15329 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15330 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15331 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15332 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15333 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15334 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15335 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15336 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15337
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015338 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15339 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15340 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15341 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15342 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15343 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15344 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15345 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15346 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15347 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15348 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15349 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15350 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15351 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15352 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15353 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15354 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15355 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
15356
15357 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15358 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15359 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15360 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15361 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15362 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15363 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15364 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15365 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15366 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15367 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15368 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15369 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15370 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15371 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15372 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15373 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15374 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
15375
15376 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15377 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15378 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15379 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15380 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15381 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15382 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15383 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15384 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15385 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15386 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15387 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15388 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15389 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15390 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15391 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15392 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
15393
15394 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15395 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15396 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15397 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15398 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15399 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15400 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15401 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15402 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15403 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15404 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15405 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15406 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15407 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15408 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15409 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15410 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
15411
15412 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15413 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15414 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015415 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015416 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15417 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15418 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015419 {"MultiMedia28 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15420 {"MultiMedia29 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015421 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15422 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015423 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015424 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15425 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015426 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015427 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15428 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15429 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015430 {"MultiMedia28 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15431 {"MultiMedia29 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015432 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15433 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15434 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15435
15436 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
15437 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
15438 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015439 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015440 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
15441 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
15442 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015443 {"MultiMedia28 Mixer", "AFE_PCM_TX", "PCM_TX"},
15444 {"MultiMedia29 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015445 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
15446 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015447 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015448 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
15449 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15450 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
15451 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
15452 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
15453 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
15454 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
15455 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
15456 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015457 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015458 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015459 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
15460 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
15461 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
15462 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015463 {"MM_UL28", NULL, "MultiMedia28 Mixer"},
15464 {"MM_UL29", NULL, "MultiMedia29 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015465
15466 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15467 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15468 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15469 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15470 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15471 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15472 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15473 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15474 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15475 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15476 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15477 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15478 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15479 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15480 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15481 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15482 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
15483
15484 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15485 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15486 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15487 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15488 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15489 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15490 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15491 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15492 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15493 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15494 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15495 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15496 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15497 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15498 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15499 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15500 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
15501
15502 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15503 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15504 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15505 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15506 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15507 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15508 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15509 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15510 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15511 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15512 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15513 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15514 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15515 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15516 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15517 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15518 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
15519
15520 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15521 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15522 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15523 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15524 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15525 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15526 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15527 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15528 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15529 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15530 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15531 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15532 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15533 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15534 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15535 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15536 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
15537
Rohit Kumara5077932017-09-10 22:05:05 +053015538 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15539 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15540 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15541 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15542 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15543 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15544 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15545 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15546 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15547 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15548 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15549 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15550 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15551 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15552 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15553 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15554 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
15555
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015556 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15557 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15558 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15559 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15560 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15561 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
15562
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015563 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
15564 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15565 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15566 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
15567
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015568 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15569 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15570 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15571 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15572 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15573 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
15574
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015575 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
15576 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015577 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15578 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15579 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15580 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
15581
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015582 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
15583 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015584 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15585 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15586 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15587 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
15588
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015589 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15590 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015591 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15592 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15593 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15594 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
15595
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015596 {"DISPLAY_PORT_RX_Voice Mixer", "Voip", "VOIP_DL"},
15597 {"DISPLAY_PORT_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015598 {"DISPLAY_PORT_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15599 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15600 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15601 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
15602
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015603 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15604 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15605 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15606 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15607 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015608 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
15609
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015610 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15611 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15612 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15613 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15614 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15615 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
15616
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015617 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15618 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015619 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15620 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15621 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15622 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
15623
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015624 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15625 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015626 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15627 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15628 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15629 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
15630
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015631 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15632 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015633 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15634 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15635 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15636 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
15637
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015638 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15639 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015640 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15641 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15642 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15643 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
15644
Rohit Kumara5077932017-09-10 22:05:05 +053015645 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15646 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015647 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15648 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15649 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15650 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
15651
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015652 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15653 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15654 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15655 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15656 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15657 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
15658 {"HDMI", NULL, "HDMI_DL_HL"},
15659
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015660 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015661 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15662 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15663 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080015664 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015665 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15666
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015667 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015668 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15669 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15670 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15671 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15672 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15673
15674 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15675 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15676 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15677 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15678 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15679 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15680
15681 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15682 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15683 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15684 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15685 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15686 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15687
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015688 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015689 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15690 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15691 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15692 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15693 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15694
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015695 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015696 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15697 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15698 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15699 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15700
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015701 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015702 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15703 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15704 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15705 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15706
Raja Mallik321d5712018-05-04 17:22:11 +053015707 {"PRI_TDM_RX_0_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015708 {"PRI_TDM_RX_0_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15709 {"PRI_TDM_RX_0_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15710 {"PRI_TDM_RX_0_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15711 {"PRI_TDM_RX_0_Voice Mixer", "QCHAT", "QCHAT_DL"},
15712 {"PRI_TDM_RX_0_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15713 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15714 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15715 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_Voice Mixer"},
15716
Raja Mallik321d5712018-05-04 17:22:11 +053015717 {"PRI_TDM_RX_1_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015718 {"PRI_TDM_RX_1_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15719 {"PRI_TDM_RX_1_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15720 {"PRI_TDM_RX_1_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15721 {"PRI_TDM_RX_1_Voice Mixer", "QCHAT", "QCHAT_DL"},
15722 {"PRI_TDM_RX_1_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15723 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15724 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15725 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_Voice Mixer"},
15726
Raja Mallik321d5712018-05-04 17:22:11 +053015727 {"PRI_TDM_RX_2_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015728 {"PRI_TDM_RX_2_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15729 {"PRI_TDM_RX_2_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15730 {"PRI_TDM_RX_2_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15731 {"PRI_TDM_RX_2_Voice Mixer", "QCHAT", "QCHAT_DL"},
15732 {"PRI_TDM_RX_2_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15733 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15734 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15735 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_Voice Mixer"},
15736
Raja Mallik321d5712018-05-04 17:22:11 +053015737 {"PRI_TDM_RX_3_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015738 {"PRI_TDM_RX_3_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15739 {"PRI_TDM_RX_3_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15740 {"PRI_TDM_RX_3_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15741 {"PRI_TDM_RX_3_Voice Mixer", "QCHAT", "QCHAT_DL"},
15742 {"PRI_TDM_RX_3_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15743 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15744 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15745 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_Voice Mixer"},
15746
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015747 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15748 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15749
15750 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15751 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15752 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15753 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015754 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015755 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015756 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015757 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15758 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15759
15760 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15761 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15762 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15763 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15764 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Bala Kishore Pati1a044712018-10-03 12:12:36 +053015765 {"AUDIO_REF_EC_UL1 MUX", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015766 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15767 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15768 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15769 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15770 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15771
15772 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15773 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15774 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15775 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15776
15777 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15778 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15779 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15780 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15781
15782 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15783 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15784 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15785 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15786
15787 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15788 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15789 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15790 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15791
15792 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15793 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15794 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15795 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15796
15797 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15798 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15799 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15800 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Bala Kishore Pati1a044712018-10-03 12:12:36 +053015801 {"AUDIO_REF_EC_UL8 MUX", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015802
15803 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15804 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15805 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15806 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15807
Laxminath Kasam38070be2017-08-17 18:21:59 +053015808 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15809 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15810 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15811 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15812 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15813 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15814 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15815 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15816 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15817 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015818
15819 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15820 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15821 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15822 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15823
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015824 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15825 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15826 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15827 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15828
15829 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15830 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15831 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15832 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15833
15834 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15835 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15836 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15837 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15838
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015839 {"AUDIO_REF_EC_UL28 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15840 {"AUDIO_REF_EC_UL28 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15841 {"AUDIO_REF_EC_UL28 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15842 {"AUDIO_REF_EC_UL28 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15843
15844 {"AUDIO_REF_EC_UL29 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15845 {"AUDIO_REF_EC_UL29 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15846 {"AUDIO_REF_EC_UL29 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15847 {"AUDIO_REF_EC_UL29 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Yunfei Zhang3efc4a22017-11-07 16:30:13 +080015848
15849 {"LSM1_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15850 {"LSM2_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15851 {"LSM3_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15852 {"LSM4_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15853 {"LSM5_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15854 {"LSM6_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15855 {"LSM7_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15856 {"LSM8_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15857
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015858 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15859 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15860 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15861 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15862 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15863 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15864 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15865 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015866 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015867 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015868 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15869 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15870 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015871 {"MM_UL28", NULL, "AUDIO_REF_EC_UL28 MUX"},
15872 {"MM_UL29", NULL, "AUDIO_REF_EC_UL29 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015873
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015874 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15875 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15876 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15877 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15878 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15879 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15880 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15881 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15882 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15883 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15884 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15885 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15886 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15887 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15888 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015889 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015890 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
Raja Mallik321d5712018-05-04 17:22:11 +053015891 {"VoiceMMode1_Tx Mixer", "PRI_TDM_TX_3_MMode1", "PRI_TDM_TX_3"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015892 {"VoiceMMode1_Tx Mixer", "QUAT_MI2S_TX_MMode1", "QUAT_MI2S_TX"},
15893 {"VoiceMMode1_Tx Mixer", "QUIN_MI2S_TX_MMode1", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015894 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15895
15896 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15897 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15898 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15899 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15900 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15901 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15902 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15903 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15904 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15905 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15906 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15907 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15908 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15909 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15910 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015911 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015912 {"VoiceMMode2_Tx Mixer", "QUAT_MI2S_TX_MMode2", "QUAT_MI2S_TX"},
15913 {"VoiceMMode2_Tx Mixer", "QUIN_MI2S_TX_MMode2", "QUIN_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015914 {"VoiceMMode2_Tx Mixer", "PRI_TDM_TX_3_MMode2", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015915 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15916
15917 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15918 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15919 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15920 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15921 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15922 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15923 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15924 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15925 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15926 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15927 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15928 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15929 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15930 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015931 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015932 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015933 {"Voip_Tx Mixer", "PRI_TDM_TX_3_Voip", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015934 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15935
15936 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15937 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15938 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15939 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15940 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15941 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15942 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15943 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15944 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15945 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15946 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15947 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15948 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15949 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15950 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15951
15952 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15953 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15954 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15955 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15956 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15957 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15958 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15959 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015960 {"LSM1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15961 {"LSM1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015962 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15963
15964 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15965 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15966 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15967 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15968 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15969 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15970 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15971 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015972 {"LSM2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15973 {"LSM2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015974 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
15975
15976
15977 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15978 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15979 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15980 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15981 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15982 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15983 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15984 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015985 {"LSM3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15986 {"LSM3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015987 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
15988
15989
15990 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15991 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15992 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15993 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15994 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15995 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15996 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15997 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015998 {"LSM4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15999 {"LSM4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016000 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
16001
16002 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
16003 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
16004 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
16005 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
16006 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
16007 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16008 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16009 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053016010 {"LSM5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16011 {"LSM5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016012 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
16013
16014 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
16015 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
16016 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
16017 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
16018 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
16019 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053016020 {"LSM6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16021 {"LSM6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016022 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
16023
16024 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
16025 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
16026 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
16027 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
16028 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
16029 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053016030 {"LSM7 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16031 {"LSM7 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016032 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
16033
16034 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
16035 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
16036 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
16037 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
16038 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
16039 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053016040 {"LSM8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16041 {"LSM8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016042 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
16043
16044
16045 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
16046 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
16047 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
16048 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
16049 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
16050 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
16051 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
16052 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
16053 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
16054 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
16055 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016056 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016057 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
16058 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
16059 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
16060 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
16061 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
16062 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
16063
16064 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
16065 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
16066 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
16067 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
16068 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
16069 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
16070 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
16071 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
16072 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
16073 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
16074 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
16075 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
Aniket Kumar Lataf8664712018-02-22 14:46:09 -080016076 {"SLIM7_UL_HL", NULL, "A2DP_SLIM7_UL_HL"},
16077 {"A2DP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016078 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016079 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016080 {"SEC_AUXPCM_UL_HL", NULL, "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016081 {"MI2S_RX", NULL, "MI2S_DL_HL"},
16082 {"MI2S_UL_HL", NULL, "MI2S_TX"},
16083 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
16084 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
16085
16086 /* connect to INT4_MI2S_DL_HL since same pcm_id */
16087 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
16088 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
16089 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
16090 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
16091 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
16092 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
16093 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
16094 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
16095 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
16096 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
16097
16098 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
16099 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053016100 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
16101 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016102 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
16103 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
16104 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
16105 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
16106 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
16107 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
16108 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
16109 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
16110 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
16111 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
16112
16113 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
16114 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
16115 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
16116 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
16117 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
16118 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
16119 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
16120 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
16121 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
16122 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
16123 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
16124 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
16125 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
16126 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
16127 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
16128 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
16129 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
16130 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
16131 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
16132 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
16133 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
16134 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
16135 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
16136 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
16137 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
16138 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
16139 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
16140 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
16141 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
16142 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
16143 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
16144 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053016145 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
16146 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
16147 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
16148 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
16149 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
16150 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
16151 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
16152 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016153
16154 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16155 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16156 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16157 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16158 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16159 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16160 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16161 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16162 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16163 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16164 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16165 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16166 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16167 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16168 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16169 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016170 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16171 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16172 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16173 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016174 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
16175
16176 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16177 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16178 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16179 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16180 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16181 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16182 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16183 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16184 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16185 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16186 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16187 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16188 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16189 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16190 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16191 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016192 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16193 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16194 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16195 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016196 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
16197
16198 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16199 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16200 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16201 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16202 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16203 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16204 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16205 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16206 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16207 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16208 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16209 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16210 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16211 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16212 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16213 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016214 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16215 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16216 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16217 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016218 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
16219
16220 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16221 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16222 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16223 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16224 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16225 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16226 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16227 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16228 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16229 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16230 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16231 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16232 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16233 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16234 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16235 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016236 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16237 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16238 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16239 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016240 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
16241
16242 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16243 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16244 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16245 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16246 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16247 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16248 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16249 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16250 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16251 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16252 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16253 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16254 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16255 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16256 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16257 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016258 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16259 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16260 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16261 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016262 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
16263
16264 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16265 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16266 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16267 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16268 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16269 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16270 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16271 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16272 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16273 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16274 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16275 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16276 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16277 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16278 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16279 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016280 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16281 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16282 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16283 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016284 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
16285
16286 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16287 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16288 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16289 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16290 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16291 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16292 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16293 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16294 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16295 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16296 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16297 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16298 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16299 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16300 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16301 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016302 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16303 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16304 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16305 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016306 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
16307
16308 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16309 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16310 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16311 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16312 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16313 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16314 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16315 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16316 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16317 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16318 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16319 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16320 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16321 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16322 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16323 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016324 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16325 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16326 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16327 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016328 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
16329
16330 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16331 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16332 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16333 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16334 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16335 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16336 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16337 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16338 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16339 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16340 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16341 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16342 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16343 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16344 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16345 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016346 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16347 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16348 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16349 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016350 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
16351
16352 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16353 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16354 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16355 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16356 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16357 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16358 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16359 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16360 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16361 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16362 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16363 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16364 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16365 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16366 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16367 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016368 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16369 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16370 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16371 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016372 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
16373
16374 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16375 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16376 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16377 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16378 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16379 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16380 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16381 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16382 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16383 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16384 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16385 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16386 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16387 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16388 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16389 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016390 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16391 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16392 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16393 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016394 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
16395
16396 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16397 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16398 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16399 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16400 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16401 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16402 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16403 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16404 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16405 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16406 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16407 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16408 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16409 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16410 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16411 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016412 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16413 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16414 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16415 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016416 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
16417
16418 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16419 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16420 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16421 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16422 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16423 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16424 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16425 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16426 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16427 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16428 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16429 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16430 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16431 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16432 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16433 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016434 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16435 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16436 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16437 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016438 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
16439
16440 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16441 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16442 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16443 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16444 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16445 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16446 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16447 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16448 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16449 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16450 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16451 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16452 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16453 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16454 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16455 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016456 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16457 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16458 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16459 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016460 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
16461
16462 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16463 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16464 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16465 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16466 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16467 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16468 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16469 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16470 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16471 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16472 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16473 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16474 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16475 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16476 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16477 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016478 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16479 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16480 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16481 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016482 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
16483
16484 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16485 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16486 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16487 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16488 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16489 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16490 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16491 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16492 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16493 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16494 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16495 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16496 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16497 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16498 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16499 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016500 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16501 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16502 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16503 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016504 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
16505
Rohit Kumara5077932017-09-10 22:05:05 +053016506 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16507 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16508 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16509 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16510 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16511 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16512 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16513 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16514 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16515 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16516 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16517 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16518 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16519 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16520 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16521 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16522 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16523 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16524 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16525 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016526 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016527
16528 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16529 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16530 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16531 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16532 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16533 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16534 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16535 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16536 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16537 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16538 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16539 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16540 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16541 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16542 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16543 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16544 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16545 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16546 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16547 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016548 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016549
16550 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16551 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16552 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16553 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16554 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16555 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16556 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16557 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16558 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16559 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16560 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16561 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16562 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16563 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16564 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16565 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16566 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16567 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16568 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16569 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016570 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016571
16572 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16573 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16574 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16575 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16576 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16577 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16578 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16579 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16580 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16581 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16582 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16583 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16584 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16585 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16586 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16587 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16588 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16589 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16590 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16591 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016592 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016593
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016594 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16595 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16596 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16597 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016598 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016599 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16600 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16601 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16602 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16603 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16604 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
16605
16606 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16607 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16608 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16609 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016610 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016611 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16612 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16613 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16614 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16615 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16616 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
16617
16618 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16619 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16620 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16621 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16622 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16623 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16624 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16625 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16626 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016627 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016628 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16629 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16630 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16631 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16632 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016633 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016634 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16635 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
16636 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16637 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16638 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
16639 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
16640 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
16641 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
16642 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
16643 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
16644
16645
16646 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16647 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16648 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16649 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16650 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016651 {"AUX_PCM_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016652 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
16653
16654 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16655 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16656 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016657 {"SEC_AUXPCM_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016658 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
16659
16660 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16661 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16662 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16663 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
16664
16665 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16666 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
16667 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16668 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
16669
Rohit Kumara5077932017-09-10 22:05:05 +053016670 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16671 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
16672 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16673 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
16674
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016675 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16676 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16677 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16678 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16679 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16680 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16681 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16682 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016683 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016684 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
16685 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16686 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16687 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16688 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16689 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16690 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16691 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16692 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16693 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16694 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
16695
16696 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16697 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16698 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16699 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16700 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16701 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16702 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16703 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16704 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16705 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16706 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16707 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
16708
16709 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16710 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16711 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16712 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16713 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16714 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16715 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16716 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16717 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16718 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16719 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16720 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
16721
kunleizdf5a00a2017-11-27 15:27:36 +080016722 {"STUB_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16723 {"STUB_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016724 {"STUB_RX", NULL, "STUB_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016725
16726 {"SLIMBUS_1_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16727 {"SLIMBUS_1_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016728 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016729
16730 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16731 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016732 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
16733
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016734 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
16735 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016736 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16737 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16738 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16739 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
16740
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016741 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
16742 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016743 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16744 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16745 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16746 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16747
16748 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16749 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16750 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16751 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16752 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16753 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16754 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16755 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16756 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16757 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16758 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16759 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16760 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16761
16762 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16763 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16764 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16765 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16766 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16767 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16768 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16769 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16770 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16771 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16772 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16773 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16774 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16775
16776 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16777 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16778
16779 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16780 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16781
16782 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16783 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16784
16785 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16786 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16787 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16788
16789 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16790 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16791 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16792 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016793 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016794 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16795 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16796 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16797 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016798 {"PRI_MI2S_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016799 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16800
16801 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16802 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16803 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16804 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016805 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016806 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16807 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16808 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016809 {"SEC_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016810 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16811
16812 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16813 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16814 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16815 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016816 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016817 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16818 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16819 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16820
16821 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16822 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16823 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16824 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016825 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016826 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16827 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16828 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16829 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16830 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16831
Rohit Kumara5077932017-09-10 22:05:05 +053016832 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16833 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16834 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16835 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16836 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16837 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16838 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16839 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16840
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016841 /* Backend Enablement */
16842
16843 {"BE_OUT", NULL, "PRI_I2S_RX"},
16844 {"BE_OUT", NULL, "SEC_I2S_RX"},
16845 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16846 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16847 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16848 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16849 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16850 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16851 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16852 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16853 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16854 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16855 {"BE_OUT", NULL, "HDMI"},
16856 {"BE_OUT", NULL, "DISPLAY_PORT"},
16857 {"BE_OUT", NULL, "SPDIF_RX"},
16858 {"BE_OUT", NULL, "MI2S_RX"},
16859 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16860 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16861 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16862 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16863 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16864 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16865 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16866 {"BE_OUT", NULL, "INT4_MI2S_RX"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016867 {"BE_OUT", NULL, "INT2_MI2S_RX"},
16868 {"BE_OUT", NULL, "INT3_MI2S_RX"},
16869 {"BE_OUT", NULL, "INT5_MI2S_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016870 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16871 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16872 {"BE_OUT", NULL, "INT_FM_RX"},
16873 {"BE_OUT", NULL, "PCM_RX"},
16874 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16875 {"BE_OUT", NULL, "AUX_PCM_RX"},
16876 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16877 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16878 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016879 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016880 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16881 {"BE_OUT", NULL, "INT_FM_RX"},
16882 {"BE_OUT", NULL, "PCM_RX"},
16883 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16884 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16885 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16886 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16887 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16888 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16889 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16890 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16891 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16892 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16893 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16894 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16895 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16896 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16897 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16898 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16899 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16900 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16901 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16902 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016903 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16904 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16905 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16906 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016907
16908 {"PRI_I2S_TX", NULL, "BE_IN"},
16909 {"MI2S_TX", NULL, "BE_IN"},
16910 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16911 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16912 {"PRI_MI2S_TX", NULL, "BE_IN"},
16913 {"TERT_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016914 {"INT0_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016915 {"INT2_MI2S_TX", NULL, "BE_IN"},
16916 {"INT3_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016917 {"INT4_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016918 {"INT5_MI2S_TX", NULL, "BE_IN"},
16919 {"SEC_MI2S_TX", NULL, "BE_IN"},
16920 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16921 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16922 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16923 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16924 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16925 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16926 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16927 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16928 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16929 {"USB_AUDIO_TX", NULL, "BE_IN" },
16930 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16931 {"INT_FM_TX", NULL, "BE_IN"},
16932 {"PCM_TX", NULL, "BE_IN"},
16933 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16934 {"BE_OUT", NULL, "STUB_RX"},
16935 {"STUB_TX", NULL, "BE_IN"},
16936 {"STUB_1_TX", NULL, "BE_IN"},
16937 {"BE_OUT", NULL, "AUX_PCM_RX"},
16938 {"AUX_PCM_TX", NULL, "BE_IN"},
16939 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16940 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16941 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016942 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016943 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16944 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16945 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16946 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16947 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16948 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16949 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16950 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16951 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16952 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16953 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16954 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16955 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16956 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16957 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16958 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16959 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16960 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16961 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16962 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16963 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16964 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16965 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16966 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16967 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16968 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16969 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16970 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Raja Mallik425e1d32018-05-20 19:21:10 +053016971 {"AFE_LOOPBACK_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016972 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16973 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16974 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16975 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016976};
16977
16978static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16979 struct snd_pcm_hw_params *params)
16980{
16981 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16982 unsigned int be_id = rtd->dai_link->id;
16983
16984 if (be_id >= MSM_BACKEND_DAI_MAX) {
16985 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16986 return -EINVAL;
16987 }
16988
16989 mutex_lock(&routing_lock);
16990 msm_bedais[be_id].sample_rate = params_rate(params);
16991 msm_bedais[be_id].channel = params_channels(params);
16992 msm_bedais[be_id].format = params_format(params);
16993 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
16994 __func__, msm_bedais[be_id].sample_rate,
16995 msm_bedais[be_id].format, be_id);
16996 mutex_unlock(&routing_lock);
16997 return 0;
16998}
16999
17000static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
17001{
17002 struct snd_soc_pcm_runtime *rtd = substream->private_data;
17003 unsigned int be_id = rtd->dai_link->id;
17004 int i, session_type, path_type, topology;
17005 struct msm_pcm_routing_bdai_data *bedai;
17006 struct msm_pcm_routing_fdai_data *fdai;
17007
17008 pr_debug("%s: substream->pcm->id:%s\n",
17009 __func__, substream->pcm->id);
17010
17011 if (be_id >= MSM_BACKEND_DAI_MAX) {
17012 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
17013 return -EINVAL;
17014 }
17015
17016 bedai = &msm_bedais[be_id];
17017 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
17018 0 : 1);
17019 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
17020 path_type = ADM_PATH_PLAYBACK;
17021 else
17022 path_type = ADM_PATH_LIVE_REC;
17023
17024 mutex_lock(&routing_lock);
17025 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17026 if (!is_mm_lsm_fe_id(i))
17027 continue;
17028 fdai = &fe_dai_map[i][session_type];
17029 if (fdai->strm_id != INVALID_SESSION) {
17030 int idx;
17031 int port_id;
17032 unsigned long copp =
17033 session_copp_map[i][session_type][be_id];
17034 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
17035 if (test_bit(idx, &copp))
17036 break;
17037 fdai->be_srate = bedai->sample_rate;
Sachin Mohan Gadag11b247f2018-09-06 19:27:42 +053017038 port_id = get_port_id(bedai->port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017039 topology = adm_get_topology_for_port_copp_idx(port_id,
17040 idx);
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053017041 adm_close(port_id, fdai->perf_mode, idx);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017042 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
17043 __func__, copp, i, session_type, be_id,
17044 topology);
17045 clear_bit(idx,
17046 &session_copp_map[i][session_type][be_id]);
17047 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
17048 (bedai->passthr_mode[i] == LEGACY_PCM))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053017049 msm_pcm_routing_deinit_pp(port_id,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017050 topology);
17051 }
17052 }
17053
17054 bedai->active = 0;
17055 bedai->sample_rate = 0;
17056 bedai->channel = 0;
17057 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
17058 if (bedai->passthr_mode[i] != LISTEN)
17059 bedai->passthr_mode[i] = LEGACY_PCM;
17060 }
17061 mutex_unlock(&routing_lock);
17062
17063 return 0;
17064}
17065
17066static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
17067{
17068 struct snd_soc_pcm_runtime *rtd = substream->private_data;
17069 unsigned int be_id = rtd->dai_link->id;
17070 int i, path_type, topology;
17071 int session_type = INVALID_SESSION;
17072 struct msm_pcm_routing_bdai_data *bedai;
17073 u32 channels, sample_rate;
17074 uint16_t bits_per_sample = 16, voc_path_type;
17075 struct msm_pcm_routing_fdai_data *fdai;
17076 u32 session_id;
17077 struct media_format_info voc_be_media_format;
17078 bool is_lsm;
17079
17080 pr_debug("%s: substream->pcm->id:%s\n",
17081 __func__, substream->pcm->id);
17082
17083 if (be_id >= MSM_BACKEND_DAI_MAX) {
17084 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
17085 return -EINVAL;
17086 }
17087
17088 bedai = &msm_bedais[be_id];
17089
17090 mutex_lock(&routing_lock);
17091 if (bedai->active == 1)
17092 goto done; /* Ignore prepare if back-end already active */
17093
17094 /* AFE port is not active at this point. However, still
17095 * go ahead setting active flag under the notion that
17096 * QDSP6 is able to handle ADM starting before AFE port
17097 * is started.
17098 */
17099 bedai->active = 1;
17100
17101 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17102 if (!(is_mm_lsm_fe_id(i) &&
17103 route_check_fe_id_adm_support(i)))
17104 continue;
17105
17106 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
17107 if (bedai->passthr_mode[i] != LEGACY_PCM)
17108 path_type = ADM_PATH_COMPRESSED_RX;
17109 else
17110 path_type = ADM_PATH_PLAYBACK;
17111 session_type = SESSION_TYPE_RX;
17112 } else {
17113 path_type = ADM_PATH_LIVE_REC;
17114 session_type = SESSION_TYPE_TX;
17115 }
17116
17117 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
17118 (i <= MSM_FRONTEND_DAI_LSM8);
17119 fdai = &fe_dai_map[i][session_type];
17120 if (fdai->strm_id != INVALID_SESSION) {
17121 int app_type, app_type_idx, copp_idx, acdb_dev_id;
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053017122 int port_id = get_port_id(bedai->port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017123
17124 if (session_type == SESSION_TYPE_TX &&
17125 fdai->be_srate &&
17126 (fdai->be_srate != bedai->sample_rate)) {
17127 pr_debug("%s: flush strm %d diff BE rates\n",
17128 __func__,
17129 fdai->strm_id);
17130
17131 if (fdai->event_info.event_func)
17132 fdai->event_info.event_func(
17133 MSM_PCM_RT_EVT_BUF_RECFG,
17134 fdai->event_info.priv_data);
17135 fdai->be_srate = 0; /* might not need it */
17136 }
17137 bits_per_sample = msm_routing_get_bit_width(
17138 bedai->format);
17139
17140 app_type =
17141 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
17142 if (app_type && is_lsm) {
17143 app_type_idx =
17144 msm_pcm_routing_get_lsm_app_type_idx(app_type);
17145 sample_rate =
17146 fe_dai_app_type_cfg[i][session_type][be_id]
17147 .sample_rate;
17148 bits_per_sample =
17149 lsm_app_type_cfg[app_type_idx].bit_width;
17150 } else if (app_type) {
17151 app_type_idx =
17152 msm_pcm_routing_get_app_type_idx(app_type);
17153 sample_rate =
17154 fe_dai_app_type_cfg[i][session_type]
17155 [be_id].sample_rate;
17156 bits_per_sample =
17157 app_type_cfg[app_type_idx].bit_width;
17158 } else
17159 sample_rate = bedai->sample_rate;
17160 /*
17161 * check if ADM needs to be configured with different
17162 * channel mapping than backend
17163 */
17164 if (!bedai->adm_override_ch)
17165 channels = bedai->channel;
17166 else
17167 channels = bedai->adm_override_ch;
17168 acdb_dev_id =
17169 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
17170 topology = msm_routing_get_adm_topology(i, session_type,
17171 be_id);
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053017172 copp_idx = adm_open(port_id, path_type,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017173 sample_rate, channels, topology,
17174 fdai->perf_mode, bits_per_sample,
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053017175 app_type, acdb_dev_id,
17176 session_type);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017177 if ((copp_idx < 0) ||
17178 (copp_idx >= MAX_COPPS_PER_PORT)) {
17179 pr_err("%s: adm open failed\n", __func__);
17180 mutex_unlock(&routing_lock);
17181 return -EINVAL;
17182 }
17183 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
17184 __func__, i, session_type, be_id);
17185 set_bit(copp_idx,
17186 &session_copp_map[i][session_type][be_id]);
17187
17188 if (msm_is_resample_needed(
17189 sample_rate,
17190 bedai->sample_rate))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053017191 adm_copp_mfc_cfg(port_id, copp_idx,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017192 bedai->sample_rate);
17193
17194 msm_pcm_routing_build_matrix(i, session_type, path_type,
17195 fdai->perf_mode,
17196 bedai->passthr_mode[i]);
17197 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
17198 (bedai->passthr_mode[i] == LEGACY_PCM))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053017199 msm_pcm_routing_cfg_pp(port_id, copp_idx,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017200 topology, channels);
17201 }
17202 }
17203
17204 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17205 session_id = msm_pcm_routing_get_voc_sessionid(i);
17206 if (session_id) {
17207 pr_debug("%s voice session_id: 0x%x\n", __func__,
17208 session_id);
17209
17210 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
17211 voc_path_type = RX_PATH;
17212 else
17213 voc_path_type = TX_PATH;
17214
17215 voc_set_route_flag(session_id, voc_path_type, 1);
17216
17217 memset(&voc_be_media_format, 0,
17218 sizeof(struct media_format_info));
17219
17220 voc_be_media_format.port_id = bedai->port_id;
17221 voc_be_media_format.num_channels = bedai->channel;
17222 voc_be_media_format.sample_rate = bedai->sample_rate;
17223 voc_be_media_format.bits_per_sample = bedai->format;
17224 /* Defaulting this to 1 for voice call usecases */
17225 voc_be_media_format.channel_mapping[0] = 1;
17226
17227 voc_set_device_config(session_id, voc_path_type,
17228 &voc_be_media_format);
17229
17230 if (voc_get_route_flag(session_id, RX_PATH) &&
17231 voc_get_route_flag(session_id, TX_PATH))
17232 voc_enable_device(session_id);
17233 }
17234 }
17235
17236 /* Check if backend is an external ec ref port and set as needed */
17237 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
17238
17239 memset(&voc_be_media_format, 0,
17240 sizeof(struct media_format_info));
17241
17242 /* Get format info for ec ref port from msm_bedais[] */
17243 voc_be_media_format.port_id = bedai->port_id;
17244 voc_be_media_format.num_channels = bedai->channel;
17245 voc_be_media_format.bits_per_sample = bedai->format;
17246 voc_be_media_format.sample_rate = bedai->sample_rate;
17247 /* Defaulting this to 1 for voice call usecases */
17248 voc_be_media_format.channel_mapping[0] = 1;
17249 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
17250 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
17251 __func__, voc_be_media_format.port_id,
17252 voc_be_media_format.num_channels,
17253 voc_be_media_format.bits_per_sample,
17254 voc_be_media_format.sample_rate);
17255 }
17256
17257done:
17258 mutex_unlock(&routing_lock);
17259
17260 return 0;
17261}
17262
17263static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
17264 int fe_id)
17265{
17266 int index, topo_id, be_idx;
17267 unsigned long pp_config = 0;
17268 bool mute_on;
17269 int latency;
17270 bool compr_passthr_mode = true;
17271
17272 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
17273
17274 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
17275 pr_err("%s: Device pp params on invalid port %d\n",
17276 __func__, port_id);
17277 return -EINVAL;
17278 }
17279
17280 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17281 if (port_id == msm_bedais[be_idx].port_id)
17282 break;
17283 }
17284
17285 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17286 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17287 return -EINVAL;
17288 }
17289
17290 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17291 if (msm_bedais_pp_params[index].port_id == port_id)
17292 break;
17293 }
17294 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17295 pr_err("%s: Invalid backend pp params index %d\n",
17296 __func__, index);
17297 return -EINVAL;
17298 }
17299
17300 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
17301 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
17302 pr_err("%s: Invalid passthrough topology 0x%x\n",
17303 __func__, topo_id);
17304 return -EINVAL;
17305 }
17306
17307 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
17308 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
17309 compr_passthr_mode = false;
17310
17311 pp_config = msm_bedais_pp_params[index].pp_params_config;
17312 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
17313 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17314 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
17315 mute_on = msm_bedais_pp_params[index].mute_on;
17316 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17317 adm_send_compressed_device_mute(port_id,
17318 copp_idx,
17319 mute_on);
17320 }
17321 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
17322 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17323 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
17324 &pp_config);
17325 latency = msm_bedais_pp_params[index].latency;
17326 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17327 adm_send_compressed_device_latency(port_id,
17328 copp_idx,
17329 latency);
17330 }
17331 return 0;
17332}
17333
17334static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17335 struct snd_ctl_elem_value *ucontrol)
17336{
17337 int pp_id = ucontrol->value.integer.value[0];
17338 int port_id = 0;
17339 int index, be_idx, i, topo_id, idx;
17340 bool mute;
17341 int latency;
17342 bool compr_passthr_mode = true;
17343
17344 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
17345
17346 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17347 port_id = msm_bedais[be_idx].port_id;
17348 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
17349 break;
17350 }
17351
17352 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17353 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17354 return -EINVAL;
17355 }
17356
17357 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17358 if (msm_bedais_pp_params[index].port_id == port_id)
17359 break;
17360 }
17361 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17362 pr_err("%s: Invalid pp params backend index %d\n",
17363 __func__, index);
17364 return -EINVAL;
17365 }
17366
17367 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
17368 MSM_FRONTEND_DAI_MM_SIZE) {
17369 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
17370 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
17371 compr_passthr_mode = false;
17372
17373 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17374 unsigned long copp =
17375 session_copp_map[i]
17376 [SESSION_TYPE_RX][be_idx];
17377 if (!test_bit(idx, &copp))
17378 continue;
17379 topo_id = adm_get_topology_for_port_copp_idx(port_id,
17380 idx);
17381 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
17382 continue;
17383 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
17384 __func__, port_id, copp, msm_bedais[be_idx].active,
17385 msm_bedais[be_idx].passthr_mode[i]);
17386 switch (pp_id) {
17387 case ADM_PP_PARAM_MUTE_ID:
17388 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17389 mute = ucontrol->value.integer.value[1] ? true : false;
17390 msm_bedais_pp_params[index].mute_on = mute;
17391 set_bit(ADM_PP_PARAM_MUTE_BIT,
17392 &msm_bedais_pp_params[index].pp_params_config);
17393 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17394 adm_send_compressed_device_mute(port_id,
17395 idx, mute);
17396 break;
17397 case ADM_PP_PARAM_LATENCY_ID:
17398 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17399 msm_bedais_pp_params[index].latency =
17400 ucontrol->value.integer.value[1];
17401 set_bit(ADM_PP_PARAM_LATENCY_BIT,
17402 &msm_bedais_pp_params[index].pp_params_config);
17403 latency = msm_bedais_pp_params[index].latency =
17404 ucontrol->value.integer.value[1];
17405 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17406 adm_send_compressed_device_latency(port_id,
17407 idx, latency);
17408 break;
17409 default:
17410 pr_info("%s, device pp param %d not supported\n",
17411 __func__, pp_id);
17412 break;
17413 }
17414 }
17415 }
17416 return 0;
17417}
17418
17419static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17420 struct snd_ctl_elem_value *ucontrol)
17421{
17422 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
17423 return 0;
17424}
17425
17426static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
17427 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
17428 0, 3, msm_routing_get_device_pp_params_mixer,
17429 msm_routing_put_device_pp_params_mixer),
17430};
17431
17432static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
17433 struct snd_ctl_elem_value *ucontrol)
17434{
17435 ucontrol->value.integer.value[0] =
17436 core_get_license_status(ASM_MEDIA_FMT_APTX);
17437 pr_debug("%s: status %ld\n", __func__,
17438 ucontrol->value.integer.value[0]);
17439 return 0;
17440}
17441
17442static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
17443 struct snd_ctl_elem_value *ucontrol)
17444{
17445 int32_t status = 0;
17446
17447 status = core_set_license(ucontrol->value.integer.value[0],
17448 APTX_CLASSIC_DEC_LICENSE_ID);
17449 pr_debug("%s: status %d\n", __func__, status);
17450 return status;
17451}
17452
17453static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
17454 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
17455 0xFFFF, 0, msm_aptx_dec_license_control_get,
17456 msm_aptx_dec_license_control_put),
17457};
17458
Rohit kumar4ea92b12019-02-01 18:05:33 +053017459static int msm_routing_put_port_chmap_mixer(struct snd_kcontrol *kcontrol,
17460 struct snd_ctl_elem_value *ucontrol)
17461{
17462 uint8_t channel_map[PCM_FORMAT_MAX_NUM_CHANNEL];
17463 uint32_t be_idx = ucontrol->value.integer.value[0];
17464 int i;
17465
Ramjee Singh6c6884d2019-06-12 12:01:52 +053017466 if (be_idx < 0 || be_idx >= MSM_BACKEND_DAI_MAX) {
17467 pr_err("%s: Invalid Backend ID %d\n",
17468 __func__, be_idx);
17469 return -EINVAL;
17470 }
17471
Rohit kumar4ea92b12019-02-01 18:05:33 +053017472 for (i = 0; i < PCM_FORMAT_MAX_NUM_CHANNEL; i++) {
17473 channel_map[i] = (char)(ucontrol->value.integer.value[i + 1]);
17474 if (channel_map[i] > PCM_MAX_CHMAP_ID) {
17475 pr_err("%s: Invalid channel map %d\n",
17476 __func__, channel_map[i]);
17477 return -EINVAL;
17478 }
17479 }
17480 adm_set_port_multi_ch_map(channel_map, msm_bedais[be_idx].port_id);
17481
17482 return 0;
17483}
17484
17485static const struct snd_kcontrol_new port_multi_channel_map_mixer_controls[] = {
17486 SOC_SINGLE_MULTI_EXT("Backend Device Channel Map", SND_SOC_NOPM, 0,
17487 MSM_BACKEND_DAI_MAX, 0,
17488 PCM_FORMAT_MAX_NUM_CHANNEL + 1, NULL,
17489 msm_routing_put_port_chmap_mixer),
17490};
17491
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017492static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
17493 struct snd_ctl_elem_info *uinfo)
17494{
17495 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
17496 uinfo->count = sizeof(be_dai_name_table);
17497 return 0;
17498}
17499
17500static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
17501 unsigned int __user *bytes,
17502 unsigned int size)
17503{
17504 int i;
17505 int ret;
17506
17507 if (size < sizeof(be_dai_name_table)) {
17508 pr_err("%s: invalid size %d requested, returning\n",
17509 __func__, size);
17510 ret = -EINVAL;
17511 goto done;
17512 }
17513
17514 /*
17515 * Fill be_dai_name_table from msm_bedais table to reduce code changes
17516 * needed when adding new backends
17517 */
17518 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17519 be_dai_name_table[i].be_id = i;
17520 strlcpy(be_dai_name_table[i].be_name,
17521 msm_bedais[i].name,
17522 LPASS_BE_NAME_MAX_LENGTH);
17523 }
17524
17525 ret = copy_to_user(bytes, &be_dai_name_table,
17526 sizeof(be_dai_name_table));
17527 if (ret) {
17528 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
17529 ret = -EFAULT;
17530 }
17531
17532done:
17533 return ret;
17534}
17535
17536static const struct snd_kcontrol_new
17537 msm_routing_be_dai_name_table_mixer_controls[] = {
17538 {
17539 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
17540 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
17541 .info = msm_routing_be_dai_name_table_info,
17542 .name = "Backend DAI Name Table",
17543 .tlv.c = snd_soc_bytes_tlv_callback,
17544 .private_value = (unsigned long) &(struct soc_bytes_ext) {
17545 .max = sizeof(be_dai_name_table),
17546 .get = msm_routing_be_dai_name_table_tlv_get,
17547 }
17548 },
17549};
17550
17551static int msm_routing_stereo_channel_reverse_control_get(
17552 struct snd_kcontrol *kcontrol,
17553 struct snd_ctl_elem_value *ucontrol)
17554{
17555 ucontrol->value.integer.value[0] = swap_ch;
17556 pr_debug("%s: Swap channel value: %ld\n", __func__,
17557 ucontrol->value.integer.value[0]);
17558 return 0;
17559}
17560
17561static int msm_routing_stereo_channel_reverse_control_put(
17562 struct snd_kcontrol *kcontrol,
17563 struct snd_ctl_elem_value *ucontrol)
17564{
17565 int i, idx, be_index, port_id;
17566 int ret = 0;
17567 unsigned long copp;
17568
17569 pr_debug("%s Swap channel value:%ld\n", __func__,
17570 ucontrol->value.integer.value[0]);
17571
17572 swap_ch = ucontrol->value.integer.value[0];
17573
17574 mutex_lock(&routing_lock);
17575 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
17576 port_id = msm_bedais[be_index].port_id;
17577 if (!msm_bedais[be_index].active)
17578 continue;
17579
17580 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
17581 MSM_FRONTEND_DAI_MM_SIZE) {
17582 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
17583 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17584 if (!test_bit(idx, &copp))
17585 continue;
17586
17587 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
17588 __func__, port_id, idx);
17589 ret = adm_swap_speaker_channels(
17590 port_id, idx,
17591 msm_bedais[be_index].sample_rate,
17592 swap_ch);
17593 if (ret) {
17594 pr_err("%s:Swap_channel failed, err=%d\n",
17595 __func__, ret);
17596 goto done;
17597 }
17598 }
17599 }
17600 }
17601done:
17602 mutex_unlock(&routing_lock);
17603 return ret;
17604}
17605
17606static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
17607 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
17608 1, 0, msm_routing_stereo_channel_reverse_control_get,
17609 msm_routing_stereo_channel_reverse_control_put),
17610};
17611
17612static const struct snd_pcm_ops msm_routing_pcm_ops = {
17613 .hw_params = msm_pcm_routing_hw_params,
17614 .close = msm_pcm_routing_close,
17615 .prepare = msm_pcm_routing_prepare,
17616};
17617
17618/* Not used but frame seems to require it */
17619static int msm_routing_probe(struct snd_soc_platform *platform)
17620{
17621 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
17622 ARRAY_SIZE(msm_qdsp6_widgets));
17623 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
17624 ARRAY_SIZE(intercon));
17625
17626 snd_soc_dapm_new_widgets(platform->component.dapm.card);
17627
17628 snd_soc_add_platform_controls(platform, lsm_controls,
17629 ARRAY_SIZE(lsm_controls));
17630
17631 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
17632 ARRAY_SIZE(aanc_slim_0_rx_mux));
17633
17634 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
17635 ARRAY_SIZE(msm_voc_session_controls));
17636
17637 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
17638 ARRAY_SIZE(app_type_cfg_controls));
17639
17640 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
17641 ARRAY_SIZE(lsm_app_type_cfg_controls));
17642
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070017643 snd_soc_add_platform_controls(platform, module_cfg_controls,
17644 ARRAY_SIZE(module_cfg_controls));
17645
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017646 snd_soc_add_platform_controls(platform,
17647 stereo_to_custom_stereo_controls,
17648 ARRAY_SIZE(stereo_to_custom_stereo_controls));
17649
17650 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
17651 ARRAY_SIZE(ec_ref_param_controls));
17652
17653 snd_soc_add_platform_controls(platform, channel_mixer_controls,
17654 ARRAY_SIZE(channel_mixer_controls));
17655
17656 msm_qti_pp_add_controls(platform);
17657
17658 msm_dts_srs_tm_add_controls(platform);
17659
17660 msm_dolby_dap_add_controls(platform);
17661
17662 snd_soc_add_platform_controls(platform,
17663 use_ds1_or_ds2_controls,
17664 ARRAY_SIZE(use_ds1_or_ds2_controls));
17665
17666 snd_soc_add_platform_controls(platform,
17667 device_pp_params_mixer_controls,
17668 ARRAY_SIZE(device_pp_params_mixer_controls));
17669
17670 snd_soc_add_platform_controls(platform,
17671 msm_routing_be_dai_name_table_mixer_controls,
17672 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
17673
17674 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
17675 ARRAY_SIZE(msm_source_tracking_controls));
17676 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
17677 ARRAY_SIZE(adm_channel_config_controls));
17678
17679 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
17680 ARRAY_SIZE(aptx_dec_license_controls));
17681 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
17682 ARRAY_SIZE(stereo_channel_reverse_control));
Rohit kumar4ea92b12019-02-01 18:05:33 +053017683 snd_soc_add_platform_controls(platform,
17684 port_multi_channel_map_mixer_controls,
17685 ARRAY_SIZE(port_multi_channel_map_mixer_controls));
17686
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017687 return 0;
17688}
17689
17690int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
17691{
17692 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
17693}
17694
17695void msm_routing_pcm_free(struct snd_pcm *pcm)
17696{
17697 msm_pcm_routing_hwdep_free(pcm);
17698}
17699
17700static struct snd_soc_platform_driver msm_soc_routing_platform = {
17701 .ops = &msm_routing_pcm_ops,
17702 .probe = msm_routing_probe,
17703 .pcm_new = msm_routing_pcm_new,
17704 .pcm_free = msm_routing_pcm_free,
17705};
17706
17707static int msm_routing_pcm_probe(struct platform_device *pdev)
17708{
17709
17710 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
17711 return snd_soc_register_platform(&pdev->dev,
17712 &msm_soc_routing_platform);
17713}
17714
17715static int msm_routing_pcm_remove(struct platform_device *pdev)
17716{
17717 snd_soc_unregister_platform(&pdev->dev);
17718 return 0;
17719}
17720
17721static const struct of_device_id msm_pcm_routing_dt_match[] = {
17722 {.compatible = "qcom,msm-pcm-routing"},
17723 {}
17724};
17725MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
17726
17727static struct platform_driver msm_routing_pcm_driver = {
17728 .driver = {
17729 .name = "msm-pcm-routing",
17730 .owner = THIS_MODULE,
17731 .of_match_table = msm_pcm_routing_dt_match,
17732 },
17733 .probe = msm_routing_pcm_probe,
17734 .remove = msm_routing_pcm_remove,
17735};
17736
17737int msm_routing_check_backend_enabled(int fedai_id)
17738{
17739 int i;
17740
17741 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
17742 /* bad ID assigned in machine driver */
17743 pr_err("%s: bad MM ID\n", __func__);
17744 return 0;
17745 }
17746 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17747 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
17748 return msm_bedais[i].active;
17749 }
17750 return 0;
17751}
17752
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017753static int get_cal_type_index(int32_t cal_type)
17754{
17755 int ret = -EINVAL;
17756
17757 switch (cal_type) {
17758 case ADM_TOPOLOGY_CAL_TYPE:
17759 ret = ADM_TOPOLOGY_CAL_TYPE_IDX;
17760 break;
17761 case ADM_LSM_TOPOLOGY_CAL_TYPE:
17762 ret = ADM_LSM_TOPOLOGY_CAL_TYPE_IDX;
17763 break;
17764 default:
17765 pr_err("%s: Invalid cal type %d\n", __func__, cal_type);
17766 }
17767 return ret;
17768}
17769
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017770static int msm_routing_set_cal(int32_t cal_type,
17771 size_t data_size, void *data)
17772{
17773 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017774 int cal_index;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017775 pr_debug("%s\n", __func__);
17776
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017777 cal_index = get_cal_type_index(cal_type);
17778 if (cal_index < 0) {
17779 pr_err("%s: Could not get cal index %d\n",
17780 __func__, cal_index);
17781 ret = -EINVAL;
17782 goto done;
17783 }
17784
17785 ret = cal_utils_set_cal(data_size, data, cal_data[cal_index], 0, NULL);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017786 if (ret < 0) {
17787 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17788 __func__, ret, cal_type);
17789 ret = -EINVAL;
17790 goto done;
17791 }
17792done:
17793 return ret;
17794}
17795
17796static void msm_routing_delete_cal_data(void)
17797{
17798 pr_debug("%s\n", __func__);
17799
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017800 cal_utils_destroy_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017801}
17802
17803static int msm_routing_init_cal_data(void)
17804{
17805 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017806 struct cal_type_info cal_type_info[] = {
17807 {{ADM_TOPOLOGY_CAL_TYPE,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017808 {NULL, NULL, NULL,
17809 msm_routing_set_cal, NULL, NULL} },
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017810 {NULL, NULL, cal_utils_match_buf_num} },
17811
17812 {{ADM_LSM_TOPOLOGY_CAL_TYPE,
17813 {NULL, NULL, NULL,
17814 msm_routing_set_cal, NULL, NULL} },
17815 {NULL, NULL, cal_utils_match_buf_num} },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017816 };
17817 pr_debug("%s\n", __func__);
17818
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017819 ret = cal_utils_create_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0],
17820 &cal_type_info[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017821 if (ret < 0) {
17822 pr_err("%s: could not create cal type!\n",
17823 __func__);
17824 ret = -EINVAL;
17825 goto err;
17826 }
17827
17828 return ret;
17829err:
17830 msm_routing_delete_cal_data();
17831 return ret;
17832}
17833
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017834int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017835{
17836 mutex_init(&routing_lock);
17837 if (msm_routing_init_cal_data())
17838 pr_err("%s: could not init cal data!\n", __func__);
17839
17840 afe_set_routing_callback(
17841 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17842
17843 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17844 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17845
17846 return platform_driver_register(&msm_routing_pcm_driver);
17847}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017848
Asish Bhattacharya5faacb32017-12-04 17:23:15 +053017849void msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017850{
17851 msm_routing_delete_cal_data();
17852 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17853 mutex_destroy(&routing_lock);
17854 platform_driver_unregister(&msm_routing_pcm_driver);
17855}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017856
17857MODULE_DESCRIPTION("MSM routing platform driver");
17858MODULE_LICENSE("GPL v2");