blob: 3338ac6834a59f4746c655ce804cc75d72a5933f [file] [log] [blame]
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#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>
33#include <asoc/msm-dts-srs-tm-config.h>
34#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
60static struct cal_type_data *cal_data;
61
62static int fm_switch_enable;
63static int hfp_switch_enable;
64static int int0_mi2s_switch_enable;
65static int int4_mi2s_switch_enable;
66static int pri_mi2s_switch_enable;
67static int sec_mi2s_switch_enable;
68static int tert_mi2s_switch_enable;
69static int quat_mi2s_switch_enable;
Rohit Kumara5077932017-09-10 22:05:05 +053070static int quin_mi2s_switch_enable;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053071static int fm_pcmrx_switch_enable;
72static int usb_switch_enable;
73static int lsm_port_index;
74static int slim0_rx_aanc_fb_port;
75static int msm_route_ec_ref_rx;
76static int msm_ec_ref_ch = 4;
77static int msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
78static int msm_ec_ref_sampling_rate = 48000;
79static uint32_t voc_session_id = ALL_SESSION_VSID;
80static int msm_route_ext_ec_ref;
81static bool is_custom_stereo_on;
82static bool is_ds2_on;
83static bool swap_ch;
84
85#define WEIGHT_0_DB 0x4000
86/* all the FEs which can support channel mixer */
87static struct msm_pcm_channel_mixer channel_mixer[MSM_FRONTEND_DAI_MM_SIZE];
88/* input BE for each FE */
89static int channel_input[MSM_FRONTEND_DAI_MM_SIZE][ADM_MAX_CHANNELS];
90
91enum {
92 MADNONE,
93 MADAUDIO,
94 MADBEACON,
95 MADULTRASOUND,
96 MADSWAUDIO,
97};
98
99#define ADM_LSM_PORT_INDEX 9
100
101#define SLIMBUS_0_TX_TEXT "SLIMBUS_0_TX"
102#define SLIMBUS_1_TX_TEXT "SLIMBUS_1_TX"
103#define SLIMBUS_2_TX_TEXT "SLIMBUS_2_TX"
104#define SLIMBUS_3_TX_TEXT "SLIMBUS_3_TX"
105#define SLIMBUS_4_TX_TEXT "SLIMBUS_4_TX"
106#define SLIMBUS_5_TX_TEXT "SLIMBUS_5_TX"
107#define TERT_MI2S_TX_TEXT "TERT_MI2S_TX"
108#define QUAT_MI2S_TX_TEXT "QUAT_MI2S_TX"
109#define ADM_LSM_TX_TEXT "ADM_LSM_TX"
110#define INT3_MI2S_TX_TEXT "INT3_MI2S_TX"
111
112#define LSM_FUNCTION_TEXT "LSM Function"
113static const char * const lsm_port_text[] = {
114 "None",
115 SLIMBUS_0_TX_TEXT, SLIMBUS_1_TX_TEXT, SLIMBUS_2_TX_TEXT,
116 SLIMBUS_3_TX_TEXT, SLIMBUS_4_TX_TEXT, SLIMBUS_5_TX_TEXT,
117 TERT_MI2S_TX_TEXT, QUAT_MI2S_TX_TEXT, ADM_LSM_TX_TEXT,
118 INT3_MI2S_TX_TEXT
119};
120
121struct msm_pcm_route_bdai_pp_params {
122 u16 port_id; /* AFE port ID */
123 unsigned long pp_params_config;
124 bool mute_on;
125 int latency;
126};
127
128static struct msm_pcm_route_bdai_pp_params
129 msm_bedais_pp_params[MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX] = {
130 {HDMI_RX, 0, 0, 0},
131 {DISPLAY_PORT_RX, 0, 0, 0},
132};
133
134/*
135 * The be_dai_name_table is passed to HAL so that it can specify the
136 * BE ID for the BE it wants to enable based on the name. Thus there
137 * is a matching table and structure in HAL that need to be updated
138 * if any changes to these are made.
139 */
140struct msm_pcm_route_bdai_name {
141 unsigned int be_id;
142 char be_name[LPASS_BE_NAME_MAX_LENGTH];
143};
144static struct msm_pcm_route_bdai_name be_dai_name_table[MSM_BACKEND_DAI_MAX];
145
146static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
147 int fe_id);
148
149static int msm_routing_get_bit_width(unsigned int format)
150{
151 int bit_width;
152
153 switch (format) {
154 case SNDRV_PCM_FORMAT_S32_LE:
155 bit_width = 32;
156 break;
157 case SNDRV_PCM_FORMAT_S24_LE:
158 case SNDRV_PCM_FORMAT_S24_3LE:
159 bit_width = 24;
160 break;
161 case SNDRV_PCM_FORMAT_S16_LE:
162 default:
163 bit_width = 16;
164 }
165 return bit_width;
166}
167
168static bool msm_is_resample_needed(int input_sr, int output_sr)
169{
170 bool rc = false;
171
172 if (input_sr != output_sr)
173 rc = true;
174
175 pr_debug("perform resampling (%s) for copp rate (%d)afe rate (%d)",
176 (rc ? "oh yes" : "not really"),
177 input_sr, output_sr);
178
179 return rc;
180}
181
182static void msm_pcm_routing_cfg_pp(int port_id, int copp_idx, int topology,
183 int channels)
184{
185 int rc = 0;
186
187 switch (topology) {
188 case SRS_TRUMEDIA_TOPOLOGY_ID:
189 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
190 msm_dts_srs_tm_init(port_id, copp_idx);
191 break;
192 case DS2_ADM_COPP_TOPOLOGY_ID:
193 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY %d\n",
194 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
195 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
196 is_custom_stereo_on);
197 if (rc < 0)
198 pr_err("%s: DS2 topo_id 0x%x, port %d, CS %d rc %d\n",
199 __func__, topology, port_id,
200 is_custom_stereo_on, rc);
201 break;
202 case DOLBY_ADM_COPP_TOPOLOGY_ID:
203 if (is_ds2_on) {
204 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY\n", __func__);
205 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
206 is_custom_stereo_on);
207 if (rc < 0)
208 pr_err("%s:DS2 topo_id 0x%x, port %d, rc %d\n",
209 __func__, topology, port_id, rc);
210 } else {
211 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
212 rc = msm_dolby_dap_init(port_id, copp_idx, channels,
213 is_custom_stereo_on);
214 if (rc < 0)
215 pr_err("%s: DS1 topo_id 0x%x, port %d, rc %d\n",
216 __func__, topology, port_id, rc);
217 }
218 break;
219 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
220 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
221 rc = msm_qti_pp_asphere_init(port_id, copp_idx);
222 if (rc < 0)
223 pr_err("%s: topo_id 0x%x, port %d, copp %d, rc %d\n",
224 __func__, topology, port_id, copp_idx, rc);
225 break;
226 default:
227 /* custom topology specific feature param handlers */
228 break;
229 }
230}
231
232static void msm_pcm_routing_deinit_pp(int port_id, int topology)
233{
234 switch (topology) {
235 case SRS_TRUMEDIA_TOPOLOGY_ID:
236 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
237 msm_dts_srs_tm_deinit(port_id);
238 break;
239 case DS2_ADM_COPP_TOPOLOGY_ID:
240 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID %d\n",
241 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
242 msm_ds2_dap_deinit(port_id);
243 break;
244 case DOLBY_ADM_COPP_TOPOLOGY_ID:
245 if (is_ds2_on) {
246 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID\n", __func__);
247 msm_ds2_dap_deinit(port_id);
248 } else {
249 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
250 msm_dolby_dap_deinit(port_id);
251 }
252 break;
253 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
254 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
255 msm_qti_pp_asphere_deinit(port_id);
256 break;
257 default:
258 /* custom topology specific feature deinit handlers */
259 break;
260 }
261}
262
263static void msm_pcm_routng_cfg_matrix_map_pp(struct route_payload payload,
264 int path_type, int perf_mode)
265{
266 int itr = 0, rc = 0;
267
268 if ((path_type == ADM_PATH_PLAYBACK) &&
269 (perf_mode == LEGACY_PCM_MODE) &&
270 is_custom_stereo_on) {
271 for (itr = 0; itr < payload.num_copps; itr++) {
272 if ((payload.port_id[itr] != SLIMBUS_0_RX) &&
273 (payload.port_id[itr] != RT_PROXY_PORT_001_RX)) {
274 continue;
275 }
276
277 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd(
278 payload.port_id[itr],
279 payload.copp_idx[itr],
280 payload.session_id,
281 Q14_GAIN_ZERO_POINT_FIVE,
282 Q14_GAIN_ZERO_POINT_FIVE,
283 Q14_GAIN_ZERO_POINT_FIVE,
284 Q14_GAIN_ZERO_POINT_FIVE);
285 if (rc < 0)
286 pr_err("%s: err setting custom stereo\n",
287 __func__);
288 }
289 }
290}
291
292#define SLIMBUS_EXTPROC_RX AFE_PORT_INVALID
293struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = {
294 { PRIMARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_RX},
295 { PRIMARY_I2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_TX},
296 { SLIMBUS_0_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_RX},
297 { SLIMBUS_0_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_TX},
298 { HDMI_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_HDMI},
299 { INT_BT_SCO_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_RX},
300 { INT_BT_SCO_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_TX},
301 { INT_FM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_RX},
302 { INT_FM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_TX},
303 { RT_PROXY_PORT_001_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
304 LPASS_BE_AFE_PCM_RX},
305 { RT_PROXY_PORT_001_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
306 LPASS_BE_AFE_PCM_TX},
307 { AFE_PORT_ID_PRIMARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
308 LPASS_BE_AUXPCM_RX},
309 { AFE_PORT_ID_PRIMARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
310 LPASS_BE_AUXPCM_TX},
311 { VOICE_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
312 LPASS_BE_VOICE_PLAYBACK_TX},
313 { VOICE2_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
314 LPASS_BE_VOICE2_PLAYBACK_TX},
315 { VOICE_RECORD_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
316 LPASS_BE_INCALL_RECORD_RX},
317 { VOICE_RECORD_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
318 LPASS_BE_INCALL_RECORD_TX},
319 { MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_RX},
320 { MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_TX},
321 { SECONDARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SEC_I2S_RX},
322 { SLIMBUS_1_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_RX},
323 { SLIMBUS_1_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_TX},
324 { SLIMBUS_2_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_RX},
325 { SLIMBUS_2_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_TX},
326 { SLIMBUS_3_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_RX},
327 { SLIMBUS_3_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_TX},
328 { SLIMBUS_4_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_RX},
329 { SLIMBUS_4_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_TX},
330 { SLIMBUS_5_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_RX},
331 { SLIMBUS_5_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_TX},
332 { SLIMBUS_6_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_RX},
333 { SLIMBUS_6_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_TX},
334 { SLIMBUS_7_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_RX},
335 { SLIMBUS_7_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_TX},
336 { SLIMBUS_8_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_RX},
337 { SLIMBUS_8_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_TX},
338 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_RX},
339 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_TX},
340 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_1_TX},
341 { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
342 LPASS_BE_QUAT_MI2S_RX},
343 { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
344 LPASS_BE_QUAT_MI2S_TX},
345 { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
346 LPASS_BE_SEC_MI2S_RX},
347 { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
348 LPASS_BE_SEC_MI2S_TX},
349 { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
350 LPASS_BE_PRI_MI2S_RX},
351 { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
352 LPASS_BE_PRI_MI2S_TX},
353 { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
354 LPASS_BE_TERT_MI2S_RX},
355 { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
356 LPASS_BE_TERT_MI2S_TX},
357 { AUDIO_PORT_ID_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
358 LPASS_BE_AUDIO_I2S_RX},
359 { AFE_PORT_ID_SECONDARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
360 LPASS_BE_SEC_AUXPCM_RX},
361 { AFE_PORT_ID_SECONDARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
362 LPASS_BE_SEC_AUXPCM_TX},
363 { AFE_PORT_ID_SPDIF_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
364 LPASS_BE_SPDIF_RX},
365 { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, {0}, {0}, 0, 0, 0, 0, {0},
366 LPASS_BE_SEC_MI2S_RX_SD1},
367 { AFE_PORT_ID_QUINARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
368 LPASS_BE_QUIN_MI2S_RX},
369 { AFE_PORT_ID_QUINARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
370 LPASS_BE_QUIN_MI2S_TX},
371 { AFE_PORT_ID_SENARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
372 LPASS_BE_SENARY_MI2S_TX},
373 { AFE_PORT_ID_PRIMARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
374 LPASS_BE_PRI_TDM_RX_0},
375 { AFE_PORT_ID_PRIMARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
376 LPASS_BE_PRI_TDM_TX_0},
377 { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
378 LPASS_BE_PRI_TDM_RX_1},
379 { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
380 LPASS_BE_PRI_TDM_TX_1},
381 { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
382 LPASS_BE_PRI_TDM_RX_2},
383 { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
384 LPASS_BE_PRI_TDM_TX_2},
385 { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
386 LPASS_BE_PRI_TDM_RX_3},
387 { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
388 LPASS_BE_PRI_TDM_TX_3},
389 { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
390 LPASS_BE_PRI_TDM_RX_4},
391 { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
392 LPASS_BE_PRI_TDM_TX_4},
393 { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
394 LPASS_BE_PRI_TDM_RX_5},
395 { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
396 LPASS_BE_PRI_TDM_TX_5},
397 { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
398 LPASS_BE_PRI_TDM_RX_6},
399 { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
400 LPASS_BE_PRI_TDM_TX_6},
401 { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
402 LPASS_BE_PRI_TDM_RX_7},
403 { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
404 LPASS_BE_PRI_TDM_TX_7},
405 { AFE_PORT_ID_SECONDARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
406 LPASS_BE_SEC_TDM_RX_0},
407 { AFE_PORT_ID_SECONDARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
408 LPASS_BE_SEC_TDM_TX_0},
409 { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
410 LPASS_BE_SEC_TDM_RX_1},
411 { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
412 LPASS_BE_SEC_TDM_TX_1},
413 { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
414 LPASS_BE_SEC_TDM_RX_2},
415 { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
416 LPASS_BE_SEC_TDM_TX_2},
417 { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
418 LPASS_BE_SEC_TDM_RX_3},
419 { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
420 LPASS_BE_SEC_TDM_TX_3},
421 { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
422 LPASS_BE_SEC_TDM_RX_4},
423 { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
424 LPASS_BE_SEC_TDM_TX_4},
425 { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
426 LPASS_BE_SEC_TDM_RX_5},
427 { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
428 LPASS_BE_SEC_TDM_TX_5},
429 { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
430 LPASS_BE_SEC_TDM_RX_6},
431 { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
432 LPASS_BE_SEC_TDM_TX_6},
433 { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
434 LPASS_BE_SEC_TDM_RX_7},
435 { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
436 LPASS_BE_SEC_TDM_TX_7},
437 { AFE_PORT_ID_TERTIARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
438 LPASS_BE_TERT_TDM_RX_0},
439 { AFE_PORT_ID_TERTIARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
440 LPASS_BE_TERT_TDM_TX_0},
441 { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
442 LPASS_BE_TERT_TDM_RX_1},
443 { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
444 LPASS_BE_TERT_TDM_TX_1},
445 { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
446 LPASS_BE_TERT_TDM_RX_2},
447 { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
448 LPASS_BE_TERT_TDM_TX_2},
449 { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
450 LPASS_BE_TERT_TDM_RX_3},
451 { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
452 LPASS_BE_TERT_TDM_TX_3},
453 { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
454 LPASS_BE_TERT_TDM_RX_4},
455 { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
456 LPASS_BE_TERT_TDM_TX_4},
457 { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
458 LPASS_BE_TERT_TDM_RX_5},
459 { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
460 LPASS_BE_TERT_TDM_TX_5},
461 { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
462 LPASS_BE_TERT_TDM_RX_6},
463 { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
464 LPASS_BE_TERT_TDM_TX_6},
465 { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
466 LPASS_BE_TERT_TDM_RX_7},
467 { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
468 LPASS_BE_TERT_TDM_TX_7},
469 { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
470 LPASS_BE_QUAT_TDM_RX_0},
471 { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
472 LPASS_BE_QUAT_TDM_TX_0},
473 { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
474 LPASS_BE_QUAT_TDM_RX_1},
475 { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
476 LPASS_BE_QUAT_TDM_TX_1},
477 { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
478 LPASS_BE_QUAT_TDM_RX_2},
479 { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
480 LPASS_BE_QUAT_TDM_TX_2},
481 { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
482 LPASS_BE_QUAT_TDM_RX_3},
483 { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
484 LPASS_BE_QUAT_TDM_TX_3},
485 { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
486 LPASS_BE_QUAT_TDM_RX_4},
487 { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
488 LPASS_BE_QUAT_TDM_TX_4},
489 { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
490 LPASS_BE_QUAT_TDM_RX_5},
491 { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
492 LPASS_BE_QUAT_TDM_TX_5},
493 { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
494 LPASS_BE_QUAT_TDM_RX_6},
495 { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
496 LPASS_BE_QUAT_TDM_TX_6},
497 { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
498 LPASS_BE_QUAT_TDM_RX_7},
499 { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
500 LPASS_BE_QUAT_TDM_TX_7},
Rohit Kumara5077932017-09-10 22:05:05 +0530501 { AFE_PORT_ID_QUINARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
502 LPASS_BE_QUIN_TDM_RX_0},
503 { AFE_PORT_ID_QUINARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
504 LPASS_BE_QUIN_TDM_TX_0},
505 { AFE_PORT_ID_QUINARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
506 LPASS_BE_QUIN_TDM_RX_1},
507 { AFE_PORT_ID_QUINARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
508 LPASS_BE_QUIN_TDM_TX_1},
509 { AFE_PORT_ID_QUINARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
510 LPASS_BE_QUIN_TDM_RX_2},
511 { AFE_PORT_ID_QUINARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
512 LPASS_BE_QUIN_TDM_TX_2},
513 { AFE_PORT_ID_QUINARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
514 LPASS_BE_QUIN_TDM_RX_3},
515 { AFE_PORT_ID_QUINARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
516 LPASS_BE_QUIN_TDM_TX_3},
517 { AFE_PORT_ID_QUINARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
518 LPASS_BE_QUIN_TDM_RX_4},
519 { AFE_PORT_ID_QUINARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
520 LPASS_BE_QUIN_TDM_TX_4},
521 { AFE_PORT_ID_QUINARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
522 LPASS_BE_QUIN_TDM_RX_5},
523 { AFE_PORT_ID_QUINARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
524 LPASS_BE_QUIN_TDM_TX_5},
525 { AFE_PORT_ID_QUINARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
526 LPASS_BE_QUIN_TDM_RX_6},
527 { AFE_PORT_ID_QUINARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
528 LPASS_BE_QUIN_TDM_TX_6},
529 { AFE_PORT_ID_QUINARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
530 LPASS_BE_QUIN_TDM_RX_7},
531 { AFE_PORT_ID_QUINARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
532 LPASS_BE_QUIN_TDM_TX_7},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530533 { INT_BT_A2DP_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
534 LPASS_BE_INT_BT_A2DP_RX},
535 { AFE_PORT_ID_USB_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
536 LPASS_BE_USB_AUDIO_RX},
537 { AFE_PORT_ID_USB_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
538 LPASS_BE_USB_AUDIO_TX},
539 { DISPLAY_PORT_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
540 LPASS_BE_DISPLAY_PORT},
541 { AFE_PORT_ID_TERTIARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
542 LPASS_BE_TERT_AUXPCM_RX},
543 { AFE_PORT_ID_TERTIARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
544 LPASS_BE_TERT_AUXPCM_TX},
545 { AFE_PORT_ID_QUATERNARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
546 LPASS_BE_QUAT_AUXPCM_RX},
547 { AFE_PORT_ID_QUATERNARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
548 LPASS_BE_QUAT_AUXPCM_TX},
Rohit Kumara5077932017-09-10 22:05:05 +0530549 { AFE_PORT_ID_QUINARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
550 LPASS_BE_QUIN_AUXPCM_RX},
551 { AFE_PORT_ID_QUINARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
552 LPASS_BE_QUIN_AUXPCM_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530553 { AFE_PORT_ID_INT0_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
554 LPASS_BE_INT0_MI2S_RX},
555 { AFE_PORT_ID_INT0_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
556 LPASS_BE_INT0_MI2S_TX},
557 { AFE_PORT_ID_INT1_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
558 LPASS_BE_INT1_MI2S_RX},
559 { AFE_PORT_ID_INT1_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
560 LPASS_BE_INT1_MI2S_TX},
561 { AFE_PORT_ID_INT2_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
562 LPASS_BE_INT2_MI2S_RX},
563 { AFE_PORT_ID_INT2_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
564 LPASS_BE_INT2_MI2S_TX},
565 { AFE_PORT_ID_INT3_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
566 LPASS_BE_INT3_MI2S_RX},
567 { AFE_PORT_ID_INT3_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
568 LPASS_BE_INT3_MI2S_TX},
569 { AFE_PORT_ID_INT4_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
570 LPASS_BE_INT4_MI2S_RX},
571 { AFE_PORT_ID_INT4_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
572 LPASS_BE_INT4_MI2S_TX},
573 { AFE_PORT_ID_INT5_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
574 LPASS_BE_INT5_MI2S_RX},
575 { AFE_PORT_ID_INT5_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
576 LPASS_BE_INT5_MI2S_TX},
577 { AFE_PORT_ID_INT6_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
578 LPASS_BE_INT6_MI2S_RX},
579 { AFE_PORT_ID_INT6_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
580 LPASS_BE_INT6_MI2S_TX},
581};
582
583/* Track ASM playback & capture sessions of DAI
584 * Track LSM listen sessions
585 */
586static struct msm_pcm_routing_fdai_data
587 fe_dai_map[MSM_FRONTEND_DAI_MAX][2] = {
588 /* MULTIMEDIA1 */
589 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
590 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
591 /* MULTIMEDIA2 */
592 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
593 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
594 /* MULTIMEDIA3 */
595 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
596 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
597 /* MULTIMEDIA4 */
598 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
599 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
600 /* MULTIMEDIA5 */
601 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
602 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
603 /* MULTIMEDIA6 */
604 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
605 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
606 /* MULTIMEDIA7*/
607 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
608 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
609 /* MULTIMEDIA8 */
610 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
611 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
612 /* MULTIMEDIA9 */
613 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
614 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
615 /* MULTIMEDIA10 */
616 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
617 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
618 /* MULTIMEDIA11 */
619 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
620 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
621 /* MULTIMEDIA12 */
622 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
623 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
624 /* MULTIMEDIA13 */
625 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
626 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
627 /* MULTIMEDIA14 */
628 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
629 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
630 /* MULTIMEDIA15 */
631 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
632 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
633 /* MULTIMEDIA16 */
634 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
635 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
636 /* MULTIMEDIA17 */
637 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
638 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
639 /* MULTIMEDIA18 */
640 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
641 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
642 /* MULTIMEDIA19 */
643 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
644 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
645 /* MULTIMEDIA20 */
646 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
647 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
648 /* CS_VOICE */
649 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
650 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
651 /* VOIP */
652 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
653 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
654 /* AFE_RX */
655 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
656 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
657 /* AFE_TX */
658 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
659 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
660 /* VOICE_STUB */
661 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
662 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
663 /* VOLTE */
664 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
665 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
666 /* DTMF_RX */
667 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
668 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
669 /* VOICE2 */
670 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
671 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
672 /* QCHAT */
673 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
674 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
675 /* VOLTE_STUB */
676 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
677 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
678 /* LSM1 */
679 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
680 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
681 /* LSM2 */
682 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
683 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
684 /* LSM3 */
685 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
686 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
687 /* LSM4 */
688 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
689 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
690 /* LSM5 */
691 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
692 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
693 /* LSM6 */
694 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
695 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
696 /* LSM7 */
697 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
698 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
699 /* LSM8 */
700 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
701 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
702 /* VOICE2_STUB */
703 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
704 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
705 /* VOWLAN */
706 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
707 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
708 /* VOICEMMODE1 */
709 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
710 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
711 /* VOICEMMODE2 */
712 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
713 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
714};
715
716static unsigned long session_copp_map[MSM_FRONTEND_DAI_MAX][2]
717 [MSM_BACKEND_DAI_MAX];
718static struct msm_pcm_routing_app_type_data app_type_cfg[MAX_APP_TYPES];
719static struct msm_pcm_routing_app_type_data lsm_app_type_cfg[MAX_APP_TYPES];
720static struct msm_pcm_stream_app_type_cfg
721 fe_dai_app_type_cfg[MSM_FRONTEND_DAI_MAX][2][MSM_BACKEND_DAI_MAX];
722
723static int last_be_id_configured[MSM_FRONTEND_DAI_MAX][MAX_SESSION_TYPES];
724
725/* The caller of this should aqcuire routing lock */
726void msm_pcm_routing_get_bedai_info(int be_idx,
727 struct msm_pcm_routing_bdai_data *be_dai)
728{
729 if (be_idx >= 0 && be_idx < MSM_BACKEND_DAI_MAX)
730 memcpy(be_dai, &msm_bedais[be_idx],
731 sizeof(struct msm_pcm_routing_bdai_data));
732}
733
734/* The caller of this should aqcuire routing lock */
735void msm_pcm_routing_get_fedai_info(int fe_idx, int sess_type,
736 struct msm_pcm_routing_fdai_data *fe_dai)
737{
738 if ((sess_type == SESSION_TYPE_TX) || (sess_type == SESSION_TYPE_RX))
739 memcpy(fe_dai, &fe_dai_map[fe_idx][sess_type],
740 sizeof(struct msm_pcm_routing_fdai_data));
741}
742
743void msm_pcm_routing_acquire_lock(void)
744{
745 mutex_lock(&routing_lock);
746}
747
748void msm_pcm_routing_release_lock(void)
749{
750 mutex_unlock(&routing_lock);
751}
752
753static int msm_pcm_routing_get_app_type_idx(int app_type)
754{
755 int idx;
756
757 pr_debug("%s: app_type: %d\n", __func__, app_type);
758 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
759 if (app_type_cfg[idx].app_type == app_type)
760 return idx;
761 }
762 pr_info("%s: App type not available, fallback to default\n", __func__);
763 return 0;
764}
765
766static int msm_pcm_routing_get_lsm_app_type_idx(int app_type)
767{
768 int idx;
769
770 pr_debug("%s: app_type: %d\n", __func__, app_type);
771 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
772 if (lsm_app_type_cfg[idx].app_type == app_type)
773 return idx;
774 }
775 pr_debug("%s: App type not available, fallback to default\n", __func__);
776 return 0;
777}
778
779static bool is_mm_lsm_fe_id(int fe_id)
780{
781 bool rc = true;
782
783 if (fe_id > MSM_FRONTEND_DAI_MM_MAX_ID &&
784 ((fe_id < MSM_FRONTEND_DAI_LSM1) ||
785 (fe_id > MSM_FRONTEND_DAI_LSM8))) {
786 rc = false;
787 }
788 return rc;
789}
790
791int msm_pcm_routing_reg_stream_app_type_cfg(
792 int fedai_id, int session_type, int be_id,
793 struct msm_pcm_stream_app_type_cfg *cfg_data)
794{
795 int ret = 0;
796
797 if (cfg_data == NULL) {
798 pr_err("%s: Received NULL pointer for cfg_data\n", __func__);
799 ret = -EINVAL;
800 goto done;
801 }
802
803 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
804 __func__, fedai_id, session_type, be_id,
805 cfg_data->app_type, cfg_data->acdb_dev_id,
806 cfg_data->sample_rate);
807
808 if (!is_mm_lsm_fe_id(fedai_id)) {
809 pr_err("%s: Invalid machine driver ID %d\n",
810 __func__, fedai_id);
811 ret = -EINVAL;
812 goto done;
813 }
814 if (session_type != SESSION_TYPE_RX &&
815 session_type != SESSION_TYPE_TX) {
816 pr_err("%s: Invalid session type %d\n",
817 __func__, session_type);
818 ret = -EINVAL;
819 goto done;
820 }
821 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
822 pr_err("%s: Received out of bounds be_id %d\n",
823 __func__, be_id);
824 ret = -EINVAL;
825 goto done;
826 }
827
828 fe_dai_app_type_cfg[fedai_id][session_type][be_id] = *cfg_data;
829
830 /*
831 * Store the BE ID of the configuration information set as the latest so
832 * the get mixer control knows what to return.
833 */
834 last_be_id_configured[fedai_id][session_type] = be_id;
835
836done:
837 return ret;
838}
839EXPORT_SYMBOL(msm_pcm_routing_reg_stream_app_type_cfg);
840
841/**
842 * msm_pcm_routing_get_stream_app_type_cfg
843 *
844 * Receives fedai_id, session_type, be_id, and populates app_type,
845 * acdb_dev_id, & sample rate. Returns 0 on success. On failure returns
846 * -EINVAL and does not alter passed values.
847 *
848 * fedai_id - Passed value, front end ID for which app type config is wanted
849 * session_type - Passed value, session type for which app type config
850 * is wanted
851 * be_id - Returned value, back end device id the app type config data is for
852 * cfg_data - Returned value, configuration data used by app type config
853 */
854int msm_pcm_routing_get_stream_app_type_cfg(
855 int fedai_id, int session_type, int *bedai_id,
856 struct msm_pcm_stream_app_type_cfg *cfg_data)
857{
858 int be_id;
859 int ret = 0;
860
861 if (bedai_id == NULL) {
862 pr_err("%s: Received NULL pointer for backend ID\n", __func__);
863 ret = -EINVAL;
864 goto done;
865 } else if (cfg_data == NULL) {
866 pr_err("%s: NULL pointer sent for cfg_data\n", __func__);
867 ret = -EINVAL;
868 goto done;
869 } else if (!is_mm_lsm_fe_id(fedai_id)) {
870 pr_err("%s: Invalid FE ID %d\n", __func__, fedai_id);
871 ret = -EINVAL;
872 goto done;
873 } else if (session_type != SESSION_TYPE_RX &&
874 session_type != SESSION_TYPE_TX) {
875 pr_err("%s: Invalid session type %d\n", __func__, session_type);
876 ret = -EINVAL;
877 goto done;
878 }
879
880 be_id = last_be_id_configured[fedai_id][session_type];
881 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
882 pr_err("%s: Invalid BE ID %d\n", __func__, be_id);
883 ret = -EINVAL;
884 goto done;
885 }
886
887 *bedai_id = be_id;
888 *cfg_data = fe_dai_app_type_cfg[fedai_id][session_type][be_id];
889 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
890 __func__, fedai_id, session_type, *bedai_id,
891 cfg_data->app_type, cfg_data->acdb_dev_id,
892 cfg_data->sample_rate);
893done:
894 return ret;
895}
896EXPORT_SYMBOL(msm_pcm_routing_get_stream_app_type_cfg);
897
898static struct cal_block_data *msm_routing_find_topology_by_path(int path)
899{
900 struct list_head *ptr, *next;
901 struct cal_block_data *cal_block = NULL;
902
903 pr_debug("%s\n", __func__);
904
905 list_for_each_safe(ptr, next,
906 &cal_data->cal_blocks) {
907
908 cal_block = list_entry(ptr,
909 struct cal_block_data, list);
910
911 if (((struct audio_cal_info_adm_top *)cal_block->cal_info)
912 ->path == path) {
913 return cal_block;
914 }
915 }
916 pr_debug("%s: Can't find topology for path %d\n", __func__, path);
917 return NULL;
918}
919
920static struct cal_block_data *msm_routing_find_topology(int path,
921 int app_type,
922 int acdb_id)
923{
924 struct list_head *ptr, *next;
925 struct cal_block_data *cal_block = NULL;
926 struct audio_cal_info_adm_top *cal_info;
927
928 pr_debug("%s\n", __func__);
929
930 list_for_each_safe(ptr, next,
931 &cal_data->cal_blocks) {
932
933 cal_block = list_entry(ptr,
934 struct cal_block_data, list);
935
936 cal_info = (struct audio_cal_info_adm_top *)
937 cal_block->cal_info;
938 if ((cal_info->path == path) &&
939 (cal_info->app_type == app_type) &&
940 (cal_info->acdb_id == acdb_id)) {
941 return cal_block;
942 }
943 }
944 pr_debug("%s: Can't find topology for path %d, app %d, acdb_id %d defaulting to search by path\n",
945 __func__, path, app_type, acdb_id);
946 return msm_routing_find_topology_by_path(path);
947}
948
949static int msm_routing_get_adm_topology(int fedai_id, int session_type,
950 int be_id)
951{
952 int topology = NULL_COPP_TOPOLOGY;
953 struct cal_block_data *cal_block = NULL;
954 int app_type = 0, acdb_dev_id = 0;
955
956
957 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
958 __func__, fedai_id, session_type, be_id);
959
960 if (cal_data == NULL)
961 goto done;
962
963 mutex_lock(&cal_data->lock);
964
965 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
966 acdb_dev_id =
967 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
968
969 cal_block = msm_routing_find_topology(session_type, app_type,
970 acdb_dev_id);
971 if (cal_block == NULL)
972 goto unlock;
973
974 topology = ((struct audio_cal_info_adm_top *)
975 cal_block->cal_info)->topology;
976unlock:
977 mutex_unlock(&cal_data->lock);
978done:
979 pr_debug("%s: Using topology %d\n", __func__, topology);
980 return topology;
981}
982
983static uint8_t is_be_dai_extproc(int be_dai)
984{
985 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
986 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
987 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
988 return 1;
989 else
990 return 0;
991}
992
993static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
994 int path_type, int perf_mode,
995 uint32_t passthr_mode)
996{
997 int i, port_type, j, num_copps = 0;
998 struct route_payload payload;
999
1000 port_type = ((path_type == ADM_PATH_PLAYBACK ||
1001 path_type == ADM_PATH_COMPRESSED_RX) ?
1002 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
1003
1004 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1005 if (!is_be_dai_extproc(i) &&
1006 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1007 (msm_bedais[i].active) &&
1008 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1009 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1010 unsigned long copp =
1011 session_copp_map[fedai_id][sess_type][i];
1012 if (test_bit(j, &copp)) {
1013 payload.port_id[num_copps] =
1014 msm_bedais[i].port_id;
1015 payload.copp_idx[num_copps] = j;
1016 payload.app_type[num_copps] =
1017 fe_dai_app_type_cfg
1018 [fedai_id][sess_type][i]
1019 .app_type;
1020 payload.acdb_dev_id[num_copps] =
1021 fe_dai_app_type_cfg
1022 [fedai_id][sess_type][i]
1023 .acdb_dev_id;
1024 payload.sample_rate[num_copps] =
1025 fe_dai_app_type_cfg
1026 [fedai_id][sess_type][i]
1027 .sample_rate;
1028 num_copps++;
1029 }
1030 }
1031 }
1032 }
1033
1034 if (num_copps) {
1035 payload.num_copps = num_copps;
1036 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1037 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1038 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1039 }
1040}
1041
1042void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1043 int stream_type)
1044{
1045 int i, session_type, path_type, port_type;
1046 u32 mode = 0;
1047
1048 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1049 /* bad ID assigned in machine driver */
1050 pr_err("%s: bad MM ID\n", __func__);
1051 return;
1052 }
1053
1054 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1055 session_type = SESSION_TYPE_RX;
1056 path_type = ADM_PATH_PLAYBACK;
1057 port_type = MSM_AFE_PORT_TYPE_RX;
1058 } else {
1059 session_type = SESSION_TYPE_TX;
1060 path_type = ADM_PATH_LIVE_REC;
1061 port_type = MSM_AFE_PORT_TYPE_TX;
1062 }
1063
1064 mutex_lock(&routing_lock);
1065
1066 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1067 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1068 if (!is_be_dai_extproc(i) &&
1069 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1070 (msm_bedais[i].active) &&
1071 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1072 mode = afe_get_port_type(msm_bedais[i].port_id);
1073 adm_connect_afe_port(mode, dspst_id,
1074 msm_bedais[i].port_id);
1075 break;
1076 }
1077 }
1078 mutex_unlock(&routing_lock);
1079}
1080
1081static bool route_check_fe_id_adm_support(int fe_id)
1082{
1083 bool rc = true;
1084
1085 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1086 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1087 /* fe id is listen while port is set to afe */
1088 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1089 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1090 __func__, fe_id, lsm_port_index);
1091 rc = false;
1092 }
1093 }
1094
1095 return rc;
1096}
1097
1098int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1099 int dspst_id, int stream_type,
1100 uint32_t passthr_mode)
1101{
1102 int i, j, session_type, path_type, port_type, topology;
1103 int num_copps = 0;
1104 struct route_payload payload;
1105 u32 channels, sample_rate;
1106 u16 bit_width = 16;
1107 bool is_lsm;
1108
1109 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1110 __func__, fe_id, perf_mode, dspst_id,
1111 stream_type, passthr_mode);
1112 if (!is_mm_lsm_fe_id(fe_id)) {
1113 /* bad ID assigned in machine driver */
1114 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1115 return -EINVAL;
1116 }
1117
1118 if (!route_check_fe_id_adm_support(fe_id)) {
1119 /* ignore adm open if not supported for fe_id */
1120 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1121 return 0;
1122 }
1123
1124 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1125 session_type = SESSION_TYPE_RX;
1126 if (passthr_mode != LEGACY_PCM)
1127 path_type = ADM_PATH_COMPRESSED_RX;
1128 else
1129 path_type = ADM_PATH_PLAYBACK;
1130 port_type = MSM_AFE_PORT_TYPE_RX;
1131 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1132 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301133 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301134 path_type = ADM_PATH_COMPRESSED_TX;
1135 else
1136 path_type = ADM_PATH_LIVE_REC;
1137 port_type = MSM_AFE_PORT_TYPE_TX;
1138 } else {
1139 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1140 return -EINVAL;
1141 }
1142
1143 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1144 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1145 mutex_lock(&routing_lock);
1146
1147 payload.num_copps = 0; /* only RX needs to use payload */
1148 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1149 /* re-enable EQ if active */
1150 msm_qti_pp_send_eq_values(fe_id);
1151 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1152 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1153 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1154
1155 if (!is_be_dai_extproc(i) &&
1156 (afe_get_port_type(msm_bedais[i].port_id) ==
1157 port_type) &&
1158 (msm_bedais[i].active) &&
1159 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1160 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1161
1162 /*
1163 * check if ADM needs to be configured with different
1164 * channel mapping than backend
1165 */
1166 if (!msm_bedais[i].adm_override_ch)
1167 channels = msm_bedais[i].channel;
1168 else
1169 channels = msm_bedais[i].adm_override_ch;
1170
1171 bit_width = msm_routing_get_bit_width(
1172 msm_bedais[i].format);
1173 app_type =
1174 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1175 if (app_type && is_lsm) {
1176 app_type_idx =
1177 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1178 sample_rate =
1179 fe_dai_app_type_cfg[fe_id][session_type][i]
1180 .sample_rate;
1181 bit_width =
1182 lsm_app_type_cfg[app_type_idx].bit_width;
1183 } else if (app_type) {
1184 app_type_idx =
1185 msm_pcm_routing_get_app_type_idx(
1186 app_type);
1187 sample_rate =
1188 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1189 bit_width =
1190 app_type_cfg[app_type_idx].bit_width;
1191 } else {
1192 sample_rate = msm_bedais[i].sample_rate;
1193 }
1194 acdb_dev_id =
1195 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1196 topology = msm_routing_get_adm_topology(fe_id,
1197 session_type,
1198 i);
1199 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1200 || (passthr_mode ==
1201 COMPRESSED_PASSTHROUGH_GEN))
1202 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1203 pr_debug("%s: Before adm open topology %d\n", __func__,
1204 topology);
1205
1206 copp_idx =
1207 adm_open(msm_bedais[i].port_id,
1208 path_type, sample_rate, channels,
1209 topology, perf_mode, bit_width,
1210 app_type, acdb_dev_id);
1211 if ((copp_idx < 0) ||
1212 (copp_idx >= MAX_COPPS_PER_PORT)) {
1213 pr_err("%s:adm open failed coppid:%d\n",
1214 __func__, copp_idx);
1215 mutex_unlock(&routing_lock);
1216 return -EINVAL;
1217 }
1218 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1219 __func__, fe_id, session_type, i);
1220 set_bit(copp_idx,
1221 &session_copp_map[fe_id][session_type][i]);
1222
1223 if (msm_is_resample_needed(
1224 sample_rate,
1225 msm_bedais[i].sample_rate))
1226 adm_copp_mfc_cfg(
1227 msm_bedais[i].port_id, copp_idx,
1228 msm_bedais[i].sample_rate);
1229
1230 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1231 unsigned long copp =
1232 session_copp_map[fe_id][session_type][i];
1233 if (test_bit(j, &copp)) {
1234 payload.port_id[num_copps] =
1235 msm_bedais[i].port_id;
1236 payload.copp_idx[num_copps] = j;
1237 payload.app_type[num_copps] =
1238 fe_dai_app_type_cfg
1239 [fe_id][session_type][i]
1240 .app_type;
1241 payload.acdb_dev_id[num_copps] =
1242 fe_dai_app_type_cfg
1243 [fe_id][session_type][i]
1244 .acdb_dev_id;
1245 payload.sample_rate[num_copps] =
1246 fe_dai_app_type_cfg
1247 [fe_id][session_type][i]
1248 .sample_rate;
1249 num_copps++;
1250 }
1251 }
1252 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1253 && passthr_mode !=
1254 COMPRESSED_PASSTHROUGH_GEN) {
1255 msm_routing_send_device_pp_params(
1256 msm_bedais[i].port_id,
1257 copp_idx, fe_id);
1258 }
1259 }
1260 }
1261 if (num_copps) {
1262 payload.num_copps = num_copps;
1263 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1264 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1265 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1266 }
1267 mutex_unlock(&routing_lock);
1268 return 0;
1269}
1270
1271static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1272{
1273 u32 session_id;
1274
1275 switch (val) {
1276 case MSM_FRONTEND_DAI_CS_VOICE:
1277 session_id = voc_get_session_id(VOICE_SESSION_NAME);
1278 break;
1279 case MSM_FRONTEND_DAI_VOLTE:
1280 session_id = voc_get_session_id(VOLTE_SESSION_NAME);
1281 break;
1282 case MSM_FRONTEND_DAI_VOWLAN:
1283 session_id = voc_get_session_id(VOWLAN_SESSION_NAME);
1284 break;
1285 case MSM_FRONTEND_DAI_VOICE2:
1286 session_id = voc_get_session_id(VOICE2_SESSION_NAME);
1287 break;
1288 case MSM_FRONTEND_DAI_QCHAT:
1289 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1290 break;
1291 case MSM_FRONTEND_DAI_VOIP:
1292 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1293 break;
1294 case MSM_FRONTEND_DAI_VOICEMMODE1:
1295 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1296 break;
1297 case MSM_FRONTEND_DAI_VOICEMMODE2:
1298 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1299 break;
1300 default:
1301 session_id = 0;
1302 }
1303
1304 pr_debug("%s session_id 0x%x", __func__, session_id);
1305 return session_id;
1306}
1307
1308static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1309 int dspst_id, int stream_type)
1310{
1311 int copp_idx = 0;
1312 int sess_type = 0;
1313 int i = 0, j = 0, be_id;
1314 int ret = 0;
1315
1316 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1317 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1318 return 0;
1319 }
1320
1321 if (!(channel_mixer[fe_id].enable)) {
1322 pr_debug("%s: channel mixer not enabled for FE %d\n",
1323 __func__, fe_id);
1324 return 0;
1325 }
1326
1327 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1328 sess_type = SESSION_TYPE_RX;
1329 else
1330 sess_type = SESSION_TYPE_TX;
1331
1332 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1333 ++i) {
1334 be_id = channel_input[fe_id][i] - 1;
1335 channel_mixer[fe_id].input_channels[i] =
1336 msm_bedais[be_id].channel;
1337
1338 if ((msm_bedais[be_id].active) &&
1339 test_bit(fe_id,
1340 &msm_bedais[be_id].fe_sessions[0])) {
1341 unsigned long copp =
1342 session_copp_map[fe_id][sess_type][be_id];
1343 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1344 if (test_bit(j, &copp)) {
1345 copp_idx = j;
1346 break;
1347 }
1348 }
1349
1350 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1351 __func__,
1352 fe_id, be_id, msm_bedais[be_id].channel,
1353 copp_idx);
1354 ret = adm_programable_channel_mixer(
1355 msm_bedais[be_id].port_id,
1356 copp_idx, dspst_id, sess_type,
1357 channel_mixer + fe_id, i);
1358 }
1359 }
1360
1361 return ret;
1362}
1363
1364int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1365 int dspst_id, int stream_type)
1366{
1367 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1368 struct route_payload payload;
1369 u32 channels, sample_rate;
1370 uint16_t bits_per_sample = 16;
1371 uint32_t passthr_mode = LEGACY_PCM;
1372 int ret = 0;
1373
1374 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1375 /* bad ID assigned in machine driver */
1376 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1377 return -EINVAL;
1378 }
1379
1380 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1381 session_type = SESSION_TYPE_RX;
1382 path_type = ADM_PATH_PLAYBACK;
1383 port_type = MSM_AFE_PORT_TYPE_RX;
1384 } else {
1385 session_type = SESSION_TYPE_TX;
1386 path_type = ADM_PATH_LIVE_REC;
1387 port_type = MSM_AFE_PORT_TYPE_TX;
1388 }
1389
1390 mutex_lock(&routing_lock);
1391
1392 payload.num_copps = 0; /* only RX needs to use payload */
1393 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1394 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1395
1396 /* re-enable EQ if active */
1397 msm_qti_pp_send_eq_values(fedai_id);
1398 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1399 if (!is_be_dai_extproc(i) &&
1400 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1401 (msm_bedais[i].active) &&
1402 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1403 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1404 /*
1405 * check if ADM needs to be configured with different
1406 * channel mapping than backend
1407 */
1408 if (!msm_bedais[i].adm_override_ch)
1409 channels = msm_bedais[i].channel;
1410 else
1411 channels = msm_bedais[i].adm_override_ch;
1412 msm_bedais[i].passthr_mode[fedai_id] =
1413 LEGACY_PCM;
1414
1415 bits_per_sample = msm_routing_get_bit_width(
1416 msm_bedais[i].format);
1417
1418 app_type =
1419 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1420 if (app_type) {
1421 app_type_idx =
1422 msm_pcm_routing_get_app_type_idx(app_type);
1423 sample_rate =
1424 fe_dai_app_type_cfg[fedai_id][session_type][i]
1425 .sample_rate;
1426 bits_per_sample =
1427 app_type_cfg[app_type_idx].bit_width;
1428 } else
1429 sample_rate = msm_bedais[i].sample_rate;
1430
1431 acdb_dev_id =
1432 fe_dai_app_type_cfg[fedai_id][session_type][i]
1433 .acdb_dev_id;
1434 topology = msm_routing_get_adm_topology(fedai_id,
1435 session_type,
1436 i);
1437 copp_idx = adm_open(msm_bedais[i].port_id, path_type,
1438 sample_rate, channels, topology,
1439 perf_mode, bits_per_sample,
1440 app_type, acdb_dev_id);
1441 if ((copp_idx < 0) ||
1442 (copp_idx >= MAX_COPPS_PER_PORT)) {
1443 pr_err("%s: adm open failed copp_idx:%d\n",
1444 __func__, copp_idx);
1445 mutex_unlock(&routing_lock);
1446 return -EINVAL;
1447 }
1448 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1449 __func__, fedai_id, session_type, i);
1450 set_bit(copp_idx,
1451 &session_copp_map[fedai_id][session_type][i]);
1452
1453 if (msm_is_resample_needed(
1454 sample_rate,
1455 msm_bedais[i].sample_rate))
1456 adm_copp_mfc_cfg(
1457 msm_bedais[i].port_id, copp_idx,
1458 msm_bedais[i].sample_rate);
1459
1460 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1461 unsigned long copp =
1462 session_copp_map[fedai_id][session_type][i];
1463 if (test_bit(j, &copp)) {
1464 payload.port_id[num_copps] =
1465 msm_bedais[i].port_id;
1466 payload.copp_idx[num_copps] = j;
1467 payload.app_type[num_copps] =
1468 fe_dai_app_type_cfg
1469 [fedai_id][session_type]
1470 [i].app_type;
1471 payload.acdb_dev_id[num_copps] =
1472 fe_dai_app_type_cfg
1473 [fedai_id][session_type]
1474 [i].acdb_dev_id;
1475 payload.sample_rate[num_copps] =
1476 fe_dai_app_type_cfg
1477 [fedai_id][session_type]
1478 [i].sample_rate;
1479 num_copps++;
1480 }
1481 }
1482 if ((perf_mode == LEGACY_PCM_MODE) &&
1483 (msm_bedais[i].passthr_mode[fedai_id] ==
1484 LEGACY_PCM))
1485 msm_pcm_routing_cfg_pp(msm_bedais[i].port_id,
1486 copp_idx, topology,
1487 channels);
1488 }
1489 }
1490 if (num_copps) {
1491 payload.num_copps = num_copps;
1492 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1493 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1494 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1495 }
1496
1497 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1498 dspst_id, stream_type);
1499 mutex_unlock(&routing_lock);
1500 return ret;
1501}
1502
1503int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1504 int dspst_id, int stream_type,
1505 struct msm_pcm_routing_evt event_info)
1506{
1507 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1508 stream_type)) {
1509 pr_err("%s: failed to reg phy stream\n", __func__);
1510 return -EINVAL;
1511 }
1512
1513 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1514 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1515 else
1516 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1517 return 0;
1518}
1519
1520void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1521{
1522 int i, port_type, session_type, path_type, topology;
1523 struct msm_pcm_routing_fdai_data *fdai;
1524
1525 if (!is_mm_lsm_fe_id(fedai_id)) {
1526 /* bad ID assigned in machine driver */
1527 pr_err("%s: bad MM ID\n", __func__);
1528 return;
1529 }
1530
1531 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1532 port_type = MSM_AFE_PORT_TYPE_RX;
1533 session_type = SESSION_TYPE_RX;
1534 path_type = ADM_PATH_PLAYBACK;
1535 } else {
1536 port_type = MSM_AFE_PORT_TYPE_TX;
1537 session_type = SESSION_TYPE_TX;
1538 path_type = ADM_PATH_LIVE_REC;
1539 }
1540
1541 mutex_lock(&routing_lock);
1542 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1543 if (!is_be_dai_extproc(i) &&
1544 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1545 (msm_bedais[i].active) &&
1546 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1547 int idx;
1548 unsigned long copp =
1549 session_copp_map[fedai_id][session_type][i];
1550 fdai = &fe_dai_map[fedai_id][session_type];
1551
1552 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1553 if (test_bit(idx, &copp))
1554 break;
1555
1556 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1557 pr_debug("%s: copp idx is invalid, exiting\n",
1558 __func__);
1559 continue;
1560 }
1561 topology = adm_get_topology_for_port_copp_idx(
1562 msm_bedais[i].port_id, idx);
1563 adm_close(msm_bedais[i].port_id, fdai->perf_mode, idx);
1564 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1565 __func__, copp, fedai_id, session_type, i);
1566 clear_bit(idx,
1567 &session_copp_map[fedai_id][session_type][i]);
1568 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1569 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1570 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1571 (msm_bedais[i].passthr_mode[fedai_id] ==
1572 LEGACY_PCM))
1573 msm_pcm_routing_deinit_pp(msm_bedais[i].port_id,
1574 topology);
1575 }
1576 }
1577
1578 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1579 fe_dai_map[fedai_id][session_type].be_srate = 0;
1580 mutex_unlock(&routing_lock);
1581}
1582
1583/* Check if FE/BE route is set */
1584static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1585{
1586 bool rc = false;
1587
1588 if (!is_mm_lsm_fe_id(fe_id)) {
1589 /* recheck FE ID in the mixer control defined in this file */
1590 pr_err("%s: bad MM ID\n", __func__);
1591 return rc;
1592 }
1593
1594 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1595 rc = true;
1596
1597 return rc;
1598}
1599
1600static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1601{
1602 int session_type, path_type, topology;
1603 u32 channels, sample_rate;
1604 uint16_t bits_per_sample = 16;
1605 struct msm_pcm_routing_fdai_data *fdai;
1606 uint32_t passthr_mode;
1607 bool is_lsm;
1608
1609 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1610
1611 if (!is_mm_lsm_fe_id(val)) {
1612 /* recheck FE ID in the mixer control defined in this file */
1613 pr_err("%s: bad MM ID\n", __func__);
1614 return;
1615 }
1616
1617 if (!route_check_fe_id_adm_support(val)) {
1618 /* ignore adm open if not supported for fe_id */
1619 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1620 return;
1621 }
1622
1623 passthr_mode = msm_bedais[reg].passthr_mode[val];
1624 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1625 MSM_AFE_PORT_TYPE_RX) {
1626 session_type = SESSION_TYPE_RX;
1627 if (passthr_mode != LEGACY_PCM)
1628 path_type = ADM_PATH_COMPRESSED_RX;
1629 else
1630 path_type = ADM_PATH_PLAYBACK;
1631 } else {
1632 session_type = SESSION_TYPE_TX;
1633 if (passthr_mode != LEGACY_PCM)
1634 path_type = ADM_PATH_COMPRESSED_TX;
1635 else
1636 path_type = ADM_PATH_LIVE_REC;
1637 }
1638 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1639 (val <= MSM_FRONTEND_DAI_LSM8);
1640
1641 mutex_lock(&routing_lock);
1642 if (set) {
1643 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1644 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1645 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1646 voc_start_playback(set, msm_bedais[reg].port_id);
1647
1648 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1649 fdai = &fe_dai_map[val][session_type];
1650 if (msm_bedais[reg].active && fdai->strm_id !=
1651 INVALID_SESSION) {
1652 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1653 /*
1654 * check if ADM needs to be configured with different
1655 * channel mapping than backend
1656 */
1657 if (!msm_bedais[reg].adm_override_ch)
1658 channels = msm_bedais[reg].channel;
1659 else
1660 channels = msm_bedais[reg].adm_override_ch;
1661 if (session_type == SESSION_TYPE_TX &&
1662 fdai->be_srate &&
1663 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1664 pr_debug("%s: flush strm %d diff BE rates\n",
1665 __func__, fdai->strm_id);
1666
1667 if (fdai->event_info.event_func)
1668 fdai->event_info.event_func(
1669 MSM_PCM_RT_EVT_BUF_RECFG,
1670 fdai->event_info.priv_data);
1671 fdai->be_srate = 0; /* might not need it */
1672 }
1673
1674 bits_per_sample = msm_routing_get_bit_width(
1675 msm_bedais[reg].format);
1676
1677 app_type =
1678 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1679 if (app_type && is_lsm) {
1680 app_type_idx =
1681 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1682 sample_rate =
1683 fe_dai_app_type_cfg[val][session_type][reg]
1684 .sample_rate;
1685 bits_per_sample =
1686 lsm_app_type_cfg[app_type_idx].bit_width;
1687 } else if (app_type) {
1688 app_type_idx =
1689 msm_pcm_routing_get_app_type_idx(app_type);
1690 sample_rate =
1691 fe_dai_app_type_cfg[val][session_type][reg]
1692 .sample_rate;
1693 bits_per_sample =
1694 app_type_cfg[app_type_idx].bit_width;
1695 } else
1696 sample_rate = msm_bedais[reg].sample_rate;
1697
1698 topology = msm_routing_get_adm_topology(val,
1699 session_type,
1700 reg);
1701 acdb_dev_id =
1702 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
1703 copp_idx = adm_open(msm_bedais[reg].port_id, path_type,
1704 sample_rate, channels, topology,
1705 fdai->perf_mode, bits_per_sample,
1706 app_type, acdb_dev_id);
1707 if ((copp_idx < 0) ||
1708 (copp_idx >= MAX_COPPS_PER_PORT)) {
1709 pr_err("%s: adm open failed\n", __func__);
1710 mutex_unlock(&routing_lock);
1711 return;
1712 }
1713 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1714 __func__, val, session_type, reg);
1715 set_bit(copp_idx,
1716 &session_copp_map[val][session_type][reg]);
1717
1718 if (msm_is_resample_needed(
1719 sample_rate,
1720 msm_bedais[reg].sample_rate))
1721 adm_copp_mfc_cfg(
1722 msm_bedais[reg].port_id, copp_idx,
1723 msm_bedais[reg].sample_rate);
1724
1725 if (session_type == SESSION_TYPE_RX &&
1726 fdai->event_info.event_func)
1727 fdai->event_info.event_func(
1728 MSM_PCM_RT_EVT_DEVSWITCH,
1729 fdai->event_info.priv_data);
1730
1731 msm_pcm_routing_build_matrix(val, session_type,
1732 path_type,
1733 fdai->perf_mode,
1734 passthr_mode);
1735 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1736 (passthr_mode == LEGACY_PCM))
1737 msm_pcm_routing_cfg_pp(msm_bedais[reg].port_id,
1738 copp_idx, topology,
1739 channels);
1740 }
1741 } else {
1742 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1743 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1744 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1745 voc_start_playback(set, msm_bedais[reg].port_id);
1746 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1747 fdai = &fe_dai_map[val][session_type];
1748 if (msm_bedais[reg].active && fdai->strm_id !=
1749 INVALID_SESSION) {
1750 int idx;
1751 int port_id;
1752 unsigned long copp =
1753 session_copp_map[val][session_type][reg];
1754 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1755 if (test_bit(idx, &copp))
1756 break;
1757
1758 port_id = msm_bedais[reg].port_id;
1759 topology = adm_get_topology_for_port_copp_idx(port_id,
1760 idx);
1761 adm_close(msm_bedais[reg].port_id, fdai->perf_mode,
1762 idx);
1763 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1764 __func__, copp, val, session_type, reg,
1765 topology);
1766 clear_bit(idx,
1767 &session_copp_map[val][session_type][reg]);
1768 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1769 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1770 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1771 (passthr_mode == LEGACY_PCM))
1772 msm_pcm_routing_deinit_pp(
1773 msm_bedais[reg].port_id,
1774 topology);
1775 msm_pcm_routing_build_matrix(val, session_type,
1776 path_type,
1777 fdai->perf_mode,
1778 passthr_mode);
1779 }
1780 }
1781 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1782 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1783 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1784
1785 mutex_unlock(&routing_lock);
1786}
1787
1788static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1789 struct snd_ctl_elem_value *ucontrol)
1790{
1791 struct soc_mixer_control *mc =
1792 (struct soc_mixer_control *)kcontrol->private_value;
1793
1794 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1795 ucontrol->value.integer.value[0] = 1;
1796 else
1797 ucontrol->value.integer.value[0] = 0;
1798
1799 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1800 ucontrol->value.integer.value[0]);
1801
1802 return 0;
1803}
1804
1805static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1806 struct snd_ctl_elem_value *ucontrol)
1807{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301808 struct snd_soc_dapm_widget *widget =
1809 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301810 struct soc_mixer_control *mc =
1811 (struct soc_mixer_control *)kcontrol->private_value;
1812 struct snd_soc_dapm_update *update = NULL;
1813
1814 if (ucontrol->value.integer.value[0] &&
1815 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1816 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1817 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1818 update);
1819 } else if (!ucontrol->value.integer.value[0] &&
1820 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1821 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1822 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1823 update);
1824 }
1825
1826 return 1;
1827}
1828
1829static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1830 struct snd_ctl_elem_value *ucontrol)
1831{
1832 struct soc_mixer_control *mc =
1833 (struct soc_mixer_control *)kcontrol->private_value;
1834
1835 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1836 ucontrol->value.integer.value[0] = 1;
1837 else
1838 ucontrol->value.integer.value[0] = 0;
1839
1840 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1841 ucontrol->value.integer.value[0]);
1842
1843 return 0;
1844}
1845
1846static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1847 struct snd_ctl_elem_value *ucontrol)
1848{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301849 struct snd_soc_dapm_widget *widget =
1850 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301851 struct soc_mixer_control *mc =
1852 (struct soc_mixer_control *)kcontrol->private_value;
1853 struct snd_soc_dapm_update *update = NULL;
1854
1855 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1856 ucontrol->value.integer.value[0]);
1857
1858 if (ucontrol->value.integer.value[0]) {
1859 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1860 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1861 snd_soc_dapm_mixer_update_power(widget->dapm,
1862 kcontrol, 1, update);
1863 } else if (!ucontrol->value.integer.value[0]) {
1864 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1865 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1866 snd_soc_dapm_mixer_update_power(widget->dapm,
1867 kcontrol, 0, update);
1868 }
1869
1870 return 1;
1871}
1872
1873static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1874{
1875 u32 session_id = 0;
1876 u16 path_type;
1877 struct media_format_info voc_be_media_format;
1878
1879 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1880
1881 session_id = msm_pcm_routing_get_voc_sessionid(val);
1882
1883 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1884 __func__, val, session_id);
1885
1886 mutex_lock(&routing_lock);
1887
1888 if (set)
1889 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1890 else
1891 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1892
1893 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1894 afe_get_port_type(msm_bedais[reg].port_id) ==
1895 MSM_AFE_PORT_TYPE_RX) {
1896 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1897 __func__, set, msm_bedais[reg].port_id);
1898 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1899 }
1900
1901 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1902 MSM_AFE_PORT_TYPE_RX)
1903 path_type = RX_PATH;
1904 else
1905 path_type = TX_PATH;
1906
1907 if (set) {
1908 if (msm_bedais[reg].active) {
1909 voc_set_route_flag(session_id, path_type, 1);
1910
1911 memset(&voc_be_media_format, 0,
1912 sizeof(struct media_format_info));
1913
1914 voc_be_media_format.port_id = msm_bedais[reg].port_id;
1915 voc_be_media_format.num_channels =
1916 msm_bedais[reg].channel;
1917 voc_be_media_format.sample_rate =
1918 msm_bedais[reg].sample_rate;
1919 voc_be_media_format.bits_per_sample =
1920 msm_bedais[reg].format;
1921 /* Defaulting this to 1 for voice call usecases */
1922 voc_be_media_format.channel_mapping[0] = 1;
1923
1924 voc_set_device_config(session_id, path_type,
1925 &voc_be_media_format);
1926
1927 if (voc_get_route_flag(session_id, TX_PATH) &&
1928 voc_get_route_flag(session_id, RX_PATH))
1929 voc_enable_device(session_id);
1930 } else {
1931 pr_debug("%s BE is not active\n", __func__);
1932 }
1933 } else {
1934 voc_set_route_flag(session_id, path_type, 0);
1935 voc_disable_device(session_id);
1936 }
1937
1938 mutex_unlock(&routing_lock);
1939
1940}
1941
1942static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
1943 struct snd_ctl_elem_value *ucontrol)
1944{
1945 struct soc_mixer_control *mc =
1946 (struct soc_mixer_control *)kcontrol->private_value;
1947
1948 mutex_lock(&routing_lock);
1949
1950 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1951 ucontrol->value.integer.value[0] = 1;
1952 else
1953 ucontrol->value.integer.value[0] = 0;
1954
1955 mutex_unlock(&routing_lock);
1956
1957 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1958 ucontrol->value.integer.value[0]);
1959
1960 return 0;
1961}
1962
1963static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
1964 struct snd_ctl_elem_value *ucontrol)
1965{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301966 struct snd_soc_dapm_widget *widget =
1967 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301968 struct soc_mixer_control *mc =
1969 (struct soc_mixer_control *)kcontrol->private_value;
1970 struct snd_soc_dapm_update *update = NULL;
1971
1972 if (ucontrol->value.integer.value[0]) {
1973 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
1974 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1975 update);
1976 } else {
1977 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
1978 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1979 update);
1980 }
1981
1982 return 1;
1983}
1984
1985static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1986 struct snd_ctl_elem_value *ucontrol)
1987{
1988 struct soc_mixer_control *mc =
1989 (struct soc_mixer_control *)kcontrol->private_value;
1990
1991 mutex_lock(&routing_lock);
1992
1993 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1994 ucontrol->value.integer.value[0] = 1;
1995 else
1996 ucontrol->value.integer.value[0] = 0;
1997
1998 mutex_unlock(&routing_lock);
1999
2000 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2001 ucontrol->value.integer.value[0]);
2002
2003 return 0;
2004}
2005
2006static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
2007 struct snd_ctl_elem_value *ucontrol)
2008{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302009 struct snd_soc_dapm_widget *widget =
2010 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302011 struct soc_mixer_control *mc =
2012 (struct soc_mixer_control *)kcontrol->private_value;
2013 struct snd_soc_dapm_update *update = NULL;
2014
2015 if (ucontrol->value.integer.value[0]) {
2016 mutex_lock(&routing_lock);
2017 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2018 mutex_unlock(&routing_lock);
2019
2020 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2021 update);
2022 } else {
2023 mutex_lock(&routing_lock);
2024 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2025 mutex_unlock(&routing_lock);
2026
2027 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2028 update);
2029 }
2030
2031 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2032 ucontrol->value.integer.value[0]);
2033
2034 return 1;
2035}
2036
2037/*
2038 * Return the mapping between port ID and backend ID to enable the AFE callback
2039 * to determine the acdb_dev_id from the port id
2040 */
2041int msm_pcm_get_be_id_from_port_id(int port_id)
2042{
2043 int i;
2044 int be_id = -EINVAL;
2045
2046 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2047 if (msm_bedais[i].port_id == port_id) {
2048 be_id = i;
2049 break;
2050 }
2051 }
2052
2053 return be_id;
2054}
2055
2056/*
2057 * Return the registered dev_acdb_id given a port ID to enable identifying the
2058 * correct AFE calibration information by comparing the header information.
2059 */
2060static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2061{
2062 int acdb_id = -EINVAL;
2063 int i = 0;
2064 int session;
2065 int port_type = afe_get_port_type(port_id);
2066 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2067
2068 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2069 __func__, port_id, be_id, port_type);
2070
2071 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2072 session = SESSION_TYPE_TX;
2073 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2074 session = SESSION_TYPE_RX;
2075 } else {
2076 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2077 acdb_id = -EINVAL;
2078 goto exit;
2079 }
2080
2081 if (be_id < 0) {
2082 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2083 goto exit;
2084 }
2085
2086 mutex_lock(&routing_lock);
2087 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2088 MSM_FRONTEND_DAI_MAX);
2089 if (i < MSM_FRONTEND_DAI_MAX)
2090 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2091
2092 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2093 __func__, i, session, be_id, acdb_id);
2094 mutex_unlock(&routing_lock);
2095exit:
2096 return acdb_id;
2097}
2098
2099static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2100 struct snd_ctl_elem_value *ucontrol)
2101{
2102 ucontrol->value.integer.value[0] = fm_switch_enable;
2103 pr_debug("%s: FM Switch enable %ld\n", __func__,
2104 ucontrol->value.integer.value[0]);
2105 return 0;
2106}
2107
2108static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2109 struct snd_ctl_elem_value *ucontrol)
2110{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302111 struct snd_soc_dapm_widget *widget =
2112 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302113 struct snd_soc_dapm_update *update = NULL;
2114
2115 pr_debug("%s: FM Switch enable %ld\n", __func__,
2116 ucontrol->value.integer.value[0]);
2117 if (ucontrol->value.integer.value[0])
2118 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2119 update);
2120 else
2121 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2122 update);
2123 fm_switch_enable = ucontrol->value.integer.value[0];
2124 return 1;
2125}
2126
2127static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2128 struct snd_ctl_elem_value *ucontrol)
2129{
2130 ucontrol->value.integer.value[0] = hfp_switch_enable;
2131 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2132 ucontrol->value.integer.value[0]);
2133 return 0;
2134}
2135
2136static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2137 struct snd_ctl_elem_value *ucontrol)
2138{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302139 struct snd_soc_dapm_widget *widget =
2140 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302141 struct snd_soc_dapm_update *update = NULL;
2142
2143 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2144 ucontrol->value.integer.value[0]);
2145 if (ucontrol->value.integer.value[0])
2146 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2147 1, update);
2148 else
2149 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2150 0, update);
2151 hfp_switch_enable = ucontrol->value.integer.value[0];
2152 return 1;
2153}
2154
2155static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2156 struct snd_ctl_elem_value *ucontrol)
2157{
2158 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2159 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2160 ucontrol->value.integer.value[0]);
2161 return 0;
2162}
2163
2164static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2165 struct snd_ctl_elem_value *ucontrol)
2166{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302167 struct snd_soc_dapm_widget *widget =
2168 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302169 struct snd_soc_dapm_update *update = NULL;
2170
2171 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2172 ucontrol->value.integer.value[0]);
2173 if (ucontrol->value.integer.value[0])
2174 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2175 update);
2176 else
2177 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2178 update);
2179 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2180 return 1;
2181}
2182
2183static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2184 struct snd_ctl_elem_value *ucontrol)
2185{
2186 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2187 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2188 ucontrol->value.integer.value[0]);
2189 return 0;
2190}
2191
2192static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2193 struct snd_ctl_elem_value *ucontrol)
2194{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302195 struct snd_soc_dapm_widget *widget =
2196 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302197 struct snd_soc_dapm_update *update = NULL;
2198
2199 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2200 ucontrol->value.integer.value[0]);
2201 if (ucontrol->value.integer.value[0])
2202 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2203 update);
2204 else
2205 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2206 update);
2207 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2208 return 1;
2209}
2210
2211static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2212 struct snd_ctl_elem_value *ucontrol)
2213{
2214 ucontrol->value.integer.value[0] = usb_switch_enable;
2215 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2216 ucontrol->value.integer.value[0]);
2217 return 0;
2218}
2219
2220static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2221 struct snd_ctl_elem_value *ucontrol)
2222{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302223 struct snd_soc_dapm_widget *widget =
2224 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302225 struct snd_soc_dapm_update *update = NULL;
2226
2227 pr_debug("%s: USB Switch enable %ld\n", __func__,
2228 ucontrol->value.integer.value[0]);
2229 if (ucontrol->value.integer.value[0])
2230 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2231 1, update);
2232 else
2233 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2234 0, update);
2235 usb_switch_enable = ucontrol->value.integer.value[0];
2236 return 1;
2237}
2238
2239static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2240 struct snd_ctl_elem_value *ucontrol)
2241{
2242 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2243 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2244 ucontrol->value.integer.value[0]);
2245 return 0;
2246}
2247
2248static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2249 struct snd_ctl_elem_value *ucontrol)
2250{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302251 struct snd_soc_dapm_widget *widget =
2252 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302253 struct snd_soc_dapm_update *update = NULL;
2254
2255 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2256 ucontrol->value.integer.value[0]);
2257 if (ucontrol->value.integer.value[0])
2258 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2259 update);
2260 else
2261 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2262 update);
2263 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2264 return 1;
2265}
2266
2267static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2268 struct snd_ctl_elem_value *ucontrol)
2269{
2270 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2271 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2272 ucontrol->value.integer.value[0]);
2273 return 0;
2274}
2275
2276static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2277 struct snd_ctl_elem_value *ucontrol)
2278{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302279 struct snd_soc_dapm_widget *widget =
2280 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302281 struct snd_soc_dapm_update *update = NULL;
2282
2283 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2284 ucontrol->value.integer.value[0]);
2285 if (ucontrol->value.integer.value[0])
2286 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2287 update);
2288 else
2289 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2290 update);
2291 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2292 return 1;
2293}
2294
2295static int msm_routing_get_tert_mi2s_switch_mixer(
2296 struct snd_kcontrol *kcontrol,
2297 struct snd_ctl_elem_value *ucontrol)
2298{
2299 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2300 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2301 ucontrol->value.integer.value[0]);
2302 return 0;
2303}
2304
2305static int msm_routing_put_tert_mi2s_switch_mixer(
2306 struct snd_kcontrol *kcontrol,
2307 struct snd_ctl_elem_value *ucontrol)
2308{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302309 struct snd_soc_dapm_widget *widget =
2310 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302311 struct snd_soc_dapm_update *update = NULL;
2312
2313 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2314 ucontrol->value.integer.value[0]);
2315 if (ucontrol->value.integer.value[0])
2316 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2317 update);
2318 else
2319 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2320 update);
2321 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2322 return 1;
2323}
2324
2325static int msm_routing_get_quat_mi2s_switch_mixer(
2326 struct snd_kcontrol *kcontrol,
2327 struct snd_ctl_elem_value *ucontrol)
2328{
2329 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2330 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2331 ucontrol->value.integer.value[0]);
2332 return 0;
2333}
2334
2335static int msm_routing_put_quat_mi2s_switch_mixer(
2336 struct snd_kcontrol *kcontrol,
2337 struct snd_ctl_elem_value *ucontrol)
2338{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302339 struct snd_soc_dapm_widget *widget =
2340 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302341 struct snd_soc_dapm_update *update = NULL;
2342
2343 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2344 ucontrol->value.integer.value[0]);
2345 if (ucontrol->value.integer.value[0])
2346 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2347 update);
2348 else
2349 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2350 update);
2351 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2352 return 1;
2353}
2354
Rohit Kumara5077932017-09-10 22:05:05 +05302355static int msm_routing_get_quin_mi2s_switch_mixer(
2356 struct snd_kcontrol *kcontrol,
2357 struct snd_ctl_elem_value *ucontrol)
2358{
2359 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2360 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2361 ucontrol->value.integer.value[0]);
2362 return 0;
2363}
2364
2365static int msm_routing_put_quin_mi2s_switch_mixer(
2366 struct snd_kcontrol *kcontrol,
2367 struct snd_ctl_elem_value *ucontrol)
2368{
2369 struct snd_soc_dapm_widget *widget =
2370 snd_soc_dapm_kcontrol_widget(kcontrol);
2371 struct snd_soc_dapm_update *update = NULL;
2372
2373 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2374 ucontrol->value.integer.value[0]);
2375 if (ucontrol->value.integer.value[0])
2376 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2377 update);
2378 else
2379 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2380 update);
2381 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2382 return 1;
2383}
2384
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302385static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2386 struct snd_ctl_elem_value *ucontrol)
2387{
2388 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2389 pr_debug("%s: FM Switch enable %ld\n", __func__,
2390 ucontrol->value.integer.value[0]);
2391 return 0;
2392}
2393
2394static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2395 struct snd_ctl_elem_value *ucontrol)
2396{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302397 struct snd_soc_dapm_widget *widget =
2398 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302399 struct snd_soc_dapm_update *update = NULL;
2400
2401 pr_debug("%s: FM Switch enable %ld\n", __func__,
2402 ucontrol->value.integer.value[0]);
2403 if (ucontrol->value.integer.value[0])
2404 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2405 update);
2406 else
2407 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2408 update);
2409 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2410 return 1;
2411}
2412
2413static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2414 struct snd_ctl_elem_value *ucontrol)
2415{
2416 ucontrol->value.integer.value[0] = lsm_port_index;
2417 return 0;
2418}
2419
2420static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2421 struct snd_ctl_elem_value *ucontrol)
2422{
2423 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2424 int mux = ucontrol->value.enumerated.item[0];
2425 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2426
2427 if (mux >= e->items) {
2428 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2429 return -EINVAL;
2430 }
2431
2432 pr_debug("%s: LSM enable %ld\n", __func__,
2433 ucontrol->value.integer.value[0]);
2434 switch (ucontrol->value.integer.value[0]) {
2435 case 1:
2436 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2437 break;
2438 case 2:
2439 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2440 break;
2441 case 3:
2442 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2443 break;
2444 case 4:
2445 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2446 break;
2447 case 5:
2448 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2449 break;
2450 case 6:
2451 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2452 break;
2453 case 7:
2454 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2455 break;
2456 case 8:
2457 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2458 break;
2459 case 9:
2460 lsm_port = ADM_LSM_PORT_ID;
2461 break;
2462 case 10:
2463 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
2464 break;
2465 default:
2466 pr_err("Default lsm port");
2467 break;
2468 }
2469 set_lsm_port(lsm_port);
2470 lsm_port_index = ucontrol->value.integer.value[0];
2471
2472 return 0;
2473}
2474
2475static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2476 struct snd_ctl_elem_value *ucontrol)
2477{
2478 int i;
2479 u16 port_id;
2480 enum afe_mad_type mad_type;
2481
2482 pr_debug("%s: enter\n", __func__);
2483 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2484 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2485 strlen(lsm_port_text[i])))
2486 break;
2487
2488 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2489 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2490 return -EINVAL;
2491 }
2492
2493 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2494
2495 /*Check for Tertiary/Quaternary/INT3 TX port*/
2496 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2497 strlen(lsm_port_text[7])))
2498 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2499
2500 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2501 strlen(lsm_port_text[8])))
2502 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2503
2504 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2505 strlen(lsm_port_text[10])))
2506 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2507
2508 mad_type = afe_port_get_mad_type(port_id);
2509 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2510 mad_type);
2511 switch (mad_type) {
2512 case MAD_HW_NONE:
2513 ucontrol->value.integer.value[0] = MADNONE;
2514 break;
2515 case MAD_HW_AUDIO:
2516 ucontrol->value.integer.value[0] = MADAUDIO;
2517 break;
2518 case MAD_HW_BEACON:
2519 ucontrol->value.integer.value[0] = MADBEACON;
2520 break;
2521 case MAD_HW_ULTRASOUND:
2522 ucontrol->value.integer.value[0] = MADULTRASOUND;
2523 break;
2524 case MAD_SW_AUDIO:
2525 ucontrol->value.integer.value[0] = MADSWAUDIO;
2526 break;
2527 default:
2528 WARN(1, "Unknown\n");
2529 return -EINVAL;
2530 }
2531 return 0;
2532}
2533
2534static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2535 struct snd_ctl_elem_value *ucontrol)
2536{
2537 int i;
2538 u16 port_id;
2539 enum afe_mad_type mad_type;
2540
2541 pr_debug("%s: enter\n", __func__);
2542 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2543 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2544 strlen(lsm_port_text[i])))
2545 break;
2546
2547 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2548 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2549 return -EINVAL;
2550 }
2551
2552 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2553 switch (ucontrol->value.integer.value[0]) {
2554 case MADNONE:
2555 mad_type = MAD_HW_NONE;
2556 break;
2557 case MADAUDIO:
2558 mad_type = MAD_HW_AUDIO;
2559 break;
2560 case MADBEACON:
2561 mad_type = MAD_HW_BEACON;
2562 break;
2563 case MADULTRASOUND:
2564 mad_type = MAD_HW_ULTRASOUND;
2565 break;
2566 case MADSWAUDIO:
2567 mad_type = MAD_SW_AUDIO;
2568 break;
2569 default:
2570 WARN(1, "Unknown\n");
2571 return -EINVAL;
2572 }
2573
2574 /*Check for Tertiary/Quaternary/INT3 TX port*/
2575 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2576 strlen(lsm_port_text[7])))
2577 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2578
2579 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2580 strlen(lsm_port_text[8])))
2581 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2582
2583 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2584 strlen(lsm_port_text[10])))
2585 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2586
2587 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2588 mad_type);
2589 return afe_port_set_mad_type(port_id, mad_type);
2590}
2591
2592static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2593
2594static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2595 adm_override_chs_text);
2596
2597static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2598{
2599 int backend_id;
2600
2601 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2602 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2603 } else {
2604 pr_err("%s: unsupported backend id: %s",
2605 __func__, kcontrol->id.name);
2606 return -EINVAL;
2607 }
2608
2609 return backend_id;
2610}
2611static int msm_routing_adm_channel_config_get(
2612 struct snd_kcontrol *kcontrol,
2613 struct snd_ctl_elem_value *ucontrol)
2614{
2615 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2616
2617 if (backend_id >= 0) {
2618 mutex_lock(&routing_lock);
2619 ucontrol->value.integer.value[0] =
2620 msm_bedais[backend_id].adm_override_ch;
2621 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2622 ucontrol->value.integer.value[0], backend_id);
2623 mutex_unlock(&routing_lock);
2624 }
2625
2626 return 0;
2627}
2628
2629static int msm_routing_adm_channel_config_put(
2630 struct snd_kcontrol *kcontrol,
2631 struct snd_ctl_elem_value *ucontrol)
2632{
2633 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2634
2635 if (backend_id >= 0) {
2636 mutex_lock(&routing_lock);
2637 msm_bedais[backend_id].adm_override_ch =
2638 ucontrol->value.integer.value[0];
2639 pr_debug("%s:updating BE :%d adm channels: %d\n",
2640 __func__, backend_id,
2641 msm_bedais[backend_id].adm_override_ch);
2642 mutex_unlock(&routing_lock);
2643 }
2644
2645 return 0;
2646}
2647
2648static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2649 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2650 msm_routing_adm_channel_config_get,
2651 msm_routing_adm_channel_config_put),
2652};
2653
2654static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2655 struct snd_ctl_elem_value *ucontrol)
2656{
2657
2658 mutex_lock(&routing_lock);
2659 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2660 mutex_unlock(&routing_lock);
2661 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2662 ucontrol->value.integer.value[0]);
2663 return 0;
2664};
2665
2666static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2667 struct snd_ctl_elem_value *ucontrol)
2668{
2669 struct aanc_data aanc_info;
2670
2671 mutex_lock(&routing_lock);
2672 memset(&aanc_info, 0x00, sizeof(aanc_info));
2673 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2674 ucontrol->value.integer.value[0]);
2675 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2676 if (ucontrol->value.integer.value[0] == 0) {
2677 aanc_info.aanc_active = false;
2678 aanc_info.aanc_tx_port = 0;
2679 aanc_info.aanc_rx_port = 0;
2680 } else {
2681 aanc_info.aanc_active = true;
2682 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2683 aanc_info.aanc_tx_port =
2684 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2685 }
2686 afe_set_aanc_info(&aanc_info);
2687 mutex_unlock(&routing_lock);
2688 return 0;
2689};
2690static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2691 struct snd_ctl_elem_value *ucontrol)
2692{
2693 int idx = 0, shift = 0;
2694 struct soc_mixer_control *mc =
2695 (struct soc_mixer_control *)kcontrol->private_value;
2696
2697 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2698 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2699
2700 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2701 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2702 return -EINVAL;
2703 }
2704
2705 if (test_bit(shift,
2706 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2707 ucontrol->value.integer.value[0] = 1;
2708 else
2709 ucontrol->value.integer.value[0] = 0;
2710
2711 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2712 ucontrol->value.integer.value[0]);
2713
2714 return 0;
2715}
2716
2717static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2718 struct snd_ctl_elem_value *ucontrol)
2719{
2720 int idx = 0, shift = 0;
2721 struct soc_mixer_control *mc =
2722 (struct soc_mixer_control *)kcontrol->private_value;
2723
2724 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2725 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2726
2727 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2728 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2729 return -EINVAL;
2730 }
2731
2732 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2733 __func__, mc->reg, mc->shift,
2734 ucontrol->value.integer.value[0], idx, shift);
2735
2736 if (ucontrol->value.integer.value[0]) {
2737 afe_loopback(1, msm_bedais[mc->reg].port_id,
2738 msm_bedais[mc->shift].port_id);
2739 set_bit(shift,
2740 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2741 } else {
2742 afe_loopback(0, msm_bedais[mc->reg].port_id,
2743 msm_bedais[mc->shift].port_id);
2744 clear_bit(shift,
2745 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2746 }
2747
2748 return 1;
2749}
2750
2751static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2752 struct snd_ctl_elem_value *ucontrol)
2753{
2754 u16 fe_id = 0;
2755
2756 fe_id = ((struct soc_mixer_control *)
2757 kcontrol->private_value)->shift;
2758 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2759 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2760 return -EINVAL;
2761 }
2762
2763 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2764
2765 return 0;
2766}
2767
2768static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2769 struct snd_ctl_elem_value *ucontrol)
2770{
2771 u16 fe_id = 0;
2772
2773 fe_id = ((struct soc_mixer_control *)
2774 kcontrol->private_value)->shift;
2775 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2776 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2777 return -EINVAL;
2778 }
2779
2780 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2781
2782 return 1;
2783}
2784
2785static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2786 struct snd_ctl_elem_value *ucontrol)
2787{
2788 u16 fe_id = 0;
2789
2790 fe_id = ((struct soc_multi_mixer_control *)
2791 kcontrol->private_value)->shift;
2792 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2793 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2794 return -EINVAL;
2795 }
2796
2797 ucontrol->value.integer.value[0] =
2798 channel_mixer[fe_id].output_channel;
2799 return 0;
2800}
2801
2802static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2803 struct snd_ctl_elem_value *ucontrol)
2804{
2805 u16 fe_id = 0;
2806
2807 fe_id = ((struct soc_multi_mixer_control *)
2808 kcontrol->private_value)->shift;
2809 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2810 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2811 return -EINVAL;
2812 }
2813
2814 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2815 fe_id,
2816 (unsigned int)(ucontrol->value.integer.value[0]));
2817 channel_mixer[fe_id].output_channel =
2818 (unsigned int)(ucontrol->value.integer.value[0]);
2819
2820 return 1;
2821}
2822
2823static const char *const ch_mixer[] = {"Disable", "Enable"};
2824
2825/* If new backend is added, need update this array */
2826static const char *const be_name[] = {
2827"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2828"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2829"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2830"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2831"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2832"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2833"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2834"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2835"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2836"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2837"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2838"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2839"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2840"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2841"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2842"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2843"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2844"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2845"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2846"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2847"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2848"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2849"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2850"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2851"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2852"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2853"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2854"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2855"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2856"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302857"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2858"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2859"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2860"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302861"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2862"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302863"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302864"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2865"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2866"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2867"INT6_MI2S_RX", "INT6_MI2S_TX"
2868};
2869
2870static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2871 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2872static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2873 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2874static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2875 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2876static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2877 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2878
2879static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
2880 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
2881static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
2882 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
2883static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
2884 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
2885static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
2886 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
2887static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
2888 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
2889static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
2890 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
2891static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
2892 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
2893static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
2894 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
2895
2896static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
2897 unsigned int channels,
2898 unsigned int items, const char *const names[])
2899{
2900 if (uinfo->value.enumerated.item >= items)
2901 uinfo->value.enumerated.item = items - 1;
2902
2903 WARN(strlen(names[uinfo->value.enumerated.item]) >=
2904 sizeof(uinfo->value.enumerated.name),
2905 "ALSA: too long item name '%s'\n",
2906 names[uinfo->value.enumerated.item]);
2907 strlcpy(uinfo->value.enumerated.name,
2908 names[uinfo->value.enumerated.item],
2909 sizeof(uinfo->value.enumerated.name));
2910 return 0;
2911}
2912
2913static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
2914 struct snd_ctl_elem_info *uinfo)
2915{
2916 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2917
2918 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2919 uinfo->count = 1;
2920
2921 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
2922 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2923
2924 return 0;
2925}
2926static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
2927 struct snd_ctl_elem_value *ucontrol)
2928{
2929 u16 fe_id = 0;
2930
2931 fe_id = ((struct soc_enum *)
2932 kcontrol->private_value)->shift_l;
2933 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2934 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2935 return -EINVAL;
2936 }
2937
2938 pr_debug("%s: FE %d %s\n", __func__,
2939 fe_id,
2940 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
2941 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
2942 return 0;
2943}
2944
2945static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
2946 struct snd_ctl_elem_value *ucontrol)
2947{
2948 u16 fe_id = 0;
2949
2950 fe_id = ((struct soc_enum *)
2951 kcontrol->private_value)->shift_l;
2952 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2953 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2954 return -EINVAL;
2955 }
2956
2957 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
2958 pr_debug("%s: %s FE %d\n", __func__,
2959 channel_mixer[fe_id].enable ? "Enable" : "Disable",
2960 fe_id);
2961 return 0;
2962}
2963
2964static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
2965 struct snd_ctl_elem_info *uinfo)
2966{
2967 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2968
2969 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2970 uinfo->count = 1;
2971
2972 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
2973 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2974
2975 return 0;
2976}
2977
2978static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
2979 struct snd_ctl_elem_value *ucontrol)
2980{
2981 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2982 u16 fe_id = 0, in_ch = 0;
2983
2984 fe_id = e->shift_l;
2985 in_ch = e->shift_r;
2986 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2987 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2988 return -EINVAL;
2989 }
2990 if (in_ch >= ADM_MAX_CHANNELS) {
2991 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
2992 return -EINVAL;
2993 }
2994
2995 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
2996 return 1;
2997}
2998
2999static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
3000 struct snd_ctl_elem_value *ucontrol)
3001{
3002 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3003 u16 fe_id = 0, in_ch = 0;
3004
3005 fe_id = e->shift_l;
3006 in_ch = e->shift_r;
3007 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3008 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3009 return -EINVAL;
3010 }
3011 if (in_ch >= ADM_MAX_CHANNELS) {
3012 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3013 return -EINVAL;
3014 }
3015
3016 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
3017 return 1;
3018}
3019
3020
3021static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
3022 struct snd_ctl_elem_info *uinfo)
3023{
3024 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3025 uinfo->count = ADM_MAX_CHANNELS;
3026 uinfo->value.integer.min = 0;
3027 uinfo->value.integer.max = WEIGHT_0_DB;
3028
3029 return 0;
3030}
3031
3032static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3033 struct snd_ctl_elem_value *ucontrol)
3034{
3035 u16 fe_id = 0, out_ch = 0;
3036 int i, weight;
3037
3038 fe_id = ((struct soc_multi_mixer_control *)
3039 kcontrol->private_value)->shift;
3040 out_ch = ((struct soc_multi_mixer_control *)
3041 kcontrol->private_value)->rshift;
3042 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3043 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3044 return -EINVAL;
3045 }
3046 if (out_ch >= ADM_MAX_CHANNELS) {
3047 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3048 return -EINVAL;
3049 }
3050
3051 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3052 __func__, fe_id,
3053 ucontrol->value.integer.value[0],
3054 ucontrol->value.integer.value[1],
3055 ucontrol->value.integer.value[2],
3056 ucontrol->value.integer.value[3],
3057 ucontrol->value.integer.value[4],
3058 ucontrol->value.integer.value[5],
3059 ucontrol->value.integer.value[6],
3060 ucontrol->value.integer.value[7]);
3061
3062 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3063 weight = ucontrol->value.integer.value[i];
3064 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3065 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3066 __func__, fe_id, out_ch, i,
3067 channel_mixer[fe_id].channel_weight[out_ch][i]);
3068 }
3069
3070 return 0;
3071}
3072
3073static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3074 struct snd_ctl_elem_value *ucontrol)
3075{
3076 u16 fe_id = 0, out_ch = 0;
3077 int i;
3078
3079 fe_id = ((struct soc_multi_mixer_control *)
3080 kcontrol->private_value)->shift;
3081 out_ch = ((struct soc_multi_mixer_control *)
3082 kcontrol->private_value)->rshift;
3083 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3084 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3085 return -EINVAL;
3086 }
3087 if (out_ch >= ADM_MAX_CHANNELS) {
3088 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3089 return -EINVAL;
3090 }
3091
3092 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3093 ucontrol->value.integer.value[i] =
3094 channel_mixer[fe_id].channel_weight[out_ch][i];
3095
3096 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3097 __func__, fe_id,
3098 ucontrol->value.integer.value[0],
3099 ucontrol->value.integer.value[1],
3100 ucontrol->value.integer.value[2],
3101 ucontrol->value.integer.value[3],
3102 ucontrol->value.integer.value[4],
3103 ucontrol->value.integer.value[5],
3104 ucontrol->value.integer.value[6],
3105 ucontrol->value.integer.value[7]);
3106
3107 return 0;
3108}
3109
3110static const struct snd_kcontrol_new channel_mixer_controls[] = {
3111 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3112 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3113 msm_pcm_get_channel_rule_index,
3114 msm_pcm_put_channel_rule_index),
3115 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3116 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3117 msm_pcm_get_channel_rule_index,
3118 msm_pcm_put_channel_rule_index),
3119 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3120 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3121 msm_pcm_get_channel_rule_index,
3122 msm_pcm_put_channel_rule_index),
3123 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3124 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3125 msm_pcm_get_channel_rule_index,
3126 msm_pcm_put_channel_rule_index),
3127 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3128 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3129 msm_pcm_get_channel_rule_index,
3130 msm_pcm_put_channel_rule_index),
3131 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3132 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3133 msm_pcm_get_channel_rule_index,
3134 msm_pcm_put_channel_rule_index),
3135
3136 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3137 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3138 msm_pcm_get_out_chs,
3139 msm_pcm_put_out_chs),
3140 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3141 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3142 msm_pcm_get_out_chs,
3143 msm_pcm_put_out_chs),
3144 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3145 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3146 msm_pcm_get_out_chs,
3147 msm_pcm_put_out_chs),
3148 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3149 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3150 msm_pcm_get_out_chs,
3151 msm_pcm_put_out_chs),
3152 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3153 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3154 msm_pcm_get_out_chs,
3155 msm_pcm_put_out_chs),
3156 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3157 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3158 msm_pcm_get_out_chs,
3159 msm_pcm_put_out_chs),
3160 {
3161 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3162 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3163 .name = "MultiMedia1 Channel Mixer",
3164 .info = msm_pcm_channel_mixer_info,
3165 .get = msm_pcm_channel_mixer_get,
3166 .put = msm_pcm_channel_mixer_put,
3167 .private_value = (unsigned long)&(mm1_channel_mux)
3168 },
3169 {
3170 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3171 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3172 .name = "MultiMedia2 Channel Mixer",
3173 .info = msm_pcm_channel_mixer_info,
3174 .get = msm_pcm_channel_mixer_get,
3175 .put = msm_pcm_channel_mixer_put,
3176 .private_value = (unsigned long)&(mm2_channel_mux)
3177 },
3178 {
3179 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3180 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3181 .name = "MultiMedia3 Channel Mixer",
3182 .info = msm_pcm_channel_mixer_info,
3183 .get = msm_pcm_channel_mixer_get,
3184 .put = msm_pcm_channel_mixer_put,
3185 .private_value = (unsigned long)&(mm3_channel_mux)
3186 },
3187 {
3188 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3189 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3190 .name = "MultiMedia4 Channel Mixer",
3191 .info = msm_pcm_channel_mixer_info,
3192 .get = msm_pcm_channel_mixer_get,
3193 .put = msm_pcm_channel_mixer_put,
3194 .private_value = (unsigned long)&(mm4_channel_mux)
3195 },
3196 {
3197 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3198 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3199 .name = "MultiMedia1 Output Channel1",
3200 .info = msm_pcm_channel_weight_info,
3201 .get = msm_pcm_channel_weight_get,
3202 .put = msm_pcm_channel_weight_put,
3203 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3204 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 0,}
3205 },
3206 {
3207 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3208 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3209 .name = "MultiMedia1 Output Channel2",
3210 .info = msm_pcm_channel_weight_info,
3211 .get = msm_pcm_channel_weight_get,
3212 .put = msm_pcm_channel_weight_put,
3213 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3214 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3215 },
3216 {
3217 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3218 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3219 .name = "MultiMedia1 Output Channel3",
3220 .info = msm_pcm_channel_weight_info,
3221 .get = msm_pcm_channel_weight_get,
3222 .put = msm_pcm_channel_weight_put,
3223 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3224 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3225 },
3226 {
3227 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3228 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3229 .name = "MultiMedia1 Output Channel4",
3230 .info = msm_pcm_channel_weight_info,
3231 .get = msm_pcm_channel_weight_get,
3232 .put = msm_pcm_channel_weight_put,
3233 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3234 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3235 },
3236 {
3237 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3238 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3239 .name = "MultiMedia1 Output Channel5",
3240 .info = msm_pcm_channel_weight_info,
3241 .get = msm_pcm_channel_weight_get,
3242 .put = msm_pcm_channel_weight_put,
3243 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3244 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3245 },
3246 {
3247 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3248 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3249 .name = "MultiMedia1 Output Channel6",
3250 .info = msm_pcm_channel_weight_info,
3251 .get = msm_pcm_channel_weight_get,
3252 .put = msm_pcm_channel_weight_put,
3253 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3254 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3255 },
3256 {
3257 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3258 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3259 .name = "MultiMedia1 Output Channel7",
3260 .info = msm_pcm_channel_weight_info,
3261 .get = msm_pcm_channel_weight_get,
3262 .put = msm_pcm_channel_weight_put,
3263 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3264 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3265 },
3266 {
3267 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3268 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3269 .name = "MultiMedia1 Output Channel8",
3270 .info = msm_pcm_channel_weight_info,
3271 .get = msm_pcm_channel_weight_get,
3272 .put = msm_pcm_channel_weight_put,
3273 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3274 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3275 },
3276 {
3277 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3278 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3279 .name = "MultiMedia2 Output Channel1",
3280 .info = msm_pcm_channel_weight_info,
3281 .get = msm_pcm_channel_weight_get,
3282 .put = msm_pcm_channel_weight_put,
3283 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3284 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3285 },
3286 {
3287 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3288 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3289 .name = "MultiMedia2 Output Channel2",
3290 .info = msm_pcm_channel_weight_info,
3291 .get = msm_pcm_channel_weight_get,
3292 .put = msm_pcm_channel_weight_put,
3293 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3294 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3295 },
3296 {
3297 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3298 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3299 .name = "MultiMedia2 Output Channel3",
3300 .info = msm_pcm_channel_weight_info,
3301 .get = msm_pcm_channel_weight_get,
3302 .put = msm_pcm_channel_weight_put,
3303 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3304 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3305 },
3306 {
3307 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3308 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3309 .name = "MultiMedia3 Output Channel1",
3310 .info = msm_pcm_channel_weight_info,
3311 .get = msm_pcm_channel_weight_get,
3312 .put = msm_pcm_channel_weight_put,
3313 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3314 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3315 },
3316 {
3317 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3318 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3319 .name = "MultiMedia3 Output Channel2",
3320 .info = msm_pcm_channel_weight_info,
3321 .get = msm_pcm_channel_weight_get,
3322 .put = msm_pcm_channel_weight_put,
3323 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3324 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3325 },
3326 {
3327 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3328 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3329 .name = "MultiMedia1 Channel1",
3330 .info = msm_pcm_channel_input_be_info,
3331 .get = msm_pcm_channel_input_be_get,
3332 .put = msm_pcm_channel_input_be_put,
3333 .private_value = (unsigned long)&(mm1_ch1_enum)
3334 },
3335 {
3336 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3337 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3338 .name = "MultiMedia1 Channel2",
3339 .info = msm_pcm_channel_input_be_info,
3340 .get = msm_pcm_channel_input_be_get,
3341 .put = msm_pcm_channel_input_be_put,
3342 .private_value = (unsigned long)&(mm1_ch2_enum)
3343 },
3344 {
3345 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3346 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3347 .name = "MultiMedia1 Channel3",
3348 .info = msm_pcm_channel_input_be_info,
3349 .get = msm_pcm_channel_input_be_get,
3350 .put = msm_pcm_channel_input_be_put,
3351 .private_value = (unsigned long)&(mm1_ch3_enum)
3352 },
3353 {
3354 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3355 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3356 .name = "MultiMedia1 Channel4",
3357 .info = msm_pcm_channel_input_be_info,
3358 .get = msm_pcm_channel_input_be_get,
3359 .put = msm_pcm_channel_input_be_put,
3360 .private_value = (unsigned long)&(mm1_ch4_enum)
3361 },
3362 {
3363 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3364 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3365 .name = "MultiMedia1 Channel5",
3366 .info = msm_pcm_channel_input_be_info,
3367 .get = msm_pcm_channel_input_be_get,
3368 .put = msm_pcm_channel_input_be_put,
3369 .private_value = (unsigned long)&(mm1_ch5_enum)
3370 },
3371 {
3372 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3373 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3374 .name = "MultiMedia1 Channel6",
3375 .info = msm_pcm_channel_input_be_info,
3376 .get = msm_pcm_channel_input_be_get,
3377 .put = msm_pcm_channel_input_be_put,
3378 .private_value = (unsigned long)&(mm1_ch6_enum)
3379 },
3380 {
3381 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3382 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3383 .name = "MultiMedia1 Channel7",
3384 .info = msm_pcm_channel_input_be_info,
3385 .get = msm_pcm_channel_input_be_get,
3386 .put = msm_pcm_channel_input_be_put,
3387 .private_value = (unsigned long)&(mm1_ch7_enum)
3388 },
3389 {
3390 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3391 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3392 .name = "MultiMedia1 Channel8",
3393 .info = msm_pcm_channel_input_be_info,
3394 .get = msm_pcm_channel_input_be_get,
3395 .put = msm_pcm_channel_input_be_put,
3396 .private_value = (unsigned long)&(mm1_ch8_enum)
3397 },
3398};
3399static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3400 struct snd_ctl_elem_value *ucontrol)
3401{
3402 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3403 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3404 ucontrol->value.integer.value[0]);
3405 return 0;
3406}
3407
3408static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3409 struct snd_ctl_elem_value *ucontrol)
3410{
3411 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3412 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3413 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3414 return 0;
3415}
3416
3417static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3418 "Four", "Five", "Six", "Seven", "Eight"};
3419
3420static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3421 struct snd_ctl_elem_value *ucontrol)
3422{
3423 switch (msm_ec_ref_bit_format) {
3424 case SNDRV_PCM_FORMAT_S24_LE:
3425 ucontrol->value.integer.value[0] = 2;
3426 break;
3427 case SNDRV_PCM_FORMAT_S16_LE:
3428 ucontrol->value.integer.value[0] = 1;
3429 break;
3430 default:
3431 ucontrol->value.integer.value[0] = 0;
3432 break;
3433 }
3434 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3435 __func__, ucontrol->value.integer.value[0]);
3436 return 0;
3437}
3438
3439static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3440 struct snd_ctl_elem_value *ucontrol)
3441{
3442 u16 bit_width = 0;
3443
3444 switch (ucontrol->value.integer.value[0]) {
3445 case 2:
3446 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3447 break;
3448 case 1:
3449 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3450 break;
3451 default:
3452 msm_ec_ref_bit_format = 0;
3453 break;
3454 }
3455
3456 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3457 bit_width = 16;
3458 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3459 bit_width = 24;
3460
3461 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3462 __func__, msm_ec_ref_bit_format);
3463 adm_ec_ref_rx_bit_width(bit_width);
3464 return 0;
3465}
3466
3467static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3468
3469static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3470 struct snd_ctl_elem_value *ucontrol)
3471{
3472 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3473 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3474 __func__, ucontrol->value.integer.value[0]);
3475 return 0;
3476}
3477
3478static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3479 struct snd_ctl_elem_value *ucontrol)
3480{
3481 switch (ucontrol->value.integer.value[0]) {
3482 case 0:
3483 msm_ec_ref_sampling_rate = 0;
3484 break;
3485 case 1:
3486 msm_ec_ref_sampling_rate = 8000;
3487 break;
3488 case 2:
3489 msm_ec_ref_sampling_rate = 16000;
3490 break;
3491 case 3:
3492 msm_ec_ref_sampling_rate = 32000;
3493 break;
3494 case 4:
3495 msm_ec_ref_sampling_rate = 44100;
3496 break;
3497 case 5:
3498 msm_ec_ref_sampling_rate = 48000;
3499 break;
3500 case 6:
3501 msm_ec_ref_sampling_rate = 96000;
3502 break;
3503 case 7:
3504 msm_ec_ref_sampling_rate = 192000;
3505 break;
3506 case 8:
3507 msm_ec_ref_sampling_rate = 384000;
3508 break;
3509 default:
3510 msm_ec_ref_sampling_rate = 48000;
3511 break;
3512 }
3513 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3514 __func__, msm_ec_ref_sampling_rate);
3515 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3516 return 0;
3517}
3518
3519static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3520 "32000", "44100", "48000", "96000", "192000", "384000"};
3521
3522static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3523 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3524 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3525 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3526};
3527
3528static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3529 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3530 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3531 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3532 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3533 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3534 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3535};
3536
3537static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3538 struct snd_ctl_elem_value *ucontrol)
3539{
3540 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3541 mutex_lock(&routing_lock);
3542 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3543 mutex_unlock(&routing_lock);
3544 return 0;
3545}
3546
3547static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3548 struct snd_ctl_elem_value *ucontrol)
3549{
3550 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303551 struct snd_soc_dapm_widget *widget =
3552 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303553 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3554 struct snd_soc_dapm_update *update = NULL;
3555
3556
3557 mutex_lock(&routing_lock);
3558 switch (ucontrol->value.integer.value[0]) {
3559 case 0:
3560 msm_route_ec_ref_rx = 0;
3561 ec_ref_port_id = AFE_PORT_INVALID;
3562 break;
3563 case 1:
3564 msm_route_ec_ref_rx = 1;
3565 ec_ref_port_id = SLIMBUS_0_RX;
3566 break;
3567 case 2:
3568 msm_route_ec_ref_rx = 2;
3569 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3570 break;
3571 case 3:
3572 msm_route_ec_ref_rx = 3;
3573 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3574 break;
3575 case 4:
3576 msm_route_ec_ref_rx = 4;
3577 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3578 break;
3579 case 5:
3580 msm_route_ec_ref_rx = 5;
3581 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3582 break;
3583 case 6:
3584 msm_route_ec_ref_rx = 6;
3585 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3586 break;
3587 case 7:
3588 msm_route_ec_ref_rx = 7;
3589 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3590 break;
3591 case 9:
3592 msm_route_ec_ref_rx = 9;
3593 ec_ref_port_id = SLIMBUS_5_RX;
3594 break;
3595 case 10:
3596 msm_route_ec_ref_rx = 10;
3597 ec_ref_port_id = SLIMBUS_1_TX;
3598 break;
3599 case 11:
3600 msm_route_ec_ref_rx = 11;
3601 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3602 break;
3603 case 12:
3604 msm_route_ec_ref_rx = 12;
3605 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3606 break;
3607 case 13:
3608 msm_route_ec_ref_rx = 13;
3609 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3610 break;
3611 case 14:
3612 msm_route_ec_ref_rx = 14;
3613 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3614 break;
3615 case 15:
3616 msm_route_ec_ref_rx = 15;
3617 ec_ref_port_id = SLIMBUS_6_RX;
3618 break;
3619 case 16:
3620 msm_route_ec_ref_rx = 16;
3621 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3622 break;
3623 case 17:
3624 msm_route_ec_ref_rx = 17;
3625 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3626 break;
3627 case 18:
3628 msm_route_ec_ref_rx = 18;
3629 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3630 break;
3631 case 19:
3632 msm_route_ec_ref_rx = 19;
3633 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3634 break;
3635 case 20:
3636 msm_route_ec_ref_rx = 20;
3637 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3638 break;
3639 case 21:
3640 msm_route_ec_ref_rx = 21;
3641 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3642 break;
3643 case 22:
3644 msm_route_ec_ref_rx = 22;
3645 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3646 break;
3647 default:
3648 msm_route_ec_ref_rx = 0; /* NONE */
3649 pr_err("%s EC ref rx %ld not valid\n",
3650 __func__, ucontrol->value.integer.value[0]);
3651 ec_ref_port_id = AFE_PORT_INVALID;
3652 break;
3653 }
3654 adm_ec_ref_rx_id(ec_ref_port_id);
3655 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3656 __func__, msm_route_ec_ref_rx);
3657 mutex_unlock(&routing_lock);
3658 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3659 msm_route_ec_ref_rx, e, update);
3660 return 0;
3661}
3662
3663static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3664 "PRI_MI2S_TX", "SEC_MI2S_TX",
3665 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3666 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3667 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3668 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
3669 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX"};
3670
3671static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3672 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3673};
3674
3675static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3676 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3677 msm_route_ec_ref_rx_enum[0],
3678 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3679
3680static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3681 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3682 msm_route_ec_ref_rx_enum[0],
3683 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3684
3685static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3686 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3687 msm_route_ec_ref_rx_enum[0],
3688 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3689
3690static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3691 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3692 msm_route_ec_ref_rx_enum[0],
3693 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3694
3695static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3696 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3697 msm_route_ec_ref_rx_enum[0],
3698 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3699
3700static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3701 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3702 msm_route_ec_ref_rx_enum[0],
3703 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3704
3705static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3706 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3707 msm_route_ec_ref_rx_enum[0],
3708 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3709
3710static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3711 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3712 msm_route_ec_ref_rx_enum[0],
3713 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3714
Asish Bhattacharya34504582017-08-08 12:55:01 +05303715static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3716 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3717 msm_route_ec_ref_rx_enum[0],
3718 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3719
Laxminath Kasam38070be2017-08-17 18:21:59 +05303720static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3721 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3722 msm_route_ec_ref_rx_enum[0],
3723 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3724
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303725static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3726 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3727 msm_route_ec_ref_rx_enum[0],
3728 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3729
3730static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3731 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3732 msm_route_ec_ref_rx_enum[0],
3733 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3734
3735static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3736 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3737 msm_route_ec_ref_rx_enum[0],
3738 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3739
3740static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3741 struct snd_ctl_elem_value *ucontrol)
3742{
3743 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3744
3745 mutex_lock(&routing_lock);
3746 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3747 mutex_unlock(&routing_lock);
3748 return 0;
3749}
3750
3751static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3752 struct snd_ctl_elem_value *ucontrol)
3753{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303754 struct snd_soc_dapm_widget *widget =
3755 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303756 int mux = ucontrol->value.enumerated.item[0];
3757 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3758 int ret = 1;
3759 bool state = true;
3760 uint16_t ext_ec_ref_port_id;
3761 struct snd_soc_dapm_update *update = NULL;
3762
3763 if (mux >= e->items) {
3764 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3765 return -EINVAL;
3766 }
3767
3768 mutex_lock(&routing_lock);
3769 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3770
3771 switch (msm_route_ext_ec_ref) {
3772 case EXT_EC_REF_PRI_MI2S_TX:
3773 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3774 break;
3775 case EXT_EC_REF_SEC_MI2S_TX:
3776 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3777 break;
3778 case EXT_EC_REF_TERT_MI2S_TX:
3779 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3780 break;
3781 case EXT_EC_REF_QUAT_MI2S_TX:
3782 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3783 break;
3784 case EXT_EC_REF_QUIN_MI2S_TX:
3785 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3786 break;
3787 case EXT_EC_REF_SLIM_1_TX:
3788 ext_ec_ref_port_id = SLIMBUS_1_TX;
3789 break;
3790 case EXT_EC_REF_NONE:
3791 default:
3792 ext_ec_ref_port_id = AFE_PORT_INVALID;
3793 state = false;
3794 break;
3795 }
3796
3797 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3798 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3799
3800 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3801 mutex_unlock(&routing_lock);
3802 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3803 update);
3804 } else {
3805 ret = -EINVAL;
3806 mutex_unlock(&routing_lock);
3807 }
3808 return ret;
3809}
3810
3811static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3812 "SEC_MI2S_TX", "TERT_MI2S_TX",
3813 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3814 "SLIM_1_TX"};
3815
3816static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3817 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3818};
3819
3820static const struct snd_kcontrol_new voc_ext_ec_mux =
3821 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3822 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3823
3824
3825static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3826 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3827 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3828 msm_routing_put_audio_mixer),
3829 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3830 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3831 msm_routing_put_audio_mixer),
3832 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3833 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3834 msm_routing_put_audio_mixer),
3835 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3836 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3837 msm_routing_put_audio_mixer),
3838 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3839 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3840 msm_routing_put_audio_mixer),
3841 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3842 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3843 msm_routing_put_audio_mixer),
3844 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3845 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3846 msm_routing_put_audio_mixer),
3847 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3848 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3849 msm_routing_put_audio_mixer),
3850 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3851 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3852 msm_routing_put_audio_mixer),
3853 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3854 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3855 msm_routing_put_audio_mixer),
3856 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3857 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3858 msm_routing_put_audio_mixer),
3859 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
3860 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3861 msm_routing_put_audio_mixer),
3862 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
3863 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3864 msm_routing_put_audio_mixer),
3865 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
3866 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3867 msm_routing_put_audio_mixer),
3868 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
3869 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3870 msm_routing_put_audio_mixer),
3871 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
3872 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3873 msm_routing_put_audio_mixer),
3874 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
3875 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3876 msm_routing_put_audio_mixer),
3877 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
3878 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3879 msm_routing_put_audio_mixer),
3880 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
3881 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3882 msm_routing_put_audio_mixer),
3883};
3884
3885static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
3886 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
3887 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3888 msm_routing_put_audio_mixer),
3889 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
3890 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3891 msm_routing_put_audio_mixer),
3892 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
3893 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3894 msm_routing_put_audio_mixer),
3895 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
3896 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3897 msm_routing_put_audio_mixer),
3898 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
3899 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3900 msm_routing_put_audio_mixer),
3901 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
3902 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3903 msm_routing_put_audio_mixer),
3904 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
3905 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3906 msm_routing_put_audio_mixer),
3907 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
3908 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3909 msm_routing_put_audio_mixer),
3910 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
3911 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3912 msm_routing_put_audio_mixer),
3913 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
3914 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3915 msm_routing_put_audio_mixer),
3916 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
3917 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3918 msm_routing_put_audio_mixer),
3919 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
3920 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3921 msm_routing_put_audio_mixer),
3922 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
3923 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3924 msm_routing_put_audio_mixer),
3925 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
3926 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3927 msm_routing_put_audio_mixer),
3928 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
3929 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3930 msm_routing_put_audio_mixer),
3931 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
3932 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3933 msm_routing_put_audio_mixer),
3934 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
3935 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3936 msm_routing_put_audio_mixer),
3937 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
3938 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3939 msm_routing_put_audio_mixer),
3940 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
3941 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3942 msm_routing_put_audio_mixer),
3943};
3944
3945static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
3946 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
3947 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3948 msm_routing_put_audio_mixer),
3949 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
3950 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3951 msm_routing_put_audio_mixer),
3952 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
3953 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3954 msm_routing_put_audio_mixer),
3955 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
3956 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3957 msm_routing_put_audio_mixer),
3958 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
3959 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3960 msm_routing_put_audio_mixer),
3961 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
3962 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3963 msm_routing_put_audio_mixer),
3964 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
3965 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3966 msm_routing_put_audio_mixer),
3967 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
3968 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3969 msm_routing_put_audio_mixer),
3970 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
3971 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3972 msm_routing_put_audio_mixer),
3973 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
3974 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3975 msm_routing_put_audio_mixer),
3976 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
3977 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3978 msm_routing_put_audio_mixer),
3979 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
3980 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3981 msm_routing_put_audio_mixer),
3982 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
3983 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3984 msm_routing_put_audio_mixer),
3985 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
3986 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3987 msm_routing_put_audio_mixer),
3988 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
3989 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3990 msm_routing_put_audio_mixer),
3991 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
3992 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3993 msm_routing_put_audio_mixer),
3994 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
3995 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3996 msm_routing_put_audio_mixer),
3997 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
3998 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3999 msm_routing_put_audio_mixer),
4000 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
4001 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4002 msm_routing_put_audio_mixer),
4003
4004};
4005
4006static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
4007 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4008 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4009 msm_routing_put_audio_mixer),
4010 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4011 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4012 msm_routing_put_audio_mixer),
4013 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4014 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4015 msm_routing_put_audio_mixer),
4016 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4017 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4018 msm_routing_put_audio_mixer),
4019 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4020 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4021 msm_routing_put_audio_mixer),
4022 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4023 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4024 msm_routing_put_audio_mixer),
4025 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4026 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4027 msm_routing_put_audio_mixer),
4028 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4029 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4030 msm_routing_put_audio_mixer),
4031 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4032 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4033 msm_routing_put_audio_mixer),
4034 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4035 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4036 msm_routing_put_audio_mixer),
4037 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4038 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4039 msm_routing_put_audio_mixer),
4040 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4041 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4042 msm_routing_put_audio_mixer),
4043 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4044 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4045 msm_routing_put_audio_mixer),
4046 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4047 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4048 msm_routing_put_audio_mixer),
4049 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4050 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4051 msm_routing_put_audio_mixer),
4052 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4053 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4054 msm_routing_put_audio_mixer),
4055};
4056
4057static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4058 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4059 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4060 msm_routing_put_audio_mixer),
4061 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4062 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4063 msm_routing_put_audio_mixer),
4064 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4065 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4066 msm_routing_put_audio_mixer),
4067 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4068 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4069 msm_routing_put_audio_mixer),
4070 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4071 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4072 msm_routing_put_audio_mixer),
4073 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4074 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4075 msm_routing_put_audio_mixer),
4076 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4077 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4078 msm_routing_put_audio_mixer),
4079 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4080 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4081 msm_routing_put_audio_mixer),
4082 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4083 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4084 msm_routing_put_audio_mixer),
4085 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4086 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4087 msm_routing_put_audio_mixer),
4088 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4089 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4090 msm_routing_put_audio_mixer),
4091 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4092 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4093 msm_routing_put_audio_mixer),
4094 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4095 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4096 msm_routing_put_audio_mixer),
4097 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4098 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4099 msm_routing_put_audio_mixer),
4100 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4101 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4102 msm_routing_put_audio_mixer),
4103 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4104 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4105 msm_routing_put_audio_mixer),
4106 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4107 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4108 msm_routing_put_audio_mixer),
4109 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4110 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4111 msm_routing_put_audio_mixer),
4112 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4113 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4114 msm_routing_put_audio_mixer),
4115};
4116
4117static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4118 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4119 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4120 msm_routing_put_audio_mixer),
4121 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4122 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4123 msm_routing_put_audio_mixer),
4124 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4125 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4126 msm_routing_put_audio_mixer),
4127 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4128 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4129 msm_routing_put_audio_mixer),
4130 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4131 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4132 msm_routing_put_audio_mixer),
4133 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4134 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4135 msm_routing_put_audio_mixer),
4136 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4137 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4138 msm_routing_put_audio_mixer),
4139 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4140 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4141 msm_routing_put_audio_mixer),
4142 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4143 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4144 msm_routing_put_audio_mixer),
4145 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4146 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4147 msm_routing_put_audio_mixer),
4148 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4149 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4150 msm_routing_put_audio_mixer),
4151 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4152 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4153 msm_routing_put_audio_mixer),
4154 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4155 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4156 msm_routing_put_audio_mixer),
4157 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4158 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4159 msm_routing_put_audio_mixer),
4160 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4161 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4162 msm_routing_put_audio_mixer),
4163 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4164 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4165 msm_routing_put_audio_mixer),
4166 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4167 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4168 msm_routing_put_audio_mixer),
4169 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4170 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4171 msm_routing_put_audio_mixer),
4172 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4173 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4174 msm_routing_put_audio_mixer),
4175};
4176
4177static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4178 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4179 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4180 msm_routing_put_audio_mixer),
4181 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4182 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4183 msm_routing_put_audio_mixer),
4184 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4185 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4186 msm_routing_put_audio_mixer),
4187 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4188 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4189 msm_routing_put_audio_mixer),
4190 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4191 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4192 msm_routing_put_audio_mixer),
4193 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4194 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4195 msm_routing_put_audio_mixer),
4196 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4197 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4198 msm_routing_put_audio_mixer),
4199 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4200 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4201 msm_routing_put_audio_mixer),
4202 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4203 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4204 msm_routing_put_audio_mixer),
4205 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4206 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4207 msm_routing_put_audio_mixer),
4208 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4209 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4210 msm_routing_put_audio_mixer),
4211 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4212 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4213 msm_routing_put_audio_mixer),
4214 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4215 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4216 msm_routing_put_audio_mixer),
4217 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4218 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4219 msm_routing_put_audio_mixer),
4220 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4221 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4222 msm_routing_put_audio_mixer),
4223 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4224 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4225 msm_routing_put_audio_mixer),
4226 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4227 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4228 msm_routing_put_audio_mixer),
4229 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4230 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4231 msm_routing_put_audio_mixer),
4232 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4233 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4234 msm_routing_put_audio_mixer),
4235};
4236
4237static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4238 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4239 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4240 msm_routing_put_audio_mixer),
4241 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4242 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4243 msm_routing_put_audio_mixer),
4244 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4245 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4246 msm_routing_put_audio_mixer),
4247 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4248 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4249 msm_routing_put_audio_mixer),
4250 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4251 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4252 msm_routing_put_audio_mixer),
4253 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4254 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4255 msm_routing_put_audio_mixer),
4256 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4257 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4258 msm_routing_put_audio_mixer),
4259 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4260 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4261 msm_routing_put_audio_mixer),
4262 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4263 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4264 msm_routing_put_audio_mixer),
4265 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4266 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4267 msm_routing_put_audio_mixer),
4268 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4269 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4270 msm_routing_put_audio_mixer),
4271 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4272 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4273 msm_routing_put_audio_mixer),
4274 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4275 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4276 msm_routing_put_audio_mixer),
4277 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4278 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4279 msm_routing_put_audio_mixer),
4280 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4281 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4282 msm_routing_put_audio_mixer),
4283 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4284 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4285 msm_routing_put_audio_mixer),
4286 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4287 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4288 msm_routing_put_audio_mixer),
4289 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4290 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4291 msm_routing_put_audio_mixer),
4292 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4293 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4294 msm_routing_put_audio_mixer),
4295};
4296
4297static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4298 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4299 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4300 msm_routing_put_audio_mixer),
4301 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4302 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4303 msm_routing_put_audio_mixer),
4304 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4305 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4306 msm_routing_put_audio_mixer),
4307 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4308 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4309 msm_routing_put_audio_mixer),
4310 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4311 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4312 msm_routing_put_audio_mixer),
4313 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4314 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4315 msm_routing_put_audio_mixer),
4316 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4317 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4318 msm_routing_put_audio_mixer),
4319 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4320 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4321 msm_routing_put_audio_mixer),
4322 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4323 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4324 msm_routing_put_audio_mixer),
4325 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4326 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4327 msm_routing_put_audio_mixer),
4328 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4329 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4330 msm_routing_put_audio_mixer),
4331 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4332 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4333 msm_routing_put_audio_mixer),
4334 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4335 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4336 msm_routing_put_audio_mixer),
4337 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4338 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4339 msm_routing_put_audio_mixer),
4340 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4341 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4342 msm_routing_put_audio_mixer),
4343 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4344 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4345 msm_routing_put_audio_mixer),
4346 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4347 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4348 msm_routing_put_audio_mixer),
4349 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4350 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4351 msm_routing_put_audio_mixer),
4352 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4353 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4354 msm_routing_put_audio_mixer),
4355};
4356
4357static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4358 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4359 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4360 msm_routing_put_audio_mixer),
4361 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4362 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4363 msm_routing_put_audio_mixer),
4364 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4365 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4366 msm_routing_put_audio_mixer),
4367 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4368 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4369 msm_routing_put_audio_mixer),
4370 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4371 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4372 msm_routing_put_audio_mixer),
4373 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4374 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4375 msm_routing_put_audio_mixer),
4376 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4377 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4378 msm_routing_put_audio_mixer),
4379 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4380 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4381 msm_routing_put_audio_mixer),
4382 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4383 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4384 msm_routing_put_audio_mixer),
4385 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4386 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4387 msm_routing_put_audio_mixer),
4388 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4389 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4390 msm_routing_put_audio_mixer),
4391 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4392 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4393 msm_routing_put_audio_mixer),
4394 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4395 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4396 msm_routing_put_audio_mixer),
4397 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4398 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4399 msm_routing_put_audio_mixer),
4400 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4401 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4402 msm_routing_put_audio_mixer),
4403 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4404 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4405 msm_routing_put_audio_mixer),
4406 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4407 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4408 msm_routing_put_audio_mixer),
4409};
4410
4411static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4412 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4413 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4414 msm_routing_put_audio_mixer),
4415};
4416
4417static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4418 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4419 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4420 msm_routing_put_audio_mixer),
4421 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4422 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4423 msm_routing_put_audio_mixer),
4424 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4425 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4426 msm_routing_put_audio_mixer),
4427 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4428 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4429 msm_routing_put_audio_mixer),
4430 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4431 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4432 msm_routing_put_audio_mixer),
4433 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4434 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4435 msm_routing_put_audio_mixer),
4436 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4437 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4438 msm_routing_put_audio_mixer),
4439 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4440 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4441 msm_routing_put_audio_mixer),
4442 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4443 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4444 msm_routing_put_audio_mixer),
4445 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4446 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4447 msm_routing_put_audio_mixer),
4448 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4449 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4450 msm_routing_put_audio_mixer),
4451 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4452 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4453 msm_routing_put_audio_mixer),
4454 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4455 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4456 msm_routing_put_audio_mixer),
4457 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4458 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4459 msm_routing_put_audio_mixer),
4460 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4461 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4462 msm_routing_put_audio_mixer),
4463 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4464 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4465 msm_routing_put_audio_mixer),
4466 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4467 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4468 msm_routing_put_audio_mixer),
4469 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4470 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4471 msm_routing_put_audio_mixer),
4472 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4473 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4474 msm_routing_put_audio_mixer),
4475};
4476
4477static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4478 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4479 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4480 msm_routing_put_audio_mixer),
4481 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4482 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4483 msm_routing_put_audio_mixer),
4484 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4485 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4486 msm_routing_put_audio_mixer),
4487 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4488 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4489 msm_routing_put_audio_mixer),
4490 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4491 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4492 msm_routing_put_audio_mixer),
4493 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4494 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4495 msm_routing_put_audio_mixer),
4496 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4497 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4498 msm_routing_put_audio_mixer),
4499 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4500 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4501 msm_routing_put_audio_mixer),
4502 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4503 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4504 msm_routing_put_audio_mixer),
4505 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4506 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4507 msm_routing_put_audio_mixer),
4508 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4509 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4510 msm_routing_put_audio_mixer),
4511 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4512 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4513 msm_routing_put_audio_mixer),
4514 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4515 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4516 msm_routing_put_audio_mixer),
4517 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4518 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4519 msm_routing_put_audio_mixer),
4520 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4521 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4522 msm_routing_put_audio_mixer),
4523 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4524 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4525 msm_routing_put_audio_mixer),
4526 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4527 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4528 msm_routing_put_audio_mixer),
4529 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4530 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4531 msm_routing_put_audio_mixer),
4532 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4533 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4534 msm_routing_put_audio_mixer),
4535};
4536
4537static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4538 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4539 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4540 msm_routing_put_audio_mixer),
4541 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4542 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4543 msm_routing_put_audio_mixer),
4544 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4545 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4546 msm_routing_put_audio_mixer),
4547 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4548 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4549 msm_routing_put_audio_mixer),
4550 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4551 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4552 msm_routing_put_audio_mixer),
4553 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4554 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4555 msm_routing_put_audio_mixer),
4556 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4557 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4558 msm_routing_put_audio_mixer),
4559 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4560 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4561 msm_routing_put_audio_mixer),
4562 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4563 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4564 msm_routing_put_audio_mixer),
4565 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4566 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4567 msm_routing_put_audio_mixer),
4568 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4569 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4570 msm_routing_put_audio_mixer),
4571 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4572 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4573 msm_routing_put_audio_mixer),
4574 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4575 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4576 msm_routing_put_audio_mixer),
4577 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4578 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4579 msm_routing_put_audio_mixer),
4580 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4581 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4582 msm_routing_put_audio_mixer),
4583 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4584 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4585 msm_routing_put_audio_mixer),
4586};
4587
4588static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4589 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4590 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4591 msm_routing_put_audio_mixer),
4592 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4593 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4594 msm_routing_put_audio_mixer),
4595 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4596 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4597 msm_routing_put_audio_mixer),
4598 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4599 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4600 msm_routing_put_audio_mixer),
4601 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4602 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4603 msm_routing_put_audio_mixer),
4604 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4605 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4606 msm_routing_put_audio_mixer),
4607 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4608 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4609 msm_routing_put_audio_mixer),
4610 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4611 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4612 msm_routing_put_audio_mixer),
4613 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4614 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4615 msm_routing_put_audio_mixer),
4616 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4617 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4618 msm_routing_put_audio_mixer),
4619 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4620 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4621 msm_routing_put_audio_mixer),
4622 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4623 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4624 msm_routing_put_audio_mixer),
4625 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4626 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4627 msm_routing_put_audio_mixer),
4628 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4629 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4630 msm_routing_put_audio_mixer),
4631 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4632 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4633 msm_routing_put_audio_mixer),
4634 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4635 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4636 msm_routing_put_audio_mixer),
4637};
4638
4639static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4640 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4641 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4642 msm_routing_put_audio_mixer),
4643 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4644 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4645 msm_routing_put_audio_mixer),
4646 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4647 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4648 msm_routing_put_audio_mixer),
4649 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4650 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4651 msm_routing_put_audio_mixer),
4652 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4653 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4654 msm_routing_put_audio_mixer),
4655 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4656 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4657 msm_routing_put_audio_mixer),
4658 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4659 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4660 msm_routing_put_audio_mixer),
4661 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4662 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4663 msm_routing_put_audio_mixer),
4664 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4665 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4666 msm_routing_put_audio_mixer),
4667 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4668 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4669 msm_routing_put_audio_mixer),
4670 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4671 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4672 msm_routing_put_audio_mixer),
4673 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4674 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4675 msm_routing_put_audio_mixer),
4676 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4677 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4678 msm_routing_put_audio_mixer),
4679 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4680 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4681 msm_routing_put_audio_mixer),
4682 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4683 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4684 msm_routing_put_audio_mixer),
4685 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4686 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4687 msm_routing_put_audio_mixer),
4688 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4689 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4690 msm_routing_put_audio_mixer),
4691 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4692 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4693 msm_routing_put_audio_mixer),
4694 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4695 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4696 msm_routing_put_audio_mixer),
4697};
4698
4699static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4700 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4701 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4702 msm_routing_put_audio_mixer),
4703 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4704 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4705 msm_routing_put_audio_mixer),
4706 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4707 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4708 msm_routing_put_audio_mixer),
4709 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4710 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4711 msm_routing_put_audio_mixer),
4712 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4713 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4714 msm_routing_put_audio_mixer),
4715 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4716 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4717 msm_routing_put_audio_mixer),
4718 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4719 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4720 msm_routing_put_audio_mixer),
4721 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4722 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4723 msm_routing_put_audio_mixer),
4724 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4725 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4726 msm_routing_put_audio_mixer),
4727 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4728 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4729 msm_routing_put_audio_mixer),
4730 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4731 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4732 msm_routing_put_audio_mixer),
4733 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4734 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4735 msm_routing_put_audio_mixer),
4736 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4737 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4738 msm_routing_put_audio_mixer),
4739 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4740 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4741 msm_routing_put_audio_mixer),
4742 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4743 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4744 msm_routing_put_audio_mixer),
4745 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4746 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4747 msm_routing_put_audio_mixer),
4748};
4749
4750 /* incall music delivery mixer */
4751static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4752 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4753 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4754 msm_routing_put_audio_mixer),
4755 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4756 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4757 msm_routing_put_audio_mixer),
4758 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4759 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4760 msm_routing_put_audio_mixer),
4761 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4762 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4763 msm_routing_put_audio_mixer),
4764};
4765
4766static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4767 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4768 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4769 msm_routing_put_audio_mixer),
4770 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4771 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4772 msm_routing_put_audio_mixer),
4773 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4774 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4775 msm_routing_put_audio_mixer),
4776 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4777 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4778 msm_routing_put_audio_mixer),
4779};
4780
4781static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4782 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4783 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4784 msm_routing_put_audio_mixer),
4785 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4786 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4787 msm_routing_put_audio_mixer),
4788 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4789 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4790 msm_routing_put_audio_mixer),
4791 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4792 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4793 msm_routing_put_audio_mixer),
4794};
4795
4796static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
4797 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4798 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4799 msm_routing_put_audio_mixer),
4800 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4801 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4802 msm_routing_put_audio_mixer),
4803 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4804 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4805 msm_routing_put_audio_mixer),
4806 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4807 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4808 msm_routing_put_audio_mixer),
4809 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4810 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4811 msm_routing_put_audio_mixer),
4812 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4813 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4814 msm_routing_put_audio_mixer),
4815 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4816 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4817 msm_routing_put_audio_mixer),
4818 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4819 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4820 msm_routing_put_audio_mixer),
4821 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4822 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4823 msm_routing_put_audio_mixer),
4824 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4825 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4826 msm_routing_put_audio_mixer),
4827 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4828 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4829 msm_routing_put_audio_mixer),
4830 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4831 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4832 msm_routing_put_audio_mixer),
4833 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4834 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4835 msm_routing_put_audio_mixer),
4836 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4837 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4838 msm_routing_put_audio_mixer),
4839 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4840 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4841 msm_routing_put_audio_mixer),
4842 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4843 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4844 msm_routing_put_audio_mixer),
4845};
4846
4847static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
4848 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4849 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4850 msm_routing_put_audio_mixer),
4851 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4852 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4853 msm_routing_put_audio_mixer),
4854 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4855 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4856 msm_routing_put_audio_mixer),
4857 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4858 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4859 msm_routing_put_audio_mixer),
4860 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4861 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4862 msm_routing_put_audio_mixer),
4863 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4864 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4865 msm_routing_put_audio_mixer),
4866 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4867 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4868 msm_routing_put_audio_mixer),
4869 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4870 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4871 msm_routing_put_audio_mixer),
4872 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4873 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4874 msm_routing_put_audio_mixer),
4875 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4876 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4877 msm_routing_put_audio_mixer),
4878 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4879 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4880 msm_routing_put_audio_mixer),
4881 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4882 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4883 msm_routing_put_audio_mixer),
4884 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4885 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4886 msm_routing_put_audio_mixer),
4887 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4888 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4889 msm_routing_put_audio_mixer),
4890 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4891 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4892 msm_routing_put_audio_mixer),
4893 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4894 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4895 msm_routing_put_audio_mixer),
4896};
4897
4898static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
4899 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
4900 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4901 msm_routing_put_audio_mixer),
4902 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
4903 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4904 msm_routing_put_audio_mixer),
4905 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
4906 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4907 msm_routing_put_audio_mixer),
4908 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
4909 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4910 msm_routing_put_audio_mixer),
4911 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
4912 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4913 msm_routing_put_audio_mixer),
4914 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
4915 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4916 msm_routing_put_audio_mixer),
4917 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
4918 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4919 msm_routing_put_audio_mixer),
4920 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
4921 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4922 msm_routing_put_audio_mixer),
4923 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
4924 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4925 msm_routing_put_audio_mixer),
4926 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
4927 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4928 msm_routing_put_audio_mixer),
4929 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
4930 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4931 msm_routing_put_audio_mixer),
4932 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
4933 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4934 msm_routing_put_audio_mixer),
4935 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
4936 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4937 msm_routing_put_audio_mixer),
4938 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
4939 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4940 msm_routing_put_audio_mixer),
4941 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
4942 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4943 msm_routing_put_audio_mixer),
4944 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
4945 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4946 msm_routing_put_audio_mixer),
4947};
4948
4949static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
4950 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4951 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4952 msm_routing_put_audio_mixer),
4953 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4954 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4955 msm_routing_put_audio_mixer),
4956 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4957 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4958 msm_routing_put_audio_mixer),
4959 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4960 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4961 msm_routing_put_audio_mixer),
4962 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4963 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4964 msm_routing_put_audio_mixer),
4965 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4966 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4967 msm_routing_put_audio_mixer),
4968 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4969 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4970 msm_routing_put_audio_mixer),
4971 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4972 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4973 msm_routing_put_audio_mixer),
4974 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4975 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4976 msm_routing_put_audio_mixer),
4977 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4978 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4979 msm_routing_put_audio_mixer),
4980 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4981 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4982 msm_routing_put_audio_mixer),
4983 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4984 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4985 msm_routing_put_audio_mixer),
4986 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4987 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4988 msm_routing_put_audio_mixer),
4989 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4990 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4991 msm_routing_put_audio_mixer),
4992 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4993 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4994 msm_routing_put_audio_mixer),
4995 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4996 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4997 msm_routing_put_audio_mixer),
4998 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4999 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5000 msm_routing_put_audio_mixer),
5001 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5002 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5003 msm_routing_put_audio_mixer),
5004 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5005 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5006 msm_routing_put_audio_mixer),
5007};
5008
5009static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
5010 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5011 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5012 msm_routing_put_audio_mixer),
5013 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5014 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5015 msm_routing_put_audio_mixer),
5016 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5017 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5018 msm_routing_put_audio_mixer),
5019 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5020 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5021 msm_routing_put_audio_mixer),
5022 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5023 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5024 msm_routing_put_audio_mixer),
5025 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5026 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5027 msm_routing_put_audio_mixer),
5028 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5029 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5030 msm_routing_put_audio_mixer),
5031 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5032 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5033 msm_routing_put_audio_mixer),
5034 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5035 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5036 msm_routing_put_audio_mixer),
5037 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5038 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5039 msm_routing_put_audio_mixer),
5040 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5041 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5042 msm_routing_put_audio_mixer),
5043 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5044 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5045 msm_routing_put_audio_mixer),
5046 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5047 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5048 msm_routing_put_audio_mixer),
5049 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5050 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5051 msm_routing_put_audio_mixer),
5052 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5053 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5054 msm_routing_put_audio_mixer),
5055 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5056 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5057 msm_routing_put_audio_mixer),
5058};
5059
5060static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5061 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5062 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5063 msm_routing_put_audio_mixer),
5064 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5065 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5066 msm_routing_put_audio_mixer),
5067 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5068 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5069 msm_routing_put_audio_mixer),
5070 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5071 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5072 msm_routing_put_audio_mixer),
5073 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5074 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5075 msm_routing_put_audio_mixer),
5076 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5077 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5078 msm_routing_put_audio_mixer),
5079 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5080 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5081 msm_routing_put_audio_mixer),
5082 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5083 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5084 msm_routing_put_audio_mixer),
5085 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5086 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5087 msm_routing_put_audio_mixer),
5088 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5089 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5090 msm_routing_put_audio_mixer),
5091 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5092 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5093 msm_routing_put_audio_mixer),
5094 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5095 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5096 msm_routing_put_audio_mixer),
5097 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5098 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5099 msm_routing_put_audio_mixer),
5100 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5101 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5102 msm_routing_put_audio_mixer),
5103 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5104 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5105 msm_routing_put_audio_mixer),
5106 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5107 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5108 msm_routing_put_audio_mixer),
5109 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5110 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5111 msm_routing_put_audio_mixer),
5112 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5113 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5114 msm_routing_put_audio_mixer),
5115 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5116 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5117 msm_routing_put_audio_mixer),
5118};
5119
5120static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5121 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5122 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5123 msm_routing_put_audio_mixer),
5124 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5125 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5126 msm_routing_put_audio_mixer),
5127 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5128 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5129 msm_routing_put_audio_mixer),
5130 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5131 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5132 msm_routing_put_audio_mixer),
5133 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5134 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5135 msm_routing_put_audio_mixer),
5136 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5137 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5138 msm_routing_put_audio_mixer),
5139 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5140 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5141 msm_routing_put_audio_mixer),
5142 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5143 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5144 msm_routing_put_audio_mixer),
5145 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5146 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5147 msm_routing_put_audio_mixer),
5148 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5149 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5150 msm_routing_put_audio_mixer),
5151 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5152 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5153 msm_routing_put_audio_mixer),
5154 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5155 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5156 msm_routing_put_audio_mixer),
5157 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5158 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5159 msm_routing_put_audio_mixer),
5160 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5161 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5162 msm_routing_put_audio_mixer),
5163 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5164 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5165 msm_routing_put_audio_mixer),
5166 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5167 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5168 msm_routing_put_audio_mixer),
5169 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5170 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5171 msm_routing_put_audio_mixer),
5172 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5173 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5174 msm_routing_put_audio_mixer),
5175 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5176 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5177 msm_routing_put_audio_mixer),
5178};
5179
5180static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5181 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5182 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5183 msm_routing_put_audio_mixer),
5184 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5185 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5186 msm_routing_put_audio_mixer),
5187 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5188 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5189 msm_routing_put_audio_mixer),
5190 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5191 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5192 msm_routing_put_audio_mixer),
5193 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5194 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5195 msm_routing_put_audio_mixer),
5196 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5197 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5198 msm_routing_put_audio_mixer),
5199 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5200 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5201 msm_routing_put_audio_mixer),
5202 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5203 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5204 msm_routing_put_audio_mixer),
5205 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5206 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5207 msm_routing_put_audio_mixer),
5208 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5209 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5210 msm_routing_put_audio_mixer),
5211 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5212 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5213 msm_routing_put_audio_mixer),
5214 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5215 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5216 msm_routing_put_audio_mixer),
5217 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5218 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5219 msm_routing_put_audio_mixer),
5220 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5221 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5222 msm_routing_put_audio_mixer),
5223 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5224 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5225 msm_routing_put_audio_mixer),
5226 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5227 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5228 msm_routing_put_audio_mixer),
5229 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5230 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5231 msm_routing_put_audio_mixer),
5232 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5233 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5234 msm_routing_put_audio_mixer),
5235 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5236 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5237 msm_routing_put_audio_mixer),
5238};
5239
5240static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5241 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_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_SEC_AUXPCM_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_SEC_AUXPCM_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_SEC_AUXPCM_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_SEC_AUXPCM_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_SEC_AUXPCM_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_SEC_AUXPCM_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_SEC_AUXPCM_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_SEC_AUXPCM_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_SEC_AUXPCM_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_SEC_AUXPCM_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_SEC_AUXPCM_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_SEC_AUXPCM_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_SEC_AUXPCM_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_SEC_AUXPCM_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_SEC_AUXPCM_RX,
5287 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5288 msm_routing_put_audio_mixer),
5289 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5290 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5291 msm_routing_put_audio_mixer),
5292 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5293 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5294 msm_routing_put_audio_mixer),
5295 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5296 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5297 msm_routing_put_audio_mixer),
5298};
5299
5300static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5301 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5302 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5303 msm_routing_put_audio_mixer),
5304 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5305 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5306 msm_routing_put_audio_mixer),
5307 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5308 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5309 msm_routing_put_audio_mixer),
5310 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5311 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5312 msm_routing_put_audio_mixer),
5313 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5314 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5315 msm_routing_put_audio_mixer),
5316 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5317 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5318 msm_routing_put_audio_mixer),
5319 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5320 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5321 msm_routing_put_audio_mixer),
5322 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5323 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5324 msm_routing_put_audio_mixer),
5325 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5326 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5327 msm_routing_put_audio_mixer),
5328 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5329 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5330 msm_routing_put_audio_mixer),
5331 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5332 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5333 msm_routing_put_audio_mixer),
5334 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5335 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5336 msm_routing_put_audio_mixer),
5337 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5338 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5339 msm_routing_put_audio_mixer),
5340 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5341 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5342 msm_routing_put_audio_mixer),
5343 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5344 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5345 msm_routing_put_audio_mixer),
5346 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5347 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5348 msm_routing_put_audio_mixer),
5349};
5350
5351static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5352 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5353 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5354 msm_routing_put_audio_mixer),
5355 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5356 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5357 msm_routing_put_audio_mixer),
5358 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5359 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5360 msm_routing_put_audio_mixer),
5361 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5362 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5363 msm_routing_put_audio_mixer),
5364 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5365 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5366 msm_routing_put_audio_mixer),
5367 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5368 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5369 msm_routing_put_audio_mixer),
5370 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5371 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5372 msm_routing_put_audio_mixer),
5373 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5374 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5375 msm_routing_put_audio_mixer),
5376 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5377 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5378 msm_routing_put_audio_mixer),
5379 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5380 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5381 msm_routing_put_audio_mixer),
5382 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5383 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5384 msm_routing_put_audio_mixer),
5385 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5386 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5387 msm_routing_put_audio_mixer),
5388 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5389 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5390 msm_routing_put_audio_mixer),
5391 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5392 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5393 msm_routing_put_audio_mixer),
5394 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5395 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5396 msm_routing_put_audio_mixer),
5397 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5398 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5399 msm_routing_put_audio_mixer),
5400};
5401
Rohit Kumara5077932017-09-10 22:05:05 +05305402static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5403 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5404 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5405 msm_routing_put_audio_mixer),
5406 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5407 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5408 msm_routing_put_audio_mixer),
5409 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5410 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5411 msm_routing_put_audio_mixer),
5412 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5413 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5414 msm_routing_put_audio_mixer),
5415 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5416 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5417 msm_routing_put_audio_mixer),
5418 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5419 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5420 msm_routing_put_audio_mixer),
5421 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5422 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5423 msm_routing_put_audio_mixer),
5424 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5425 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5426 msm_routing_put_audio_mixer),
5427 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5428 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5429 msm_routing_put_audio_mixer),
5430 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5431 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5432 msm_routing_put_audio_mixer),
5433 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5434 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5435 msm_routing_put_audio_mixer),
5436 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5437 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5438 msm_routing_put_audio_mixer),
5439 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5440 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5441 msm_routing_put_audio_mixer),
5442 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5443 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5444 msm_routing_put_audio_mixer),
5445 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5446 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5447 msm_routing_put_audio_mixer),
5448 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5449 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5450 msm_routing_put_audio_mixer),
5451};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305452static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5453 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5454 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5455 msm_routing_put_audio_mixer),
5456 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5457 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5458 msm_routing_put_audio_mixer),
5459 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5460 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5461 msm_routing_put_audio_mixer),
5462 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5463 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5464 msm_routing_put_audio_mixer),
5465 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5466 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5467 msm_routing_put_audio_mixer),
5468 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5469 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5470 msm_routing_put_audio_mixer),
5471 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5472 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5473 msm_routing_put_audio_mixer),
5474 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5475 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5476 msm_routing_put_audio_mixer),
5477 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5478 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5479 msm_routing_put_audio_mixer),
5480 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5481 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5482 msm_routing_put_audio_mixer),
5483 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5484 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5485 msm_routing_put_audio_mixer),
5486 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5487 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5488 msm_routing_put_audio_mixer),
5489 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5490 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5491 msm_routing_put_audio_mixer),
5492 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5493 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5494 msm_routing_put_audio_mixer),
5495 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5496 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5497 msm_routing_put_audio_mixer),
5498 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5499 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5500 msm_routing_put_audio_mixer),
5501};
5502
5503static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5504 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5505 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5506 msm_routing_put_audio_mixer),
5507 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5508 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5509 msm_routing_put_audio_mixer),
5510 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5511 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5512 msm_routing_put_audio_mixer),
5513 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5514 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5515 msm_routing_put_audio_mixer),
5516 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5517 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5518 msm_routing_put_audio_mixer),
5519 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5520 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5521 msm_routing_put_audio_mixer),
5522 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5523 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5524 msm_routing_put_audio_mixer),
5525 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5526 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5527 msm_routing_put_audio_mixer),
5528 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5529 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5530 msm_routing_put_audio_mixer),
5531 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5532 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5533 msm_routing_put_audio_mixer),
5534 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5535 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5536 msm_routing_put_audio_mixer),
5537 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5538 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5539 msm_routing_put_audio_mixer),
5540 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5541 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5542 msm_routing_put_audio_mixer),
5543 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5544 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5545 msm_routing_put_audio_mixer),
5546 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5547 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5548 msm_routing_put_audio_mixer),
5549 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5550 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5551 msm_routing_put_audio_mixer),
5552};
5553
5554static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5555 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5556 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5557 msm_routing_put_audio_mixer),
5558 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5559 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5560 msm_routing_put_audio_mixer),
5561 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5562 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5563 msm_routing_put_audio_mixer),
5564 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5565 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5566 msm_routing_put_audio_mixer),
5567 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5568 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5569 msm_routing_put_audio_mixer),
5570 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5571 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5572 msm_routing_put_audio_mixer),
5573 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5574 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5575 msm_routing_put_audio_mixer),
5576 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5577 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5578 msm_routing_put_audio_mixer),
5579 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5580 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5581 msm_routing_put_audio_mixer),
5582 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5583 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5584 msm_routing_put_audio_mixer),
5585 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5586 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5587 msm_routing_put_audio_mixer),
5588 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5589 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5590 msm_routing_put_audio_mixer),
5591 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5592 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5593 msm_routing_put_audio_mixer),
5594 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5595 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5596 msm_routing_put_audio_mixer),
5597 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5598 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5599 msm_routing_put_audio_mixer),
5600 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5601 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5602 msm_routing_put_audio_mixer),
5603};
5604
5605static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5606 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5607 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5608 msm_routing_put_audio_mixer),
5609 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5610 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5611 msm_routing_put_audio_mixer),
5612 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5613 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5614 msm_routing_put_audio_mixer),
5615 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5616 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5617 msm_routing_put_audio_mixer),
5618 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5619 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5620 msm_routing_put_audio_mixer),
5621 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5622 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5623 msm_routing_put_audio_mixer),
5624 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5625 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5626 msm_routing_put_audio_mixer),
5627 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5628 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5629 msm_routing_put_audio_mixer),
5630 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5631 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5632 msm_routing_put_audio_mixer),
5633 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5634 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5635 msm_routing_put_audio_mixer),
5636 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5637 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5638 msm_routing_put_audio_mixer),
5639 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5640 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5641 msm_routing_put_audio_mixer),
5642 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5643 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5644 msm_routing_put_audio_mixer),
5645 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5646 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5647 msm_routing_put_audio_mixer),
5648 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5649 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5650 msm_routing_put_audio_mixer),
5651 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5652 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5653 msm_routing_put_audio_mixer),
5654};
5655
5656static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5657 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5658 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5659 msm_routing_put_audio_mixer),
5660 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5661 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5662 msm_routing_put_audio_mixer),
5663 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5664 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5665 msm_routing_put_audio_mixer),
5666 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5667 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5668 msm_routing_put_audio_mixer),
5669 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5670 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5671 msm_routing_put_audio_mixer),
5672 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5673 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5674 msm_routing_put_audio_mixer),
5675 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5676 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5677 msm_routing_put_audio_mixer),
5678 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5679 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5680 msm_routing_put_audio_mixer),
5681 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5682 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5683 msm_routing_put_audio_mixer),
5684 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5685 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5686 msm_routing_put_audio_mixer),
5687 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5688 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5689 msm_routing_put_audio_mixer),
5690 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5691 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5692 msm_routing_put_audio_mixer),
5693 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5694 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5695 msm_routing_put_audio_mixer),
5696 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5697 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5698 msm_routing_put_audio_mixer),
5699 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5700 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5701 msm_routing_put_audio_mixer),
5702 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5703 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5704 msm_routing_put_audio_mixer),
5705};
5706
5707static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5708 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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 sec_tdm_rx_1_mixer_controls[] = {
5759 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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 sec_tdm_rx_2_mixer_controls[] = {
5810 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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 sec_tdm_rx_3_mixer_controls[] = {
5861 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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 sec_tdm_tx_0_mixer_controls[] = {
5912 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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_SEC_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 tert_tdm_rx_0_mixer_controls[] = {
5963 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_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_TERT_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_TERT_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_TERT_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_TERT_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_TERT_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_TERT_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_TERT_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_TERT_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_TERT_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_TERT_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_TERT_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_TERT_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_TERT_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_TERT_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_TERT_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 tert_tdm_tx_0_mixer_controls[] = {
6014 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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_TERT_TDM_TX_0,
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 tert_tdm_rx_1_mixer_controls[] = {
6065 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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_TERT_TDM_RX_1,
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 tert_tdm_rx_2_mixer_controls[] = {
6116 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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 tert_tdm_rx_3_mixer_controls[] = {
6167 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_TERT_TDM_RX_3,
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_4_mixer_controls[] = {
6218 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
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_4,
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_4,
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_4,
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_4,
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_4,
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_4,
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_4,
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_4,
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_4,
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_4,
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_4,
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_4,
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_4,
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_4,
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_4,
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 quat_tdm_rx_0_mixer_controls[] = {
6269 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_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_QUAT_TDM_RX_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_QUAT_TDM_RX_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_QUAT_TDM_RX_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_QUAT_TDM_RX_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_QUAT_TDM_RX_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_QUAT_TDM_RX_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_QUAT_TDM_RX_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_QUAT_TDM_RX_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_QUAT_TDM_RX_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_QUAT_TDM_RX_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_QUAT_TDM_RX_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_QUAT_TDM_RX_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_QUAT_TDM_RX_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_QUAT_TDM_RX_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_QUAT_TDM_RX_0,
6315 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6316 msm_routing_put_audio_mixer),
6317 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6318 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6319 msm_routing_put_audio_mixer),
6320};
6321
6322static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6323 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6324 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6325 msm_routing_put_audio_mixer),
6326 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6327 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6328 msm_routing_put_audio_mixer),
6329 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6330 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6331 msm_routing_put_audio_mixer),
6332 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6333 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6334 msm_routing_put_audio_mixer),
6335 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6336 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6337 msm_routing_put_audio_mixer),
6338 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6339 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6340 msm_routing_put_audio_mixer),
6341 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6342 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6343 msm_routing_put_audio_mixer),
6344 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6345 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6346 msm_routing_put_audio_mixer),
6347 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6348 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6349 msm_routing_put_audio_mixer),
6350 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6351 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6352 msm_routing_put_audio_mixer),
6353 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6354 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6355 msm_routing_put_audio_mixer),
6356 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6357 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6358 msm_routing_put_audio_mixer),
6359 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6360 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6361 msm_routing_put_audio_mixer),
6362 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6363 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6364 msm_routing_put_audio_mixer),
6365 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6366 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6367 msm_routing_put_audio_mixer),
6368 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6369 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6370 msm_routing_put_audio_mixer),
6371};
6372
6373static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6374 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6375 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6376 msm_routing_put_audio_mixer),
6377 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6378 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6379 msm_routing_put_audio_mixer),
6380 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6381 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6382 msm_routing_put_audio_mixer),
6383 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6384 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6385 msm_routing_put_audio_mixer),
6386 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6387 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6388 msm_routing_put_audio_mixer),
6389 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6390 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6391 msm_routing_put_audio_mixer),
6392 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6393 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6394 msm_routing_put_audio_mixer),
6395 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6396 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6397 msm_routing_put_audio_mixer),
6398 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6399 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6400 msm_routing_put_audio_mixer),
6401 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6402 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6403 msm_routing_put_audio_mixer),
6404 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6405 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6406 msm_routing_put_audio_mixer),
6407 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6408 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6409 msm_routing_put_audio_mixer),
6410 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6411 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6412 msm_routing_put_audio_mixer),
6413 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6414 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6415 msm_routing_put_audio_mixer),
6416 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6417 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6418 msm_routing_put_audio_mixer),
6419 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6420 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6421 msm_routing_put_audio_mixer),
6422 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6423 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6424 msm_routing_put_audio_mixer),
6425};
6426
6427static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6428 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6429 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6430 msm_routing_put_audio_mixer),
6431 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6432 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6433 msm_routing_put_audio_mixer),
6434 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6435 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6436 msm_routing_put_audio_mixer),
6437 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6438 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6439 msm_routing_put_audio_mixer),
6440 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6441 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6442 msm_routing_put_audio_mixer),
6443 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6444 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6445 msm_routing_put_audio_mixer),
6446 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6447 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6448 msm_routing_put_audio_mixer),
6449 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6450 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6451 msm_routing_put_audio_mixer),
6452 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6453 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6454 msm_routing_put_audio_mixer),
6455 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6456 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6457 msm_routing_put_audio_mixer),
6458 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6459 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6460 msm_routing_put_audio_mixer),
6461 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6462 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6463 msm_routing_put_audio_mixer),
6464 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6465 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6466 msm_routing_put_audio_mixer),
6467 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6468 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6469 msm_routing_put_audio_mixer),
6470 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6471 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6472 msm_routing_put_audio_mixer),
6473 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6474 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6475 msm_routing_put_audio_mixer),
6476 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6477 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6478 msm_routing_put_audio_mixer),
6479};
6480
6481static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6482 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6483 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6484 msm_routing_put_audio_mixer),
6485 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6486 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6487 msm_routing_put_audio_mixer),
6488 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6489 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6490 msm_routing_put_audio_mixer),
6491 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6492 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6493 msm_routing_put_audio_mixer),
6494 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6495 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6496 msm_routing_put_audio_mixer),
6497 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6498 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6499 msm_routing_put_audio_mixer),
6500 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6501 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6502 msm_routing_put_audio_mixer),
6503 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6504 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6505 msm_routing_put_audio_mixer),
6506 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6507 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6508 msm_routing_put_audio_mixer),
6509 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6510 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6511 msm_routing_put_audio_mixer),
6512 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6513 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6514 msm_routing_put_audio_mixer),
6515 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6516 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6517 msm_routing_put_audio_mixer),
6518 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6519 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6520 msm_routing_put_audio_mixer),
6521 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6522 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6523 msm_routing_put_audio_mixer),
6524 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6525 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6526 msm_routing_put_audio_mixer),
6527 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6528 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6529 msm_routing_put_audio_mixer),
6530 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6531 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6532 msm_routing_put_audio_mixer),
6533};
6534
Rohit Kumara5077932017-09-10 22:05:05 +05306535static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6536 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6537 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6538 msm_routing_put_audio_mixer),
6539 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6540 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6541 msm_routing_put_audio_mixer),
6542 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6543 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6544 msm_routing_put_audio_mixer),
6545 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6546 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6547 msm_routing_put_audio_mixer),
6548 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6549 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6550 msm_routing_put_audio_mixer),
6551 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6552 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6553 msm_routing_put_audio_mixer),
6554 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6555 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6556 msm_routing_put_audio_mixer),
6557 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6558 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6559 msm_routing_put_audio_mixer),
6560 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6561 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6562 msm_routing_put_audio_mixer),
6563 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6564 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6565 msm_routing_put_audio_mixer),
6566 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6567 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6568 msm_routing_put_audio_mixer),
6569 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6570 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6571 msm_routing_put_audio_mixer),
6572 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6573 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6574 msm_routing_put_audio_mixer),
6575 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6576 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6577 msm_routing_put_audio_mixer),
6578 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6579 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6580 msm_routing_put_audio_mixer),
6581 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6582 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6583 msm_routing_put_audio_mixer),
6584 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6585 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6586 msm_routing_put_audio_mixer),
6587};
6588
6589static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6590 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6591 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6592 msm_routing_put_audio_mixer),
6593 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6594 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6595 msm_routing_put_audio_mixer),
6596 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6597 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6598 msm_routing_put_audio_mixer),
6599 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6600 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6601 msm_routing_put_audio_mixer),
6602 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6603 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6604 msm_routing_put_audio_mixer),
6605 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6606 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6607 msm_routing_put_audio_mixer),
6608 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6609 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6610 msm_routing_put_audio_mixer),
6611 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6612 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6613 msm_routing_put_audio_mixer),
6614 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6615 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6616 msm_routing_put_audio_mixer),
6617 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6618 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6619 msm_routing_put_audio_mixer),
6620 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6621 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6622 msm_routing_put_audio_mixer),
6623 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6624 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6625 msm_routing_put_audio_mixer),
6626 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6627 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6628 msm_routing_put_audio_mixer),
6629 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6630 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6631 msm_routing_put_audio_mixer),
6632 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6633 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6634 msm_routing_put_audio_mixer),
6635 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6636 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6637 msm_routing_put_audio_mixer),
6638};
6639
6640static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6641 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6642 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6643 msm_routing_put_audio_mixer),
6644 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6645 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6646 msm_routing_put_audio_mixer),
6647 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6648 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6649 msm_routing_put_audio_mixer),
6650 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6651 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6652 msm_routing_put_audio_mixer),
6653 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6654 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6655 msm_routing_put_audio_mixer),
6656 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6657 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6658 msm_routing_put_audio_mixer),
6659 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6660 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6661 msm_routing_put_audio_mixer),
6662 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6663 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6664 msm_routing_put_audio_mixer),
6665 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6666 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6667 msm_routing_put_audio_mixer),
6668 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6669 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6670 msm_routing_put_audio_mixer),
6671 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6672 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6673 msm_routing_put_audio_mixer),
6674 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6675 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6676 msm_routing_put_audio_mixer),
6677 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6678 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6679 msm_routing_put_audio_mixer),
6680 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6681 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6682 msm_routing_put_audio_mixer),
6683 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6684 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6685 msm_routing_put_audio_mixer),
6686 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6687 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6688 msm_routing_put_audio_mixer),
6689 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6690 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6691 msm_routing_put_audio_mixer),
6692};
6693
6694static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6695 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6696 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6697 msm_routing_put_audio_mixer),
6698 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6699 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6700 msm_routing_put_audio_mixer),
6701 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6702 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6703 msm_routing_put_audio_mixer),
6704 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6705 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6706 msm_routing_put_audio_mixer),
6707 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6708 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6709 msm_routing_put_audio_mixer),
6710 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6711 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6712 msm_routing_put_audio_mixer),
6713 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6714 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6715 msm_routing_put_audio_mixer),
6716 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6717 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6718 msm_routing_put_audio_mixer),
6719 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6720 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6721 msm_routing_put_audio_mixer),
6722 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6723 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6724 msm_routing_put_audio_mixer),
6725 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6726 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6727 msm_routing_put_audio_mixer),
6728 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6729 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6730 msm_routing_put_audio_mixer),
6731 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6732 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6733 msm_routing_put_audio_mixer),
6734 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6735 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6736 msm_routing_put_audio_mixer),
6737 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6738 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6739 msm_routing_put_audio_mixer),
6740 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6741 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6742 msm_routing_put_audio_mixer),
6743 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6744 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6745 msm_routing_put_audio_mixer),
6746};
6747
6748static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
6749 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6750 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6751 msm_routing_put_audio_mixer),
6752 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6753 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6754 msm_routing_put_audio_mixer),
6755 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6756 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6757 msm_routing_put_audio_mixer),
6758 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6759 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6760 msm_routing_put_audio_mixer),
6761 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6762 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6763 msm_routing_put_audio_mixer),
6764 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6765 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6766 msm_routing_put_audio_mixer),
6767 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6768 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6769 msm_routing_put_audio_mixer),
6770 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6771 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6772 msm_routing_put_audio_mixer),
6773 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6774 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6775 msm_routing_put_audio_mixer),
6776 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6777 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6778 msm_routing_put_audio_mixer),
6779 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6780 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6781 msm_routing_put_audio_mixer),
6782 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6783 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6784 msm_routing_put_audio_mixer),
6785 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6786 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6787 msm_routing_put_audio_mixer),
6788 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6789 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6790 msm_routing_put_audio_mixer),
6791 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6792 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6793 msm_routing_put_audio_mixer),
6794 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6795 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6796 msm_routing_put_audio_mixer),
6797 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6798 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6799 msm_routing_put_audio_mixer),
6800};
6801
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306802static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
6803 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
6804 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6805 msm_routing_put_audio_mixer),
6806 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6807 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6808 msm_routing_put_audio_mixer),
6809 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6810 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6811 msm_routing_put_audio_mixer),
6812 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6813 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6814 msm_routing_put_audio_mixer),
6815 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6816 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6817 msm_routing_put_audio_mixer),
6818 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6819 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6820 msm_routing_put_audio_mixer),
6821 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6822 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6823 msm_routing_put_audio_mixer),
6824 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6825 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6826 msm_routing_put_audio_mixer),
6827 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6828 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6829 msm_routing_put_audio_mixer),
6830 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6831 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6832 msm_routing_put_audio_mixer),
6833 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6834 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6835 msm_routing_put_audio_mixer),
6836 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6837 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6838 msm_routing_put_audio_mixer),
6839 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6840 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6841 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306842 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
6843 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6844 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306845 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6846 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6847 msm_routing_put_audio_mixer),
6848 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6849 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6850 msm_routing_put_audio_mixer),
6851 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6852 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6853 msm_routing_put_audio_mixer),
6854 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
6855 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6856 msm_routing_put_audio_mixer),
6857 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
6858 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6859 msm_routing_put_audio_mixer),
6860 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
6861 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6862 msm_routing_put_audio_mixer),
6863 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6864 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6865 msm_routing_put_audio_mixer),
6866 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6867 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6868 msm_routing_put_audio_mixer),
6869 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6870 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6871 msm_routing_put_audio_mixer),
6872 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6873 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6874 msm_routing_put_audio_mixer),
6875 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6876 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6877 msm_routing_put_audio_mixer),
6878 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6879 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6880 msm_routing_put_audio_mixer),
6881 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6882 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6883 msm_routing_put_audio_mixer),
6884 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6885 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6886 msm_routing_put_audio_mixer),
6887 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6888 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6889 msm_routing_put_audio_mixer),
6890 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6891 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6892 msm_routing_put_audio_mixer),
6893 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6894 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6895 msm_routing_put_audio_mixer),
6896 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6897 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6898 msm_routing_put_audio_mixer),
6899 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6900 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6901 msm_routing_put_audio_mixer),
6902 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
6903 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6904 msm_routing_put_audio_mixer),
6905 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6906 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6907 msm_routing_put_audio_mixer),
6908 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
6909 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6910 msm_routing_put_audio_mixer),
6911 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
6912 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6913 msm_routing_put_audio_mixer),
6914 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
6915 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6916 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306917 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6918 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6919 msm_routing_put_audio_mixer),
6920 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
6921 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6922 msm_routing_put_audio_mixer),
6923 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
6924 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6925 msm_routing_put_audio_mixer),
6926 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
6927 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6928 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306929 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
6930 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6931 msm_routing_put_audio_mixer),
6932 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
6933 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6934 msm_routing_put_audio_mixer),
6935 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
6936 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6937 msm_routing_put_audio_mixer),
6938};
6939
6940static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
6941 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6942 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6943 msm_routing_put_audio_mixer),
6944 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6945 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6946 msm_routing_put_audio_mixer),
6947 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6948 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6949 msm_routing_put_audio_mixer),
6950 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6951 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6952 msm_routing_put_audio_mixer),
6953 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6954 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6955 msm_routing_put_audio_mixer),
6956 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6957 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6958 msm_routing_put_audio_mixer),
6959 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6960 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6961 msm_routing_put_audio_mixer),
6962 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6963 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6964 msm_routing_put_audio_mixer),
6965 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6966 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6967 msm_routing_put_audio_mixer),
6968 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6969 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6970 msm_routing_put_audio_mixer),
6971 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
6972 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6973 msm_routing_put_audio_mixer),
6974 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6975 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6976 msm_routing_put_audio_mixer),
6977 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6978 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6979 msm_routing_put_audio_mixer),
6980 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6981 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6982 msm_routing_put_audio_mixer),
6983 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6984 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6985 msm_routing_put_audio_mixer),
6986 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6987 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6988 msm_routing_put_audio_mixer),
6989 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6990 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6991 msm_routing_put_audio_mixer),
6992 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6993 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6994 msm_routing_put_audio_mixer),
6995 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6996 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6997 msm_routing_put_audio_mixer),
6998 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6999 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7000 msm_routing_put_audio_mixer),
7001 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7002 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7003 msm_routing_put_audio_mixer),
7004 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7005 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7006 msm_routing_put_audio_mixer),
7007 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7008 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7009 msm_routing_put_audio_mixer),
7010 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7011 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7012 msm_routing_put_audio_mixer),
7013 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7014 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7015 msm_routing_put_audio_mixer),
7016 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7017 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7018 msm_routing_put_audio_mixer),
7019 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7020 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7021 msm_routing_put_audio_mixer),
7022 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7023 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7024 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307025 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7026 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7027 msm_routing_put_audio_mixer),
7028 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7029 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7030 msm_routing_put_audio_mixer),
7031 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7032 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7033 msm_routing_put_audio_mixer),
7034 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7035 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7036 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307037 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7038 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7039 msm_routing_put_audio_mixer),
7040 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7041 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7042 msm_routing_put_audio_mixer),
7043};
7044
7045static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7046 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7047 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7048 msm_routing_put_audio_mixer),
7049 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7050 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7051 msm_routing_put_audio_mixer),
7052 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7053 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7054 msm_routing_put_audio_mixer),
7055 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7056 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7057 msm_routing_put_audio_mixer),
7058 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7059 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7060 msm_routing_put_audio_mixer),
7061 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7062 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7063 msm_routing_put_audio_mixer),
7064 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7065 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7066 msm_routing_put_audio_mixer),
7067 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7068 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7069 msm_routing_put_audio_mixer),
7070 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7071 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7072 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307073 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7074 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7075 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307076 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7077 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7078 msm_routing_put_audio_mixer),
7079 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7080 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7081 msm_routing_put_audio_mixer),
7082 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7083 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7084 msm_routing_put_audio_mixer),
7085 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7086 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7087 msm_routing_put_audio_mixer),
7088 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7089 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7090 msm_routing_put_audio_mixer),
7091 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7092 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7093 msm_routing_put_audio_mixer),
7094 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7095 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7096 msm_routing_put_audio_mixer),
7097 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7098 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7099 msm_routing_put_audio_mixer),
7100 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7101 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7102 msm_routing_put_audio_mixer),
7103 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7104 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7105 msm_routing_put_audio_mixer),
7106 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7107 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7108 msm_routing_put_audio_mixer),
7109 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7110 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7111 msm_routing_put_audio_mixer),
7112 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7113 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7114 msm_routing_put_audio_mixer),
7115 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7116 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7117 msm_routing_put_audio_mixer),
7118 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7119 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7120 msm_routing_put_audio_mixer),
7121 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7122 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7123 msm_routing_put_audio_mixer),
7124 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7125 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7126 msm_routing_put_audio_mixer),
7127 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7128 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7129 msm_routing_put_audio_mixer),
7130 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7131 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7132 msm_routing_put_audio_mixer),
7133 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7134 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7135 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307136 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7137 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7138 msm_routing_put_audio_mixer),
7139 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7140 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7141 msm_routing_put_audio_mixer),
7142 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7143 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7144 msm_routing_put_audio_mixer),
7145 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7146 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7147 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307148};
7149
7150static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7151 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7152 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7153 msm_routing_put_audio_mixer),
7154 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7155 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7156 msm_routing_put_audio_mixer),
7157 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7158 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7159 msm_routing_put_audio_mixer),
7160 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7161 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7162 msm_routing_put_audio_mixer),
7163 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7164 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7165 msm_routing_put_audio_mixer),
7166 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7167 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7168 msm_routing_put_audio_mixer),
7169 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7170 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7171 msm_routing_put_audio_mixer),
7172 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7173 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7174 msm_routing_put_audio_mixer),
7175 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7176 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7177 msm_routing_put_audio_mixer),
7178 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7179 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7180 msm_routing_put_audio_mixer),
7181 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7182 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7183 msm_routing_put_audio_mixer),
7184 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7185 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7186 msm_routing_put_audio_mixer),
7187 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7188 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7189 msm_routing_put_audio_mixer),
7190 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7191 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7192 msm_routing_put_audio_mixer),
7193 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7194 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7195 msm_routing_put_audio_mixer),
7196 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7197 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7198 msm_routing_put_audio_mixer),
7199 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7200 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7201 msm_routing_put_audio_mixer),
7202 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7203 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7204 msm_routing_put_audio_mixer),
7205 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7206 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7207 msm_routing_put_audio_mixer),
7208 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7209 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7210 msm_routing_put_audio_mixer),
7211 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7212 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7213 msm_routing_put_audio_mixer),
7214 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7215 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7216 msm_routing_put_audio_mixer),
7217 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7218 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7219 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307220 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7221 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7222 msm_routing_put_audio_mixer),
7223 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7224 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7225 msm_routing_put_audio_mixer),
7226 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7227 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7228 msm_routing_put_audio_mixer),
7229 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7230 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7231 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307232 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7233 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7234 msm_routing_put_audio_mixer),
7235 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7236 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7237 msm_routing_put_audio_mixer),
7238 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7239 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7240 msm_routing_put_audio_mixer),
7241 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7242 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7243 msm_routing_put_audio_mixer),
7244 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7245 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7246 msm_routing_put_audio_mixer),
7247 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7248 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7249 msm_routing_put_audio_mixer),
7250};
7251
7252static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7253 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7254 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7255 msm_routing_put_audio_mixer),
7256 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7257 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7258 msm_routing_put_audio_mixer),
7259 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7260 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7261 msm_routing_put_audio_mixer),
7262 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7263 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7264 msm_routing_put_audio_mixer),
7265 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7266 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7267 msm_routing_put_audio_mixer),
7268 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7269 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7270 msm_routing_put_audio_mixer),
7271 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7272 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7273 msm_routing_put_audio_mixer),
7274 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7275 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7276 msm_routing_put_audio_mixer),
7277 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7278 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7279 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307280 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7281 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7282 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307283 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7284 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7285 msm_routing_put_audio_mixer),
7286 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7287 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7288 msm_routing_put_audio_mixer),
7289 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7290 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7291 msm_routing_put_audio_mixer),
7292 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7293 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7294 msm_routing_put_audio_mixer),
7295 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7296 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7297 msm_routing_put_audio_mixer),
7298 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7299 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7300 msm_routing_put_audio_mixer),
7301 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7302 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7303 msm_routing_put_audio_mixer),
7304 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7305 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7306 msm_routing_put_audio_mixer),
7307 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7308 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7309 msm_routing_put_audio_mixer),
7310 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7311 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7312 msm_routing_put_audio_mixer),
7313 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7314 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7315 msm_routing_put_audio_mixer),
7316 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7317 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7318 msm_routing_put_audio_mixer),
7319 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7320 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7321 msm_routing_put_audio_mixer),
7322 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7323 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7324 msm_routing_put_audio_mixer),
7325 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7326 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7327 msm_routing_put_audio_mixer),
7328 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7329 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7330 msm_routing_put_audio_mixer),
7331 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7332 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7333 msm_routing_put_audio_mixer),
7334 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7335 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7336 msm_routing_put_audio_mixer),
7337 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7338 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7339 msm_routing_put_audio_mixer),
7340 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7341 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7342 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307343 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7344 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7345 msm_routing_put_audio_mixer),
7346 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7347 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7348 msm_routing_put_audio_mixer),
7349 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7350 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7351 msm_routing_put_audio_mixer),
7352 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7353 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7354 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307355 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7356 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7357 msm_routing_put_audio_mixer),
7358 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7359 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7360 msm_routing_put_audio_mixer),
7361 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7362 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7363 msm_routing_put_audio_mixer),
7364 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7365 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7366 msm_routing_put_audio_mixer),
7367 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7368 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7369 msm_routing_put_audio_mixer),
7370};
7371
7372static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7373 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7374 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7375 msm_routing_put_audio_mixer),
7376 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7377 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7378 msm_routing_put_audio_mixer),
7379 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7380 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7381 msm_routing_put_audio_mixer),
7382 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7383 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7384 msm_routing_put_audio_mixer),
7385 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7386 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7387 msm_routing_put_audio_mixer),
7388 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7389 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7390 msm_routing_put_audio_mixer),
7391 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7392 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7393 msm_routing_put_audio_mixer),
7394 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7395 MSM_FRONTEND_DAI_MULTIMEDIA6, 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_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7398 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7399 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307400 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7401 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7402 msm_routing_put_audio_mixer),
7403 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7404 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7405 msm_routing_put_audio_mixer),
7406 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7407 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7408 msm_routing_put_audio_mixer),
7409 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7410 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7411 msm_routing_put_audio_mixer),
7412 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7413 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7414 msm_routing_put_audio_mixer),
7415 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7416 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7417 msm_routing_put_audio_mixer),
7418 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7419 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7420 msm_routing_put_audio_mixer),
7421 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7422 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7423 msm_routing_put_audio_mixer),
7424 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7425 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7426 msm_routing_put_audio_mixer),
7427 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7428 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7429 msm_routing_put_audio_mixer),
7430 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7431 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7432 msm_routing_put_audio_mixer),
7433 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7434 MSM_FRONTEND_DAI_MULTIMEDIA6, 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_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7438 msm_routing_put_audio_mixer),
7439 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7440 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7441 msm_routing_put_audio_mixer),
7442 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7443 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7444 msm_routing_put_audio_mixer),
7445 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7446 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7447 msm_routing_put_audio_mixer),
7448 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7449 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7450 msm_routing_put_audio_mixer),
7451 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7452 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7453 msm_routing_put_audio_mixer),
7454 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7455 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7456 msm_routing_put_audio_mixer),
7457 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7458 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7459 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307460 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7461 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7462 msm_routing_put_audio_mixer),
7463 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7464 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7465 msm_routing_put_audio_mixer),
7466 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7467 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7468 msm_routing_put_audio_mixer),
7469 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7470 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7471 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307472 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7473 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7474 msm_routing_put_audio_mixer),
7475};
7476
7477static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7478 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7479 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7480 msm_routing_put_audio_mixer),
7481 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7482 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7483 msm_routing_put_audio_mixer),
7484 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7485 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7486 msm_routing_put_audio_mixer),
7487 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7488 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7489 msm_routing_put_audio_mixer),
7490 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7491 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7492 msm_routing_put_audio_mixer),
7493 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7494 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7495 msm_routing_put_audio_mixer),
7496 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7497 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7498 msm_routing_put_audio_mixer),
7499 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7500 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7501 msm_routing_put_audio_mixer),
7502 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7503 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7504 msm_routing_put_audio_mixer),
7505 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7506 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7507 msm_routing_put_audio_mixer),
7508 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7509 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7510 msm_routing_put_audio_mixer),
7511 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7512 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7513 msm_routing_put_audio_mixer),
7514 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7515 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7516 msm_routing_put_audio_mixer),
7517 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7518 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7519 msm_routing_put_audio_mixer),
7520 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7521 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7522 msm_routing_put_audio_mixer),
7523 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7524 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7525 msm_routing_put_audio_mixer),
7526 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7527 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7528 msm_routing_put_audio_mixer),
7529 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7530 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7531 msm_routing_put_audio_mixer),
7532 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7533 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7534 msm_routing_put_audio_mixer),
7535 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7536 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7537 msm_routing_put_audio_mixer),
7538 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7539 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7540 msm_routing_put_audio_mixer),
7541 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7542 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7543 msm_routing_put_audio_mixer),
7544 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7545 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7546 msm_routing_put_audio_mixer),
7547 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7548 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7549 msm_routing_put_audio_mixer),
7550 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7551 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7552 msm_routing_put_audio_mixer),
7553 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7554 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7555 msm_routing_put_audio_mixer),
7556 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7557 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7558 msm_routing_put_audio_mixer),
7559 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7560 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7561 msm_routing_put_audio_mixer),
7562 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7563 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7564 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307565 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7566 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7567 msm_routing_put_audio_mixer),
7568 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7569 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7570 msm_routing_put_audio_mixer),
7571 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7572 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7573 msm_routing_put_audio_mixer),
7574 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7575 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7576 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307577 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7578 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7579 msm_routing_put_audio_mixer),
7580 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7581 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7582 msm_routing_put_audio_mixer),
7583};
7584
Asish Bhattacharya34504582017-08-08 12:55:01 +05307585static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7586 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7587 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7588 msm_routing_put_audio_mixer),
7589 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7590 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7591 msm_routing_put_audio_mixer),
7592 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7593 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7594 msm_routing_put_audio_mixer),
7595 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7596 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7597 msm_routing_put_audio_mixer),
7598 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7599 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7600 msm_routing_put_audio_mixer),
7601 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7602 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7603 msm_routing_put_audio_mixer),
7604 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7605 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7606 msm_routing_put_audio_mixer),
7607 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7608 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7609 msm_routing_put_audio_mixer),
7610 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7611 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7612 msm_routing_put_audio_mixer),
7613 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7614 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7615 msm_routing_put_audio_mixer),
7616 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7617 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7618 msm_routing_put_audio_mixer),
7619 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7620 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7621 msm_routing_put_audio_mixer),
7622 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7623 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7624 msm_routing_put_audio_mixer),
7625 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7626 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7627 msm_routing_put_audio_mixer),
7628 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7629 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7630 msm_routing_put_audio_mixer),
7631 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7632 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7633 msm_routing_put_audio_mixer),
7634 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7635 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7636 msm_routing_put_audio_mixer),
7637 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7638 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7639 msm_routing_put_audio_mixer),
7640 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7641 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7642 msm_routing_put_audio_mixer),
7643 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7644 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7645 msm_routing_put_audio_mixer),
7646 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7647 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7648 msm_routing_put_audio_mixer),
7649 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7650 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7651 msm_routing_put_audio_mixer),
7652 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7653 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7654 msm_routing_put_audio_mixer),
7655 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7656 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7657 msm_routing_put_audio_mixer),
7658 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7659 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7660 msm_routing_put_audio_mixer),
7661 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7662 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7663 msm_routing_put_audio_mixer),
7664 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7665 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7666 msm_routing_put_audio_mixer),
7667 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7668 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7669 msm_routing_put_audio_mixer),
7670 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7671 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7672 msm_routing_put_audio_mixer),
7673 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7674 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7675 msm_routing_put_audio_mixer),
7676 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7677 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7678 msm_routing_put_audio_mixer),
7679 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7680 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7681 msm_routing_put_audio_mixer),
7682 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7683 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7684 msm_routing_put_audio_mixer),
7685 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7686 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7687 msm_routing_put_audio_mixer),
7688 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7689 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7690 msm_routing_put_audio_mixer),
7691};
7692
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307693static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7694 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7695 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7696 msm_routing_put_audio_mixer),
7697 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7698 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7699 msm_routing_put_audio_mixer),
7700 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7701 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7702 msm_routing_put_audio_mixer),
7703 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7704 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7705 msm_routing_put_audio_mixer),
7706 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7707 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7708 msm_routing_put_audio_mixer),
7709 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7710 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7711 msm_routing_put_audio_mixer),
7712 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7713 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7714 msm_routing_put_audio_mixer),
7715 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7716 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7717 msm_routing_put_audio_mixer),
7718 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7719 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7720 msm_routing_put_audio_mixer),
7721 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7722 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7723 msm_routing_put_audio_mixer),
7724 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7725 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7726 msm_routing_put_audio_mixer),
7727 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7728 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7729 msm_routing_put_audio_mixer),
7730 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7731 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7732 msm_routing_put_audio_mixer),
7733 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7734 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7735 msm_routing_put_audio_mixer),
7736 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7737 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7738 msm_routing_put_audio_mixer),
7739 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7740 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7741 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307742 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7743 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7744 msm_routing_put_audio_mixer),
7745 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7746 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7747 msm_routing_put_audio_mixer),
7748 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7749 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7750 msm_routing_put_audio_mixer),
7751 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7752 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7753 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307754};
7755
Laxminath Kasam38070be2017-08-17 18:21:59 +05307756static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
7757 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7758 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7759 msm_routing_put_audio_mixer),
7760 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7761 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7762 msm_routing_put_audio_mixer),
7763 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7764 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7765 msm_routing_put_audio_mixer),
7766 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7767 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7768 msm_routing_put_audio_mixer),
7769 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7770 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7771 msm_routing_put_audio_mixer),
7772 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7773 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7774 msm_routing_put_audio_mixer),
7775 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7776 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7777 msm_routing_put_audio_mixer),
7778 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7779 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7780 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07007781 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7782 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7783 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307784 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7785 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7786 msm_routing_put_audio_mixer),
7787 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7788 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7789 msm_routing_put_audio_mixer),
7790 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7791 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7792 msm_routing_put_audio_mixer),
7793 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7794 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7795 msm_routing_put_audio_mixer),
7796 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7797 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7798 msm_routing_put_audio_mixer),
7799 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7800 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7801 msm_routing_put_audio_mixer),
7802 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7803 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7804 msm_routing_put_audio_mixer),
7805 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7806 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7807 msm_routing_put_audio_mixer),
7808 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7809 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7810 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007811 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7812 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7813 msm_routing_put_audio_mixer),
7814 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7815 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7816 msm_routing_put_audio_mixer),
7817 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7818 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7819 msm_routing_put_audio_mixer),
7820 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7821 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7822 msm_routing_put_audio_mixer),
7823 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7824 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7825 msm_routing_put_audio_mixer),
7826 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7827 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7828 msm_routing_put_audio_mixer),
7829 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7830 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7831 msm_routing_put_audio_mixer),
7832 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7833 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7834 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307835};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307836static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
7837 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7838 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7839 msm_routing_put_audio_mixer),
7840 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7841 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7842 msm_routing_put_audio_mixer),
7843 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7844 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7845 msm_routing_put_audio_mixer),
7846 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7847 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7848 msm_routing_put_audio_mixer),
7849 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7850 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7851 msm_routing_put_audio_mixer),
7852 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7853 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7854 msm_routing_put_audio_mixer),
7855 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7856 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7857 msm_routing_put_audio_mixer),
7858};
7859
7860static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
7861 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7862 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7863 msm_routing_put_audio_mixer),
7864 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7865 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7866 msm_routing_put_audio_mixer),
7867 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7868 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7869 msm_routing_put_audio_mixer),
7870 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7871 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7872 msm_routing_put_audio_mixer),
7873 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7874 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7875 msm_routing_put_audio_mixer),
7876 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7877 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7878 msm_routing_put_audio_mixer),
7879 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7880 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7881 msm_routing_put_audio_mixer),
7882 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7883 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7884 msm_routing_put_audio_mixer),
7885};
7886
7887static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
7888 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7889 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7890 msm_routing_put_audio_mixer),
7891 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7892 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7893 msm_routing_put_audio_mixer),
7894 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7895 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7896 msm_routing_put_audio_mixer),
7897 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7898 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7899 msm_routing_put_audio_mixer),
7900 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7901 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7902 msm_routing_put_audio_mixer),
7903 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7904 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7905 msm_routing_put_audio_mixer),
7906 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7907 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7908 msm_routing_put_audio_mixer),
7909};
7910
7911static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
7912 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7913 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7914 msm_routing_put_audio_mixer),
7915 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7916 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7917 msm_routing_put_audio_mixer),
7918 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7919 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7920 msm_routing_put_audio_mixer),
7921 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7922 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7923 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307924 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7925 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7926 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307927 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7928 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7929 msm_routing_put_audio_mixer),
7930 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7931 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7932 msm_routing_put_audio_mixer),
7933 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7934 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7935 msm_routing_put_audio_mixer),
7936 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7937 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7938 msm_routing_put_audio_mixer),
7939 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7940 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7941 msm_routing_put_audio_mixer),
7942 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7943 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7944 msm_routing_put_audio_mixer),
7945 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7946 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7947 msm_routing_put_audio_mixer),
7948 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7949 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7950 msm_routing_put_audio_mixer),
7951 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7952 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7953 msm_routing_put_audio_mixer),
7954 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7955 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7956 msm_routing_put_audio_mixer),
7957 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7958 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7959 msm_routing_put_audio_mixer),
7960 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7961 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7962 msm_routing_put_audio_mixer),
7963 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7964 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7965 msm_routing_put_audio_mixer),
7966 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7967 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7968 msm_routing_put_audio_mixer),
7969 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7970 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7971 msm_routing_put_audio_mixer),
7972 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7973 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7974 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307975 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7976 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7977 msm_routing_put_audio_mixer),
7978 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7979 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7980 msm_routing_put_audio_mixer),
7981 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7982 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7983 msm_routing_put_audio_mixer),
7984 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7985 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7986 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307987};
7988
7989static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
7990 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_PRI_I2S_RX,
7991 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7992 msm_routing_put_voice_mixer),
7993 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_PRI_I2S_RX,
7994 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7995 msm_routing_put_voice_mixer),
7996 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
7997 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7998 msm_routing_put_voice_mixer),
7999 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_PRI_I2S_RX,
8000 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8001 msm_routing_put_voice_mixer),
8002 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_PRI_I2S_RX,
8003 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8004 msm_routing_put_voice_mixer),
8005 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
8006 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8007 msm_routing_put_voice_mixer),
8008 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
8009 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8010 msm_routing_put_voice_mixer),
8011 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
8012 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8013 msm_routing_put_voice_mixer),
8014 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
8015 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8016 msm_routing_put_voice_mixer),
8017};
8018
8019static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
8020 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_SEC_I2S_RX,
8021 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8022 msm_routing_put_voice_mixer),
8023 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_SEC_I2S_RX,
8024 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8025 msm_routing_put_voice_mixer),
8026 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
8027 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8028 msm_routing_put_voice_mixer),
8029 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_SEC_I2S_RX,
8030 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8031 msm_routing_put_voice_mixer),
8032 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_SEC_I2S_RX,
8033 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8034 msm_routing_put_voice_mixer),
8035 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
8036 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8037 msm_routing_put_voice_mixer),
8038 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
8039 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8040 msm_routing_put_voice_mixer),
8041};
8042
8043static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
8044 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8045 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8046 msm_routing_put_voice_mixer),
8047 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8048 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8049 msm_routing_put_voice_mixer),
8050 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8051 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8052 msm_routing_put_voice_mixer),
8053 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8054 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8055 msm_routing_put_voice_mixer),
8056 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8057 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8058 msm_routing_put_voice_mixer),
8059 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8060 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8061 msm_routing_put_voice_mixer),
8062 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8063 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8064 msm_routing_put_voice_mixer),
8065 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8066 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8067 msm_routing_put_voice_mixer),
8068 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8069 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8070 msm_routing_put_voice_mixer),
8071};
8072
8073static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
8074 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8075 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8076 msm_routing_put_voice_mixer),
8077 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8078 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8079 msm_routing_put_voice_mixer),
8080 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8081 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8082 msm_routing_put_voice_mixer),
8083 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8084 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8085 msm_routing_put_voice_stub_mixer),
8086 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8087 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8088 msm_routing_put_voice_stub_mixer),
8089 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8090 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8091 msm_routing_put_voice_mixer),
8092 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8093 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8094 msm_routing_put_voice_stub_mixer),
8095 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8096 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8097 msm_routing_put_voice_mixer),
8098 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8099 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8100 msm_routing_put_voice_mixer),
8101 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8102 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8103 msm_routing_put_voice_mixer),
8104 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8105 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8106 msm_routing_put_voice_mixer),
8107 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8108 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8109 msm_routing_put_voice_mixer),
8110};
8111
8112static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
8113 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8114 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8115 msm_routing_put_voice_mixer),
8116 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8117 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8118 msm_routing_put_voice_mixer),
8119 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8120 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8121 msm_routing_put_voice_mixer),
8122 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8123 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8124 msm_routing_put_voice_stub_mixer),
8125 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8126 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8127 msm_routing_put_voice_stub_mixer),
8128 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8129 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8130 msm_routing_put_voice_mixer),
8131 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8132 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8133 msm_routing_put_voice_stub_mixer),
8134 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8135 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8136 msm_routing_put_voice_mixer),
8137 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8138 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8139 msm_routing_put_voice_mixer),
8140 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8141 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8142 msm_routing_put_voice_mixer),
8143 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8144 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8145 msm_routing_put_voice_mixer),
8146 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8147 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8148 msm_routing_put_voice_mixer),
8149};
8150
8151static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
8152 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_USB_RX,
8153 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8154 msm_routing_put_voice_mixer),
8155 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_USB_RX,
8156 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8157 msm_routing_put_voice_mixer),
8158 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8159 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8160 msm_routing_put_voice_mixer),
8161 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_USB_RX,
8162 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8163 msm_routing_put_voice_stub_mixer),
8164 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_USB_RX,
8165 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8166 msm_routing_put_voice_stub_mixer),
8167 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_USB_RX,
8168 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8169 msm_routing_put_voice_mixer),
8170 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_USB_RX,
8171 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8172 msm_routing_put_voice_stub_mixer),
8173 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_USB_RX,
8174 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8175 msm_routing_put_voice_mixer),
8176 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8177 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8178 msm_routing_put_voice_mixer),
8179 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8180 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8181 msm_routing_put_voice_mixer),
8182 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8183 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8184 msm_routing_put_voice_mixer),
8185 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8186 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8187 msm_routing_put_voice_mixer),
8188};
8189
8190static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
8191 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8192 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8193 msm_routing_put_voice_mixer),
8194 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8195 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8196 msm_routing_put_voice_mixer),
8197 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8198 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8199 msm_routing_put_voice_mixer),
8200 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8201 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8202 msm_routing_put_voice_stub_mixer),
8203 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8204 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8205 msm_routing_put_voice_stub_mixer),
8206 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8207 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8208 msm_routing_put_voice_mixer),
8209 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8210 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8211 msm_routing_put_voice_mixer),
8212 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8213 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8214 msm_routing_put_voice_mixer),
8215 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8216 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8217 msm_routing_put_voice_mixer),
8218 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8219 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8220 msm_routing_put_voice_mixer),
8221 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8222 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8223 msm_routing_put_voice_mixer),
8224};
8225
8226static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
8227 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_MI2S_RX,
8228 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8229 msm_routing_put_voice_mixer),
8230 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_MI2S_RX,
8231 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8232 msm_routing_put_voice_mixer),
8233 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8234 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8235 msm_routing_put_voice_mixer),
8236 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_MI2S_RX,
8237 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8238 msm_routing_put_voice_stub_mixer),
8239 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_MI2S_RX,
8240 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8241 msm_routing_put_voice_mixer),
8242 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_MI2S_RX,
8243 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8244 msm_routing_put_voice_mixer),
8245 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8246 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8247 msm_routing_put_voice_mixer),
8248 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8249 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8250 msm_routing_put_voice_mixer),
8251 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8252 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8253 msm_routing_put_voice_mixer),
8254 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8255 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8256 msm_routing_put_voice_mixer),
8257};
8258
8259static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
8260 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_PRI_MI2S_RX,
8261 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8262 msm_routing_put_voice_mixer),
8263 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8264 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8265 msm_routing_put_voice_mixer),
8266 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8267 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8268 msm_routing_put_voice_mixer),
8269 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_MI2S_RX,
8270 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8271 msm_routing_put_voice_stub_mixer),
8272 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_MI2S_RX,
8273 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8274 msm_routing_put_voice_stub_mixer),
8275 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_PRI_MI2S_RX,
8276 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8277 msm_routing_put_voice_mixer),
8278 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_MI2S_RX,
8279 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8280 msm_routing_put_voice_mixer),
8281 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_PRI_MI2S_RX,
8282 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8283 msm_routing_put_voice_mixer),
8284 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8285 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8286 msm_routing_put_voice_mixer),
8287 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8288 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8289 msm_routing_put_voice_mixer),
8290 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8291 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8292 msm_routing_put_voice_mixer),
8293 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8294 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8295 msm_routing_put_voice_mixer),
8296};
8297
8298static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8299 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8300 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8301 msm_routing_put_voice_mixer),
8302 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8303 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8304 msm_routing_put_voice_mixer),
8305 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8306 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8307 msm_routing_put_voice_mixer),
8308 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8309 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8310 msm_routing_put_voice_mixer),
8311 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8312 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8313 msm_routing_put_voice_mixer),
8314};
8315
8316static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8317 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8318 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8319 msm_routing_put_voice_mixer),
8320 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8321 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8322 msm_routing_put_voice_mixer),
8323 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8324 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8325 msm_routing_put_voice_mixer),
8326 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8327 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8328 msm_routing_put_voice_mixer),
8329 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8330 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8331 msm_routing_put_voice_mixer),
8332};
8333
8334static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
8335 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8336 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8337 msm_routing_put_voice_mixer),
8338 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8339 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8340 msm_routing_put_voice_mixer),
8341 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8342 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8343 msm_routing_put_voice_mixer),
8344 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8345 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8346 msm_routing_put_voice_stub_mixer),
8347 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8348 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8349 msm_routing_put_voice_stub_mixer),
8350 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8351 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8352 msm_routing_put_voice_mixer),
8353 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8354 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8355 msm_routing_put_voice_mixer),
8356 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8357 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8358 msm_routing_put_voice_mixer),
8359 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8360 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8361 msm_routing_put_voice_mixer),
8362 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8363 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8364 msm_routing_put_voice_mixer),
8365 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_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_TERTIARY_MI2S_RX,
8369 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8370 msm_routing_put_voice_mixer),
8371};
8372
8373static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
8374 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8375 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8376 msm_routing_put_voice_mixer),
8377 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8378 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8379 msm_routing_put_voice_mixer),
8380 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8381 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8382 msm_routing_put_voice_mixer),
8383 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8384 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8385 msm_routing_put_voice_stub_mixer),
8386 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8387 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8388 msm_routing_put_voice_stub_mixer),
8389 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8390 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8391 msm_routing_put_voice_mixer),
8392 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8393 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8394 msm_routing_put_voice_mixer),
8395 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8396 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8397 msm_routing_put_voice_mixer),
8398 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8399 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8400 msm_routing_put_voice_mixer),
8401 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8402 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8403 msm_routing_put_voice_mixer),
8404 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8405 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8406 msm_routing_put_voice_mixer),
8407 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8408 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8409 msm_routing_put_voice_mixer),
8410};
8411
8412static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
8413 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8414 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8415 msm_routing_put_voice_mixer),
8416 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8417 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8418 msm_routing_put_voice_mixer),
8419 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8420 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8421 msm_routing_put_voice_mixer),
8422 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8423 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8424 msm_routing_put_voice_stub_mixer),
8425 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8426 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8427 msm_routing_put_voice_stub_mixer),
8428 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8429 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8430 msm_routing_put_voice_mixer),
8431 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8432 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8433 msm_routing_put_voice_mixer),
8434 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8435 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8436 msm_routing_put_voice_mixer),
8437 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8438 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8439 msm_routing_put_voice_mixer),
8440 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8441 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8442 msm_routing_put_voice_mixer),
8443 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8444 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8445 msm_routing_put_voice_mixer),
8446 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8447 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8448 msm_routing_put_voice_mixer),
8449};
8450
8451static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
8452 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_AFE_PCM_RX,
8453 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8454 msm_routing_put_voice_mixer),
8455 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_AFE_PCM_RX,
8456 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8457 msm_routing_put_voice_mixer),
8458 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8459 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8460 msm_routing_put_voice_mixer),
8461 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_AFE_PCM_RX,
8462 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8463 msm_routing_put_voice_stub_mixer),
8464 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_AFE_PCM_RX,
8465 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8466 msm_routing_put_voice_stub_mixer),
8467 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_AFE_PCM_RX,
8468 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8469 msm_routing_put_voice_mixer),
8470 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_AFE_PCM_RX,
8471 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8472 msm_routing_put_voice_stub_mixer),
8473 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_AFE_PCM_RX,
8474 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8475 msm_routing_put_voice_mixer),
8476 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8477 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8478 msm_routing_put_voice_mixer),
8479 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8480 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8481 msm_routing_put_voice_mixer),
8482 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8483 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8484 msm_routing_put_voice_mixer),
8485 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8486 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8487 msm_routing_put_voice_mixer),
8488};
8489
8490static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
8491 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_AUXPCM_RX,
8492 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8493 msm_routing_put_voice_mixer),
8494 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_AUXPCM_RX,
8495 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8496 msm_routing_put_voice_mixer),
8497 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8498 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8499 msm_routing_put_voice_mixer),
8500 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_AUXPCM_RX,
8501 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8502 msm_routing_put_voice_stub_mixer),
8503 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_AUXPCM_RX,
8504 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8505 msm_routing_put_voice_stub_mixer),
8506 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_AUXPCM_RX,
8507 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8508 msm_routing_put_voice_mixer),
8509 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_AUXPCM_RX,
8510 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8511 msm_routing_put_voice_stub_mixer),
8512 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_AUXPCM_RX,
8513 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8514 msm_routing_put_voice_mixer),
8515 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8516 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8517 msm_routing_put_voice_mixer),
8518 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8519 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8520 msm_routing_put_voice_mixer),
8521 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8522 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8523 msm_routing_put_voice_mixer),
8524 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8525 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8526 msm_routing_put_voice_mixer),
8527};
8528
8529static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
8530 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8531 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8532 msm_routing_put_voice_mixer),
8533 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8534 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8535 msm_routing_put_voice_mixer),
8536 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8537 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8538 msm_routing_put_voice_mixer),
8539 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8540 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8541 msm_routing_put_voice_stub_mixer),
8542 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8543 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8544 msm_routing_put_voice_mixer),
8545 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8546 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8547 msm_routing_put_voice_mixer),
8548 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8549 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8550 msm_routing_put_voice_mixer),
8551 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8552 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8553 msm_routing_put_voice_mixer),
8554 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8555 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8556 msm_routing_put_voice_mixer),
8557 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8558 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8559 msm_routing_put_voice_mixer),
8560};
8561
8562static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
8563 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8564 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8565 msm_routing_put_voice_mixer),
8566 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8567 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8568 msm_routing_put_voice_mixer),
8569 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8570 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8571 msm_routing_put_voice_mixer),
8572 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8573 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8574 msm_routing_put_voice_stub_mixer),
8575 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8576 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8577 msm_routing_put_voice_mixer),
8578 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8579 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8580 msm_routing_put_voice_mixer),
8581 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8582 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8583 msm_routing_put_voice_mixer),
8584 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8585 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8586 msm_routing_put_voice_mixer),
8587 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8588 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8589 msm_routing_put_voice_mixer),
8590 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8591 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8592 msm_routing_put_voice_mixer),
8593};
8594
8595static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
8596 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8597 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8598 msm_routing_put_voice_mixer),
8599 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8600 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8601 msm_routing_put_voice_mixer),
8602 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8603 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8604 msm_routing_put_voice_mixer),
8605 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8606 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8607 msm_routing_put_voice_stub_mixer),
8608 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8609 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8610 msm_routing_put_voice_mixer),
8611 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8612 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8613 msm_routing_put_voice_mixer),
8614 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8615 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8616 msm_routing_put_voice_mixer),
8617 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8618 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8619 msm_routing_put_voice_mixer),
8620 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8621 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8622 msm_routing_put_voice_mixer),
8623 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8624 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8625 msm_routing_put_voice_mixer),
8626};
8627
Rohit Kumara5077932017-09-10 22:05:05 +05308628static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
8629 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8630 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8631 msm_routing_put_voice_mixer),
8632 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8633 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8634 msm_routing_put_voice_mixer),
8635 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8636 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8637 msm_routing_put_voice_mixer),
8638 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8639 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8640 msm_routing_put_voice_stub_mixer),
8641 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8642 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8643 msm_routing_put_voice_mixer),
8644 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8645 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8646 msm_routing_put_voice_mixer),
8647 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_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_QUIN_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_QUIN_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_QUIN_AUXPCM_RX,
8657 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8658 msm_routing_put_voice_mixer),
8659};
8660
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308661static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
8662 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_HDMI_RX,
8663 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8664 msm_routing_put_voice_mixer),
8665 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_HDMI_RX,
8666 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8667 msm_routing_put_voice_mixer),
8668 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8669 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8670 msm_routing_put_voice_mixer),
8671 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_HDMI_RX,
8672 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8673 msm_routing_put_voice_mixer),
8674 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_HDMI_RX,
8675 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8676 msm_routing_put_voice_mixer),
8677 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_HDMI_RX,
8678 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8679 msm_routing_put_voice_stub_mixer),
8680 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_HDMI_RX,
8681 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8682 msm_routing_put_voice_stub_mixer),
8683 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_HDMI_RX,
8684 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8685 msm_routing_put_voice_stub_mixer),
8686 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8687 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8688 msm_routing_put_voice_mixer),
8689 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8690 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8691 msm_routing_put_voice_mixer),
8692 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8693 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8694 msm_routing_put_voice_mixer),
8695 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8696 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8697 msm_routing_put_voice_mixer),
8698};
8699
8700static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
8701 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8702 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8703 msm_routing_put_voice_mixer),
8704 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8705 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8706 msm_routing_put_voice_mixer),
8707 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8708 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8709 msm_routing_put_voice_mixer),
8710 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8711 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8712 msm_routing_put_voice_stub_mixer),
8713 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8714 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8715 msm_routing_put_voice_stub_mixer),
8716 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8717 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8718 msm_routing_put_voice_mixer),
8719 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8720 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8721 msm_routing_put_voice_stub_mixer),
8722 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8723 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8724 msm_routing_put_voice_mixer),
8725 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8726 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8727 msm_routing_put_voice_mixer),
8728 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8729 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8730 msm_routing_put_voice_mixer),
8731 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8732 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8733 msm_routing_put_voice_mixer),
8734 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8735 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8736 msm_routing_put_voice_mixer),
8737};
8738
8739static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
8740 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8741 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8742 msm_routing_put_voice_mixer),
8743 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8744 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8745 msm_routing_put_voice_mixer),
8746 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8747 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8748 msm_routing_put_voice_mixer),
8749 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8750 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8751 msm_routing_put_voice_stub_mixer),
8752 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8753 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8754 msm_routing_put_voice_stub_mixer),
8755 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8756 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8757 msm_routing_put_voice_mixer),
8758 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8759 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8760 msm_routing_put_voice_stub_mixer),
8761 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8762 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8763 msm_routing_put_voice_mixer),
8764 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
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_SLIMBUS_8_RX,
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_SLIMBUS_8_RX,
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_SLIMBUS_8_RX,
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 quat_tdm_rx_2_voice_mixer_controls[] = {
8779 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8780 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8781 msm_routing_put_voice_mixer),
8782};
8783
8784static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
8785 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_EXTPROC_RX,
8786 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8787 msm_routing_put_voice_stub_mixer),
8788 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_EXTPROC_RX,
8789 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8790 msm_routing_put_voice_stub_mixer),
8791 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_EXTPROC_RX,
8792 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8793 msm_routing_put_voice_stub_mixer),
8794};
8795
8796static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
8797 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8798 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8799 msm_routing_put_voice_stub_mixer),
8800 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8801 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8802 msm_routing_put_voice_stub_mixer),
8803 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8804 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8805 msm_routing_put_voice_stub_mixer),
8806};
8807
8808static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
8809 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_3_RX,
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_SLIMBUS_3_RX,
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_SLIMBUS_3_RX,
8816 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8817 msm_routing_put_voice_stub_mixer),
8818};
8819
8820static const struct snd_kcontrol_new tx_voice_mixer_controls[] = {
8821 SOC_SINGLE_EXT("PRI_TX_Voice", MSM_BACKEND_DAI_PRI_I2S_TX,
8822 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8823 msm_routing_put_voice_mixer),
8824 SOC_SINGLE_EXT("MI2S_TX_Voice", MSM_BACKEND_DAI_MI2S_TX,
8825 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8826 msm_routing_put_voice_mixer),
8827 SOC_SINGLE_EXT("SLIM_0_TX_Voice", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8828 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8829 msm_routing_put_voice_mixer),
8830 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voice",
8831 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_CS_VOICE, 1, 0,
8832 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8833 SOC_SINGLE_EXT("AFE_PCM_TX_Voice", MSM_BACKEND_DAI_AFE_PCM_TX,
8834 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8835 msm_routing_put_voice_mixer),
8836 SOC_SINGLE_EXT("AUX_PCM_TX_Voice", MSM_BACKEND_DAI_AUXPCM_TX,
8837 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8838 msm_routing_put_voice_mixer),
8839 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voice", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8840 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8841 msm_routing_put_voice_mixer),
8842 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voice", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8843 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8844 msm_routing_put_voice_mixer),
8845 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voice", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8846 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8847 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308848 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voice", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8849 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8850 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308851 SOC_SINGLE_EXT("PRI_MI2S_TX_Voice", MSM_BACKEND_DAI_PRI_MI2S_TX,
8852 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8853 msm_routing_put_voice_mixer),
8854 SOC_SINGLE_EXT("SEC_MI2S_TX_Voice", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
8855 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8856 msm_routing_put_voice_mixer),
8857 SOC_SINGLE_EXT("TERT_MI2S_TX_Voice", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8858 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8859 msm_routing_put_voice_mixer),
8860 SOC_SINGLE_EXT("SLIM_7_TX_Voice", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8861 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8862 msm_routing_put_voice_mixer),
8863 SOC_SINGLE_EXT("SLIM_8_TX_Voice", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8864 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8865 msm_routing_put_voice_mixer),
8866 SOC_SINGLE_EXT("USB_AUDIO_TX_Voice", MSM_BACKEND_DAI_USB_TX,
8867 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8868 msm_routing_put_voice_mixer),
8869};
8870
8871static const struct snd_kcontrol_new tx_voice2_mixer_controls[] = {
8872 SOC_SINGLE_EXT("PRI_TX_Voice2", MSM_BACKEND_DAI_PRI_I2S_TX,
8873 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8874 msm_routing_put_voice_mixer),
8875 SOC_SINGLE_EXT("MI2S_TX_Voice2", MSM_BACKEND_DAI_MI2S_TX,
8876 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8877 msm_routing_put_voice_mixer),
8878 SOC_SINGLE_EXT("SLIM_0_TX_Voice2", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8879 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8880 msm_routing_put_voice_mixer),
8881 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voice2",
8882 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICE2, 1, 0,
8883 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8884 SOC_SINGLE_EXT("AFE_PCM_TX_Voice2", MSM_BACKEND_DAI_AFE_PCM_TX,
8885 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8886 msm_routing_put_voice_mixer),
8887 SOC_SINGLE_EXT("AUX_PCM_TX_Voice2", MSM_BACKEND_DAI_AUXPCM_TX,
8888 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8889 msm_routing_put_voice_mixer),
8890 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voice2", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8891 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8892 msm_routing_put_voice_mixer),
8893 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voice2", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8894 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8895 msm_routing_put_voice_mixer),
8896 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voice2", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8897 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8898 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308899 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voice2", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8900 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8901 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308902 SOC_SINGLE_EXT("PRI_MI2S_TX_Voice2", MSM_BACKEND_DAI_PRI_MI2S_TX,
8903 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8904 msm_routing_put_voice_mixer),
8905 SOC_SINGLE_EXT("TERT_MI2S_TX_Voice2", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8906 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8907 msm_routing_put_voice_mixer),
8908 SOC_SINGLE_EXT("SLIM_7_TX_Voice2", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8909 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8910 msm_routing_put_voice_mixer),
8911 SOC_SINGLE_EXT("SLIM_8_TX_Voice2", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8912 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8913 msm_routing_put_voice_mixer),
8914 SOC_SINGLE_EXT("USB_AUDIO_TX_Voice2", MSM_BACKEND_DAI_USB_TX,
8915 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8916 msm_routing_put_voice_mixer),
8917};
8918
8919static const struct snd_kcontrol_new tx_volte_mixer_controls[] = {
8920 SOC_SINGLE_EXT("PRI_TX_VoLTE", MSM_BACKEND_DAI_PRI_I2S_TX,
8921 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8922 msm_routing_put_voice_mixer),
8923 SOC_SINGLE_EXT("SLIM_0_TX_VoLTE", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8924 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8925 msm_routing_put_voice_mixer),
8926 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_VoLTE",
8927 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOLTE, 1, 0,
8928 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8929 SOC_SINGLE_EXT("AFE_PCM_TX_VoLTE", MSM_BACKEND_DAI_AFE_PCM_TX,
8930 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8931 msm_routing_put_voice_mixer),
8932 SOC_SINGLE_EXT("AUX_PCM_TX_VoLTE", MSM_BACKEND_DAI_AUXPCM_TX,
8933 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8934 msm_routing_put_voice_mixer),
8935 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_VoLTE", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8936 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8937 msm_routing_put_voice_mixer),
8938 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_VoLTE", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8939 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8940 msm_routing_put_voice_mixer),
8941 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_VoLTE", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8942 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8943 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308944 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_VoLTE", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8945 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8946 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308947 SOC_SINGLE_EXT("MI2S_TX_VoLTE", MSM_BACKEND_DAI_MI2S_TX,
8948 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8949 msm_routing_put_voice_mixer),
8950 SOC_SINGLE_EXT("PRI_MI2S_TX_VoLTE", MSM_BACKEND_DAI_PRI_MI2S_TX,
8951 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8952 msm_routing_put_voice_mixer),
8953 SOC_SINGLE_EXT("TERT_MI2S_TX_VoLTE", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8954 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8955 msm_routing_put_voice_mixer),
8956 SOC_SINGLE_EXT("SLIM_7_TX_VoLTE", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8957 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8958 msm_routing_put_voice_mixer),
8959 SOC_SINGLE_EXT("SLIM_8_TX_VoLTE", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8960 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8961 msm_routing_put_voice_mixer),
8962 SOC_SINGLE_EXT("USB_AUDIO_TX_VoLTE", MSM_BACKEND_DAI_USB_TX,
8963 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8964 msm_routing_put_voice_mixer),
8965};
8966
8967static const struct snd_kcontrol_new tx_vowlan_mixer_controls[] = {
8968 SOC_SINGLE_EXT("PRI_TX_VoWLAN", MSM_BACKEND_DAI_PRI_I2S_TX,
8969 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8970 msm_routing_put_voice_mixer),
8971 SOC_SINGLE_EXT("SLIM_0_TX_VoWLAN", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8972 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8973 msm_routing_put_voice_mixer),
8974 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_VoWLAN",
8975 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOWLAN, 1, 0,
8976 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8977 SOC_SINGLE_EXT("AFE_PCM_TX_VoWLAN", MSM_BACKEND_DAI_AFE_PCM_TX,
8978 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8979 msm_routing_put_voice_mixer),
8980 SOC_SINGLE_EXT("AUX_PCM_TX_VoWLAN", MSM_BACKEND_DAI_AUXPCM_TX,
8981 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8982 msm_routing_put_voice_mixer),
8983 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_VoWLAN", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8984 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8985 msm_routing_put_voice_mixer),
8986 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_VoWLAN", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8987 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8988 msm_routing_put_voice_mixer),
8989 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_VoWLAN", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8990 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8991 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308992 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_VoWLAN", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8993 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8994 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308995 SOC_SINGLE_EXT("MI2S_TX_VoWLAN", MSM_BACKEND_DAI_MI2S_TX,
8996 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8997 msm_routing_put_voice_mixer),
8998 SOC_SINGLE_EXT("PRI_MI2S_TX_VoWLAN", MSM_BACKEND_DAI_PRI_MI2S_TX,
8999 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
9000 msm_routing_put_voice_mixer),
9001 SOC_SINGLE_EXT("TERT_MI2S_TX_VoWLAN", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9002 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
9003 msm_routing_put_voice_mixer),
9004 SOC_SINGLE_EXT("SLIM_7_TX_VoWLAN", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9005 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
9006 msm_routing_put_voice_mixer),
9007 SOC_SINGLE_EXT("SLIM_8_TX_VoWLAN", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9008 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
9009 msm_routing_put_voice_mixer),
9010 SOC_SINGLE_EXT("USB_AUDIO_TX_VoWLAN", MSM_BACKEND_DAI_USB_TX,
9011 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
9012 msm_routing_put_voice_mixer),
9013};
9014
9015static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
9016 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
9017 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9018 msm_routing_put_voice_mixer),
9019 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
9020 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9021 msm_routing_put_voice_mixer),
9022 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
9023 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
9024 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9025 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
9026 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
9027 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9028 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
9029 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
9030 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9031 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
9032 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
9033 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9034 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
9035 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
9036 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9037 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
9038 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
9039 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9040 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
9041 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
9042 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309043 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
9044 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
9045 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309046 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
9047 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
9048 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9049 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
9050 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
9051 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9052 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
9053 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
9054 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9055 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
9056 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
9057 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9058 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
9059 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
9060 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9061 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
9062 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
9063 msm_routing_put_voice_mixer),
9064 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
9065 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
9066 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9067};
9068
9069static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
9070 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
9071 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9072 msm_routing_put_voice_mixer),
9073 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
9074 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
9075 msm_routing_put_voice_mixer),
9076 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
9077 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9078 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9079 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
9080 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9081 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9082 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
9083 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
9084 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9085 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
9086 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
9087 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9088 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
9089 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9090 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9091 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
9092 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9093 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9094 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
9095 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9096 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309097 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
9098 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9099 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309100 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
9101 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
9102 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9103 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
9104 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
9105 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9106 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
9107 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
9108 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9109 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
9110 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9111 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9112 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
9113 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9114 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9115 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
9116 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9117 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9118};
9119
9120static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
9121 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
9122 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9123 msm_routing_put_voice_mixer),
9124 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
9125 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9126 msm_routing_put_voice_mixer),
9127 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9128 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9129 msm_routing_put_voice_mixer),
9130 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
9131 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9132 msm_routing_put_voice_mixer),
9133 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
9134 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9135 msm_routing_put_voice_mixer),
9136 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
9137 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9138 msm_routing_put_voice_mixer),
9139 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9140 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9141 msm_routing_put_voice_mixer),
9142 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9143 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9144 msm_routing_put_voice_mixer),
9145 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9146 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9147 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309148 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9149 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9150 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309151 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
9152 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9153 msm_routing_put_voice_mixer),
9154 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9155 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9156 msm_routing_put_voice_mixer),
9157 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
9158 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9159 msm_routing_put_voice_mixer),
9160 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9161 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9162 msm_routing_put_voice_mixer),
9163 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9164 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9165 msm_routing_put_voice_mixer),
9166 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
9167 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9168 msm_routing_put_voice_mixer),
9169};
9170
9171static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
9172 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9173 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9174 msm_routing_put_voice_stub_mixer),
9175 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
9176 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9177 msm_routing_put_voice_stub_mixer),
9178 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9179 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9180 msm_routing_put_voice_stub_mixer),
9181 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9182 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9183 msm_routing_put_voice_stub_mixer),
9184 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
9185 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9186 msm_routing_put_voice_stub_mixer),
9187 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9188 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9189 msm_routing_put_voice_stub_mixer),
9190 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9191 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9192 msm_routing_put_voice_stub_mixer),
9193 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
9194 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9195 msm_routing_put_voice_stub_mixer),
9196 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9197 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9198 msm_routing_put_voice_stub_mixer),
9199 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9200 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9201 msm_routing_put_voice_stub_mixer),
9202 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9203 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9204 msm_routing_put_voice_stub_mixer),
9205 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9206 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9207 msm_routing_put_voice_stub_mixer),
9208 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9209 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9210 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309211 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9212 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9213 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309214 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9215 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9216 msm_routing_put_voice_stub_mixer),
9217 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9218 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9219 msm_routing_put_voice_stub_mixer),
9220 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9221 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9222 msm_routing_put_voice_stub_mixer),
9223 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9224 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9225 msm_routing_put_voice_stub_mixer),
9226 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9227 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9228 msm_routing_put_voice_stub_mixer),
9229};
9230
9231static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
9232 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9233 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9234 msm_routing_put_voice_stub_mixer),
9235 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9236 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9237 msm_routing_put_voice_stub_mixer),
9238 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9239 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9240 msm_routing_put_voice_stub_mixer),
9241 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9242 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9243 msm_routing_put_voice_stub_mixer),
9244 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9245 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9246 msm_routing_put_voice_stub_mixer),
9247 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9248 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9249 msm_routing_put_voice_stub_mixer),
9250 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9251 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9252 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309253 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9254 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9255 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309256 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9257 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9258 msm_routing_put_voice_stub_mixer),
9259 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9260 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9261 msm_routing_put_voice_stub_mixer),
9262 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9263 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9264 msm_routing_put_voice_stub_mixer),
9265 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9266 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9267 msm_routing_put_voice_stub_mixer),
9268 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9269 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9270 msm_routing_put_voice_stub_mixer),
9271 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9272 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9273 msm_routing_put_voice_stub_mixer),
9274 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9275 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9276 msm_routing_put_voice_stub_mixer),
9277};
9278
9279static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
9280 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9281 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9282 msm_routing_put_voice_stub_mixer),
9283 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9284 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9285 msm_routing_put_voice_stub_mixer),
9286 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9287 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9288 msm_routing_put_voice_stub_mixer),
9289 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9290 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9291 msm_routing_put_voice_stub_mixer),
9292 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9293 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9294 msm_routing_put_voice_stub_mixer),
9295 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9296 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9297 msm_routing_put_voice_stub_mixer),
9298 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9299 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9300 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309301 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9302 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9303 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309304 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9305 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9306 msm_routing_put_voice_stub_mixer),
9307 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9308 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9309 msm_routing_put_voice_stub_mixer),
9310 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9311 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9312 msm_routing_put_voice_stub_mixer),
9313 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9314 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9315 msm_routing_put_voice_stub_mixer),
9316 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9317 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9318 msm_routing_put_voice_stub_mixer),
9319 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9320 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9321 msm_routing_put_voice_stub_mixer),
9322 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9323 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9324 msm_routing_put_voice_stub_mixer),
9325};
9326
9327static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
9328 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
9329 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9330 msm_routing_put_voice_mixer),
9331 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9332 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9333 msm_routing_put_voice_mixer),
9334 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
9335 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
9336 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9337 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
9338 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9339 msm_routing_put_voice_mixer),
9340 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
9341 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9342 msm_routing_put_voice_mixer),
9343 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9344 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9345 msm_routing_put_voice_mixer),
9346 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9347 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9348 msm_routing_put_voice_mixer),
9349 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9350 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9351 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309352 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9353 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9354 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309355 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
9356 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9357 msm_routing_put_voice_mixer),
9358 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
9359 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9360 msm_routing_put_voice_mixer),
9361 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9362 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9363 msm_routing_put_voice_mixer),
9364 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
9365 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9366 msm_routing_put_voice_mixer),
9367 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9368 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9369 msm_routing_put_voice_mixer),
9370 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9371 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9372 msm_routing_put_voice_mixer),
9373 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
9374 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9375 msm_routing_put_voice_mixer),
9376};
9377
9378static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
9379 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9380 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9381 msm_routing_put_port_mixer),
9382 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9383 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9384 msm_routing_put_port_mixer),
9385 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9386 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9387 msm_routing_put_port_mixer),
9388 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9389 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9390 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309391 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9392 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9393 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309394 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9395 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9396 msm_routing_put_port_mixer),
9397 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9398 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9399 msm_routing_put_port_mixer),
9400 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9401 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9402 msm_routing_put_port_mixer),
9403 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9404 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9405 msm_routing_put_port_mixer),
9406 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9407 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9408 msm_routing_put_port_mixer),
9409};
9410
9411static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
9412 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_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_INT4_MI2S_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_INT4_MI2S_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_INT4_MI2S_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_INT4_MI2S_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("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9428 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9429 msm_routing_put_port_mixer),
9430 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9431 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9432 msm_routing_put_port_mixer),
9433 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9434 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9435 msm_routing_put_port_mixer),
9436 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9437 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9438 msm_routing_put_port_mixer),
9439 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9440 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9441 msm_routing_put_port_mixer),
9442};
9443
9444static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
9445 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9446 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9447 msm_routing_put_port_mixer),
9448 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9449 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9450 msm_routing_put_port_mixer),
9451 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9452 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9453 msm_routing_put_port_mixer),
9454 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9455 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9456 msm_routing_put_port_mixer),
9457 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9458 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9459 msm_routing_put_port_mixer),
9460 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9461 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9462 msm_routing_put_port_mixer),
9463 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9464 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9465 msm_routing_put_port_mixer),
9466 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9467 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9468 msm_routing_put_port_mixer),
9469 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9470 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9471 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309472 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9473 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9474 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309475 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9476 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9477 msm_routing_put_port_mixer),
9478 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9479 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9480 msm_routing_put_port_mixer),
9481 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9482 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9483 msm_routing_put_port_mixer),
9484 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9485 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9486 msm_routing_put_port_mixer),
9487 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9488 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9489 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309490 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9491 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9492 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309493 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9494 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9495 msm_routing_put_port_mixer),
9496 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9497 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9498 msm_routing_put_port_mixer),
9499 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9500 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9501 msm_routing_put_port_mixer),
9502 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9503 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9504 msm_routing_put_port_mixer),
9505 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9506 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9507 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309508 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9509 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9510 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309511};
9512
9513static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
9514 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9515 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9516 msm_routing_put_port_mixer),
9517 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9518 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9519 msm_routing_put_port_mixer),
9520 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9521 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9522 msm_routing_put_port_mixer),
9523 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9524 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9525 msm_routing_put_port_mixer),
9526 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
9527 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
9528 msm_routing_put_port_mixer),
9529};
9530
9531static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
9532 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9533 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9534 msm_routing_put_port_mixer),
9535 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9536 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9537 msm_routing_put_port_mixer),
9538 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9539 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9540 msm_routing_put_port_mixer),
9541};
9542
9543static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
9544 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9545 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9546 msm_routing_put_port_mixer),
9547 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9548 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9549 msm_routing_put_port_mixer),
9550 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9551 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9552 msm_routing_put_port_mixer),
9553};
9554
9555static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
9556 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9557 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9558 msm_routing_put_port_mixer),
9559 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9560 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9561 msm_routing_put_port_mixer),
9562 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9563 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9564 msm_routing_put_port_mixer),
9565};
9566
Rohit Kumara5077932017-09-10 22:05:05 +05309567static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
9568 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9569 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9570 msm_routing_put_port_mixer),
9571 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9572 MSM_BACKEND_DAI_SLIMBUS_0_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_QUIN_AUXPCM_RX,
9575 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9576 msm_routing_put_port_mixer),
9577};
9578
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309579static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9580 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9581 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9582 msm_routing_put_port_mixer),
9583 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9584 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9585 msm_routing_put_port_mixer),
9586 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9587 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9588 msm_routing_put_port_mixer),
9589 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9590 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9591 msm_routing_put_port_mixer),
9592 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9593 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9594 msm_routing_put_port_mixer),
9595 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9596 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9597 msm_routing_put_port_mixer),
9598};
9599
9600static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9601 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9602 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9603 msm_routing_put_port_mixer),
9604 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9605 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9606 msm_routing_put_port_mixer),
9607 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9608 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9609 msm_routing_put_port_mixer),
9610 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9611 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9612 msm_routing_put_port_mixer),
9613 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9614 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9615 msm_routing_put_port_mixer),
9616};
9617
9618static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9619 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9620 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9621 msm_routing_put_port_mixer),
9622 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9623 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9624 msm_routing_put_port_mixer),
9625 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9626 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9627 msm_routing_put_port_mixer),
9628 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9629 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9630 msm_routing_put_port_mixer),
9631 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9632 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9633 msm_routing_put_port_mixer),
9634 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9635 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9636 msm_routing_put_port_mixer),
9637 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9638 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9639 msm_routing_put_port_mixer),
9640 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9641 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9642 msm_routing_put_port_mixer),
9643 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9644 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9645 msm_routing_put_port_mixer),
9646 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9647 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9648 msm_routing_put_port_mixer),
9649 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9650 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9651 msm_routing_put_port_mixer),
9652 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9653 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9654 msm_routing_put_port_mixer),
9655};
9656
9657static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9658 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9659 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9660 msm_routing_put_port_mixer),
9661 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9662 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9663 msm_routing_put_port_mixer),
9664};
9665
9666static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9667 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9668 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9669 msm_routing_put_port_mixer),
9670 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9671 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9672 msm_routing_put_port_mixer),
9673};
9674
9675
9676static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9677 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9678 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9679 msm_routing_put_port_mixer),
9680};
9681
9682static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9683 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9684 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9685 msm_routing_put_port_mixer),
9686};
9687
9688static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9689 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9690 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9691 msm_routing_put_port_mixer),
9692};
9693
9694static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9695 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9696 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9697 msm_routing_put_port_mixer),
9698 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9699 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9700 msm_routing_put_port_mixer),
9701};
9702
9703static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9704 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9705 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9706 msm_routing_put_port_mixer),
9707 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9708 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9709 msm_routing_put_port_mixer),
9710 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9711 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9712 msm_routing_put_port_mixer),
9713 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9714 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9715 msm_routing_put_port_mixer),
9716 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9717 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9718 msm_routing_put_port_mixer),
9719 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9720 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9721 msm_routing_put_port_mixer),
9722 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9723 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9724 msm_routing_put_port_mixer),
9725 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9726 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9727 msm_routing_put_port_mixer),
9728 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9729 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9730 msm_routing_put_port_mixer),
9731};
9732
9733static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9734 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9735 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9736 msm_routing_put_port_mixer),
9737};
9738
9739static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9740 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9741 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9742 msm_routing_put_port_mixer),
9743 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9744 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9745 msm_routing_put_port_mixer),
9746 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9747 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9748 msm_routing_put_port_mixer),
9749 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9750 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9751 msm_routing_put_port_mixer),
9752 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9753 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9754 msm_routing_put_port_mixer),
9755 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9756 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9757 msm_routing_put_port_mixer),
9758 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9759 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9760 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309761 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9762 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9763 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309764 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9765 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9766 msm_routing_put_port_mixer),
9767};
9768
Rohit Kumara5077932017-09-10 22:05:05 +05309769static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9770 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9771 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9772 msm_routing_put_port_mixer),
9773 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9774 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9775 msm_routing_put_port_mixer),
9776 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9777 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9778 msm_routing_put_port_mixer),
9779 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9780 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9781 msm_routing_put_port_mixer),
9782 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9783 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9784 msm_routing_put_port_mixer),
9785 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9786 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9787 msm_routing_put_port_mixer),
9788 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9789 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9790 msm_routing_put_port_mixer),
9791};
9792
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309793static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9794 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9795 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9796 msm_routing_get_port_mixer,
9797 msm_routing_put_port_mixer),
9798 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9799 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9800 msm_routing_get_port_mixer,
9801 msm_routing_put_port_mixer),
9802 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9803 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9804 msm_routing_get_port_mixer,
9805 msm_routing_put_port_mixer),
9806 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9807 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9808 msm_routing_get_port_mixer,
9809 msm_routing_put_port_mixer),
9810 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9811 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9812 msm_routing_get_port_mixer,
9813 msm_routing_put_port_mixer),
9814 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9815 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9816 msm_routing_get_port_mixer,
9817 msm_routing_put_port_mixer),
9818 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9819 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9820 msm_routing_get_port_mixer,
9821 msm_routing_put_port_mixer),
9822 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9823 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9824 msm_routing_get_port_mixer,
9825 msm_routing_put_port_mixer),
9826 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9827 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9828 msm_routing_get_port_mixer,
9829 msm_routing_put_port_mixer),
9830 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9831 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9832 msm_routing_get_port_mixer,
9833 msm_routing_put_port_mixer),
9834 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9835 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9836 msm_routing_get_port_mixer,
9837 msm_routing_put_port_mixer),
9838 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9839 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9840 msm_routing_get_port_mixer,
9841 msm_routing_put_port_mixer),
9842 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9843 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9844 msm_routing_get_port_mixer,
9845 msm_routing_put_port_mixer),
9846 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9847 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9848 msm_routing_get_port_mixer,
9849 msm_routing_put_port_mixer),
9850 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9851 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9852 msm_routing_get_port_mixer,
9853 msm_routing_put_port_mixer),
9854 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9855 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9856 msm_routing_get_port_mixer,
9857 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309858 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9859 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9860 msm_routing_get_port_mixer,
9861 msm_routing_put_port_mixer),
9862 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9863 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9864 msm_routing_get_port_mixer,
9865 msm_routing_put_port_mixer),
9866 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9867 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9868 msm_routing_get_port_mixer,
9869 msm_routing_put_port_mixer),
9870 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9871 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9872 msm_routing_get_port_mixer,
9873 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309874};
9875
9876static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9877 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9878 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9879 msm_routing_get_port_mixer,
9880 msm_routing_put_port_mixer),
9881 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9882 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9883 msm_routing_get_port_mixer,
9884 msm_routing_put_port_mixer),
9885 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9886 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9887 msm_routing_get_port_mixer,
9888 msm_routing_put_port_mixer),
9889 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9890 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9891 msm_routing_get_port_mixer,
9892 msm_routing_put_port_mixer),
9893 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9894 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9895 msm_routing_get_port_mixer,
9896 msm_routing_put_port_mixer),
9897 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9898 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9899 msm_routing_get_port_mixer,
9900 msm_routing_put_port_mixer),
9901 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9902 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9903 msm_routing_get_port_mixer,
9904 msm_routing_put_port_mixer),
9905 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9906 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9907 msm_routing_get_port_mixer,
9908 msm_routing_put_port_mixer),
9909 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9910 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9911 msm_routing_get_port_mixer,
9912 msm_routing_put_port_mixer),
9913 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9914 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9915 msm_routing_get_port_mixer,
9916 msm_routing_put_port_mixer),
9917 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9918 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9919 msm_routing_get_port_mixer,
9920 msm_routing_put_port_mixer),
9921 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9922 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9923 msm_routing_get_port_mixer,
9924 msm_routing_put_port_mixer),
9925 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9926 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9927 msm_routing_get_port_mixer,
9928 msm_routing_put_port_mixer),
9929 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9930 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9931 msm_routing_get_port_mixer,
9932 msm_routing_put_port_mixer),
9933 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9934 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9935 msm_routing_get_port_mixer,
9936 msm_routing_put_port_mixer),
9937 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9938 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9939 msm_routing_get_port_mixer,
9940 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309941 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9942 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9943 msm_routing_get_port_mixer,
9944 msm_routing_put_port_mixer),
9945 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9946 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9947 msm_routing_get_port_mixer,
9948 msm_routing_put_port_mixer),
9949 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9950 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9951 msm_routing_get_port_mixer,
9952 msm_routing_put_port_mixer),
9953 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9954 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9955 msm_routing_get_port_mixer,
9956 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309957};
9958
9959static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9960 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9961 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9962 msm_routing_get_port_mixer,
9963 msm_routing_put_port_mixer),
9964 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9965 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9966 msm_routing_get_port_mixer,
9967 msm_routing_put_port_mixer),
9968 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9969 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9970 msm_routing_get_port_mixer,
9971 msm_routing_put_port_mixer),
9972 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9973 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9974 msm_routing_get_port_mixer,
9975 msm_routing_put_port_mixer),
9976 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9977 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9978 msm_routing_get_port_mixer,
9979 msm_routing_put_port_mixer),
9980 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9981 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9982 msm_routing_get_port_mixer,
9983 msm_routing_put_port_mixer),
9984 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9985 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9986 msm_routing_get_port_mixer,
9987 msm_routing_put_port_mixer),
9988 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9989 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9990 msm_routing_get_port_mixer,
9991 msm_routing_put_port_mixer),
9992 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9993 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9994 msm_routing_get_port_mixer,
9995 msm_routing_put_port_mixer),
9996 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9997 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9998 msm_routing_get_port_mixer,
9999 msm_routing_put_port_mixer),
10000 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
10001 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
10002 msm_routing_get_port_mixer,
10003 msm_routing_put_port_mixer),
10004 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
10005 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
10006 msm_routing_get_port_mixer,
10007 msm_routing_put_port_mixer),
10008 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
10009 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10010 msm_routing_get_port_mixer,
10011 msm_routing_put_port_mixer),
10012 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
10013 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10014 msm_routing_get_port_mixer,
10015 msm_routing_put_port_mixer),
10016 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
10017 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10018 msm_routing_get_port_mixer,
10019 msm_routing_put_port_mixer),
10020 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
10021 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10022 msm_routing_get_port_mixer,
10023 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010024 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
10025 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10026 msm_routing_get_port_mixer,
10027 msm_routing_put_port_mixer),
10028 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
10029 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10030 msm_routing_get_port_mixer,
10031 msm_routing_put_port_mixer),
10032 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
10033 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10034 msm_routing_get_port_mixer,
10035 msm_routing_put_port_mixer),
10036 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
10037 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10038 msm_routing_get_port_mixer,
10039 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010040};
10041
10042static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
10043 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10044 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10045 msm_routing_get_port_mixer,
10046 msm_routing_put_port_mixer),
10047 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10048 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10049 msm_routing_get_port_mixer,
10050 msm_routing_put_port_mixer),
10051 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10052 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10053 msm_routing_get_port_mixer,
10054 msm_routing_put_port_mixer),
10055 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10056 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10057 msm_routing_get_port_mixer,
10058 msm_routing_put_port_mixer),
10059 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10060 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10061 msm_routing_get_port_mixer,
10062 msm_routing_put_port_mixer),
10063 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10064 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10065 msm_routing_get_port_mixer,
10066 msm_routing_put_port_mixer),
10067 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10068 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10069 msm_routing_get_port_mixer,
10070 msm_routing_put_port_mixer),
10071 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10072 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10073 msm_routing_get_port_mixer,
10074 msm_routing_put_port_mixer),
10075 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10076 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
10077 msm_routing_get_port_mixer,
10078 msm_routing_put_port_mixer),
10079 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10080 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
10081 msm_routing_get_port_mixer,
10082 msm_routing_put_port_mixer),
10083 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10084 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
10085 msm_routing_get_port_mixer,
10086 msm_routing_put_port_mixer),
10087 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10088 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
10089 msm_routing_get_port_mixer,
10090 msm_routing_put_port_mixer),
10091 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10092 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10093 msm_routing_get_port_mixer,
10094 msm_routing_put_port_mixer),
10095 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10096 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10097 msm_routing_get_port_mixer,
10098 msm_routing_put_port_mixer),
10099 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10100 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10101 msm_routing_get_port_mixer,
10102 msm_routing_put_port_mixer),
10103 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10104 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10105 msm_routing_get_port_mixer,
10106 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010107 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10108 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10109 msm_routing_get_port_mixer,
10110 msm_routing_put_port_mixer),
10111 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10112 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10113 msm_routing_get_port_mixer,
10114 msm_routing_put_port_mixer),
10115 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10116 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10117 msm_routing_get_port_mixer,
10118 msm_routing_put_port_mixer),
10119 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10120 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10121 msm_routing_get_port_mixer,
10122 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010123};
10124
10125static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
10126 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10127 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10128 msm_routing_get_port_mixer,
10129 msm_routing_put_port_mixer),
10130 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10131 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10132 msm_routing_get_port_mixer,
10133 msm_routing_put_port_mixer),
10134 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10135 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10136 msm_routing_get_port_mixer,
10137 msm_routing_put_port_mixer),
10138 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10139 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10140 msm_routing_get_port_mixer,
10141 msm_routing_put_port_mixer),
10142 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10143 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10144 msm_routing_get_port_mixer,
10145 msm_routing_put_port_mixer),
10146 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10147 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10148 msm_routing_get_port_mixer,
10149 msm_routing_put_port_mixer),
10150 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10151 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10152 msm_routing_get_port_mixer,
10153 msm_routing_put_port_mixer),
10154 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10155 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10156 msm_routing_get_port_mixer,
10157 msm_routing_put_port_mixer),
10158 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10159 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10160 msm_routing_get_port_mixer,
10161 msm_routing_put_port_mixer),
10162 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10163 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10164 msm_routing_get_port_mixer,
10165 msm_routing_put_port_mixer),
10166 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10167 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10168 msm_routing_get_port_mixer,
10169 msm_routing_put_port_mixer),
10170 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10171 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10172 msm_routing_get_port_mixer,
10173 msm_routing_put_port_mixer),
10174 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10175 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10176 msm_routing_get_port_mixer,
10177 msm_routing_put_port_mixer),
10178 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10179 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10180 msm_routing_get_port_mixer,
10181 msm_routing_put_port_mixer),
10182 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10183 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10184 msm_routing_get_port_mixer,
10185 msm_routing_put_port_mixer),
10186 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10187 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10188 msm_routing_get_port_mixer,
10189 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010190 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10191 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10192 msm_routing_get_port_mixer,
10193 msm_routing_put_port_mixer),
10194 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10195 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10196 msm_routing_get_port_mixer,
10197 msm_routing_put_port_mixer),
10198 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10199 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10200 msm_routing_get_port_mixer,
10201 msm_routing_put_port_mixer),
10202 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10203 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10204 msm_routing_get_port_mixer,
10205 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010206};
10207
10208static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
10209 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10210 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10211 msm_routing_get_port_mixer,
10212 msm_routing_put_port_mixer),
10213 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10214 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10215 msm_routing_get_port_mixer,
10216 msm_routing_put_port_mixer),
10217 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10218 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10219 msm_routing_get_port_mixer,
10220 msm_routing_put_port_mixer),
10221 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10222 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10223 msm_routing_get_port_mixer,
10224 msm_routing_put_port_mixer),
10225 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10226 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10227 msm_routing_get_port_mixer,
10228 msm_routing_put_port_mixer),
10229 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10230 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10231 msm_routing_get_port_mixer,
10232 msm_routing_put_port_mixer),
10233 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10234 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10235 msm_routing_get_port_mixer,
10236 msm_routing_put_port_mixer),
10237 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10238 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10239 msm_routing_get_port_mixer,
10240 msm_routing_put_port_mixer),
10241 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10242 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10243 msm_routing_get_port_mixer,
10244 msm_routing_put_port_mixer),
10245 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10246 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10247 msm_routing_get_port_mixer,
10248 msm_routing_put_port_mixer),
10249 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10250 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10251 msm_routing_get_port_mixer,
10252 msm_routing_put_port_mixer),
10253 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10254 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10255 msm_routing_get_port_mixer,
10256 msm_routing_put_port_mixer),
10257 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10258 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10259 msm_routing_get_port_mixer,
10260 msm_routing_put_port_mixer),
10261 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10262 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10263 msm_routing_get_port_mixer,
10264 msm_routing_put_port_mixer),
10265 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10266 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10267 msm_routing_get_port_mixer,
10268 msm_routing_put_port_mixer),
10269 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10270 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10271 msm_routing_get_port_mixer,
10272 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010273 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10274 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10275 msm_routing_get_port_mixer,
10276 msm_routing_put_port_mixer),
10277 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10278 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10279 msm_routing_get_port_mixer,
10280 msm_routing_put_port_mixer),
10281 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10282 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10283 msm_routing_get_port_mixer,
10284 msm_routing_put_port_mixer),
10285 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10286 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10287 msm_routing_get_port_mixer,
10288 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010289};
10290
10291static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
10292 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10293 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10294 msm_routing_get_port_mixer,
10295 msm_routing_put_port_mixer),
10296 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10297 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10298 msm_routing_get_port_mixer,
10299 msm_routing_put_port_mixer),
10300 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10301 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10302 msm_routing_get_port_mixer,
10303 msm_routing_put_port_mixer),
10304 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10305 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10306 msm_routing_get_port_mixer,
10307 msm_routing_put_port_mixer),
10308 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10309 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10310 msm_routing_get_port_mixer,
10311 msm_routing_put_port_mixer),
10312 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10313 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10314 msm_routing_get_port_mixer,
10315 msm_routing_put_port_mixer),
10316 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10317 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10318 msm_routing_get_port_mixer,
10319 msm_routing_put_port_mixer),
10320 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10321 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10322 msm_routing_get_port_mixer,
10323 msm_routing_put_port_mixer),
10324 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10325 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10326 msm_routing_get_port_mixer,
10327 msm_routing_put_port_mixer),
10328 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10329 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10330 msm_routing_get_port_mixer,
10331 msm_routing_put_port_mixer),
10332 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10333 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10334 msm_routing_get_port_mixer,
10335 msm_routing_put_port_mixer),
10336 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10337 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10338 msm_routing_get_port_mixer,
10339 msm_routing_put_port_mixer),
10340 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10341 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10342 msm_routing_get_port_mixer,
10343 msm_routing_put_port_mixer),
10344 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10345 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10346 msm_routing_get_port_mixer,
10347 msm_routing_put_port_mixer),
10348 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10349 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10350 msm_routing_get_port_mixer,
10351 msm_routing_put_port_mixer),
10352 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10353 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10354 msm_routing_get_port_mixer,
10355 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010356 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10357 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10358 msm_routing_get_port_mixer,
10359 msm_routing_put_port_mixer),
10360 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10361 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10362 msm_routing_get_port_mixer,
10363 msm_routing_put_port_mixer),
10364 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10365 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10366 msm_routing_get_port_mixer,
10367 msm_routing_put_port_mixer),
10368 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10369 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10370 msm_routing_get_port_mixer,
10371 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010372};
10373
10374static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
10375 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10376 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10377 msm_routing_get_port_mixer,
10378 msm_routing_put_port_mixer),
10379 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10380 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10381 msm_routing_get_port_mixer,
10382 msm_routing_put_port_mixer),
10383 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10384 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10385 msm_routing_get_port_mixer,
10386 msm_routing_put_port_mixer),
10387 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10388 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10389 msm_routing_get_port_mixer,
10390 msm_routing_put_port_mixer),
10391 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10392 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10393 msm_routing_get_port_mixer,
10394 msm_routing_put_port_mixer),
10395 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10396 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10397 msm_routing_get_port_mixer,
10398 msm_routing_put_port_mixer),
10399 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10400 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10401 msm_routing_get_port_mixer,
10402 msm_routing_put_port_mixer),
10403 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10404 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10405 msm_routing_get_port_mixer,
10406 msm_routing_put_port_mixer),
10407 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10408 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10409 msm_routing_get_port_mixer,
10410 msm_routing_put_port_mixer),
10411 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10412 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10413 msm_routing_get_port_mixer,
10414 msm_routing_put_port_mixer),
10415 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10416 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10417 msm_routing_get_port_mixer,
10418 msm_routing_put_port_mixer),
10419 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10420 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10421 msm_routing_get_port_mixer,
10422 msm_routing_put_port_mixer),
10423 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10424 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10425 msm_routing_get_port_mixer,
10426 msm_routing_put_port_mixer),
10427 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10428 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10429 msm_routing_get_port_mixer,
10430 msm_routing_put_port_mixer),
10431 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10432 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10433 msm_routing_get_port_mixer,
10434 msm_routing_put_port_mixer),
10435 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10436 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10437 msm_routing_get_port_mixer,
10438 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010439 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10440 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10441 msm_routing_get_port_mixer,
10442 msm_routing_put_port_mixer),
10443 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10444 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10445 msm_routing_get_port_mixer,
10446 msm_routing_put_port_mixer),
10447 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10448 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10449 msm_routing_get_port_mixer,
10450 msm_routing_put_port_mixer),
10451 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10452 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10453 msm_routing_get_port_mixer,
10454 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010455};
10456
10457static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
10458 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10459 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10460 msm_routing_get_port_mixer,
10461 msm_routing_put_port_mixer),
10462 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10463 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10464 msm_routing_get_port_mixer,
10465 msm_routing_put_port_mixer),
10466 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10467 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10468 msm_routing_get_port_mixer,
10469 msm_routing_put_port_mixer),
10470 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10471 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10472 msm_routing_get_port_mixer,
10473 msm_routing_put_port_mixer),
10474 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10475 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10476 msm_routing_get_port_mixer,
10477 msm_routing_put_port_mixer),
10478 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10479 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10480 msm_routing_get_port_mixer,
10481 msm_routing_put_port_mixer),
10482 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10483 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10484 msm_routing_get_port_mixer,
10485 msm_routing_put_port_mixer),
10486 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10487 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10488 msm_routing_get_port_mixer,
10489 msm_routing_put_port_mixer),
10490 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10491 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10492 msm_routing_get_port_mixer,
10493 msm_routing_put_port_mixer),
10494 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10495 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10496 msm_routing_get_port_mixer,
10497 msm_routing_put_port_mixer),
10498 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10499 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10500 msm_routing_get_port_mixer,
10501 msm_routing_put_port_mixer),
10502 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10503 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10504 msm_routing_get_port_mixer,
10505 msm_routing_put_port_mixer),
10506 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10507 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10508 msm_routing_get_port_mixer,
10509 msm_routing_put_port_mixer),
10510 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10511 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10512 msm_routing_get_port_mixer,
10513 msm_routing_put_port_mixer),
10514 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10515 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10516 msm_routing_get_port_mixer,
10517 msm_routing_put_port_mixer),
10518 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10519 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10520 msm_routing_get_port_mixer,
10521 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010522 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10523 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10524 msm_routing_get_port_mixer,
10525 msm_routing_put_port_mixer),
10526 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10527 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10528 msm_routing_get_port_mixer,
10529 msm_routing_put_port_mixer),
10530 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10531 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10532 msm_routing_get_port_mixer,
10533 msm_routing_put_port_mixer),
10534 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10535 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10536 msm_routing_get_port_mixer,
10537 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010538};
10539
10540static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
10541 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10542 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10543 msm_routing_get_port_mixer,
10544 msm_routing_put_port_mixer),
10545 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10546 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10547 msm_routing_get_port_mixer,
10548 msm_routing_put_port_mixer),
10549 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10550 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10551 msm_routing_get_port_mixer,
10552 msm_routing_put_port_mixer),
10553 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10554 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10555 msm_routing_get_port_mixer,
10556 msm_routing_put_port_mixer),
10557 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10558 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10559 msm_routing_get_port_mixer,
10560 msm_routing_put_port_mixer),
10561 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10562 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10563 msm_routing_get_port_mixer,
10564 msm_routing_put_port_mixer),
10565 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10566 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10567 msm_routing_get_port_mixer,
10568 msm_routing_put_port_mixer),
10569 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10570 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10571 msm_routing_get_port_mixer,
10572 msm_routing_put_port_mixer),
10573 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10574 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10575 msm_routing_get_port_mixer,
10576 msm_routing_put_port_mixer),
10577 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10578 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10579 msm_routing_get_port_mixer,
10580 msm_routing_put_port_mixer),
10581 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10582 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10583 msm_routing_get_port_mixer,
10584 msm_routing_put_port_mixer),
10585 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10586 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10587 msm_routing_get_port_mixer,
10588 msm_routing_put_port_mixer),
10589 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10590 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10591 msm_routing_get_port_mixer,
10592 msm_routing_put_port_mixer),
10593 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10594 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10595 msm_routing_get_port_mixer,
10596 msm_routing_put_port_mixer),
10597 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10598 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10599 msm_routing_get_port_mixer,
10600 msm_routing_put_port_mixer),
10601 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10602 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10603 msm_routing_get_port_mixer,
10604 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010605 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10606 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10607 msm_routing_get_port_mixer,
10608 msm_routing_put_port_mixer),
10609 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10610 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10611 msm_routing_get_port_mixer,
10612 msm_routing_put_port_mixer),
10613 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10614 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10615 msm_routing_get_port_mixer,
10616 msm_routing_put_port_mixer),
10617 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10618 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10619 msm_routing_get_port_mixer,
10620 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010621};
10622
10623static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10624 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10625 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10626 msm_routing_get_port_mixer,
10627 msm_routing_put_port_mixer),
10628 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10629 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10630 msm_routing_get_port_mixer,
10631 msm_routing_put_port_mixer),
10632 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10633 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10634 msm_routing_get_port_mixer,
10635 msm_routing_put_port_mixer),
10636 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10637 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10638 msm_routing_get_port_mixer,
10639 msm_routing_put_port_mixer),
10640 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10641 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10642 msm_routing_get_port_mixer,
10643 msm_routing_put_port_mixer),
10644 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10645 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10646 msm_routing_get_port_mixer,
10647 msm_routing_put_port_mixer),
10648 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10649 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10650 msm_routing_get_port_mixer,
10651 msm_routing_put_port_mixer),
10652 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10653 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10654 msm_routing_get_port_mixer,
10655 msm_routing_put_port_mixer),
10656 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10657 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10658 msm_routing_get_port_mixer,
10659 msm_routing_put_port_mixer),
10660 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10661 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10662 msm_routing_get_port_mixer,
10663 msm_routing_put_port_mixer),
10664 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10665 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10666 msm_routing_get_port_mixer,
10667 msm_routing_put_port_mixer),
10668 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10669 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10670 msm_routing_get_port_mixer,
10671 msm_routing_put_port_mixer),
10672 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10673 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10674 msm_routing_get_port_mixer,
10675 msm_routing_put_port_mixer),
10676 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10677 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10678 msm_routing_get_port_mixer,
10679 msm_routing_put_port_mixer),
10680 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10681 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10682 msm_routing_get_port_mixer,
10683 msm_routing_put_port_mixer),
10684 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10685 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10686 msm_routing_get_port_mixer,
10687 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010688 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10689 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10690 msm_routing_get_port_mixer,
10691 msm_routing_put_port_mixer),
10692 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10693 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10694 msm_routing_get_port_mixer,
10695 msm_routing_put_port_mixer),
10696 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10697 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10698 msm_routing_get_port_mixer,
10699 msm_routing_put_port_mixer),
10700 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10701 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10702 msm_routing_get_port_mixer,
10703 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010704};
10705
10706static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10707 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10708 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10709 msm_routing_get_port_mixer,
10710 msm_routing_put_port_mixer),
10711 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10712 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10713 msm_routing_get_port_mixer,
10714 msm_routing_put_port_mixer),
10715 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10716 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10717 msm_routing_get_port_mixer,
10718 msm_routing_put_port_mixer),
10719 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10720 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10721 msm_routing_get_port_mixer,
10722 msm_routing_put_port_mixer),
10723 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10724 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10725 msm_routing_get_port_mixer,
10726 msm_routing_put_port_mixer),
10727 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10728 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10729 msm_routing_get_port_mixer,
10730 msm_routing_put_port_mixer),
10731 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10732 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10733 msm_routing_get_port_mixer,
10734 msm_routing_put_port_mixer),
10735 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10736 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10737 msm_routing_get_port_mixer,
10738 msm_routing_put_port_mixer),
10739 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10740 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10741 msm_routing_get_port_mixer,
10742 msm_routing_put_port_mixer),
10743 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10744 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10745 msm_routing_get_port_mixer,
10746 msm_routing_put_port_mixer),
10747 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10748 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10749 msm_routing_get_port_mixer,
10750 msm_routing_put_port_mixer),
10751 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10752 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10753 msm_routing_get_port_mixer,
10754 msm_routing_put_port_mixer),
10755 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10756 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10757 msm_routing_get_port_mixer,
10758 msm_routing_put_port_mixer),
10759 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10760 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10761 msm_routing_get_port_mixer,
10762 msm_routing_put_port_mixer),
10763 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10764 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10765 msm_routing_get_port_mixer,
10766 msm_routing_put_port_mixer),
10767 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10768 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10769 msm_routing_get_port_mixer,
10770 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010771 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10772 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10773 msm_routing_get_port_mixer,
10774 msm_routing_put_port_mixer),
10775 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10776 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10777 msm_routing_get_port_mixer,
10778 msm_routing_put_port_mixer),
10779 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10780 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10781 msm_routing_get_port_mixer,
10782 msm_routing_put_port_mixer),
10783 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10784 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10785 msm_routing_get_port_mixer,
10786 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010787};
10788
10789static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10790 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10791 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10792 msm_routing_get_port_mixer,
10793 msm_routing_put_port_mixer),
10794 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10795 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10796 msm_routing_get_port_mixer,
10797 msm_routing_put_port_mixer),
10798 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10799 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10800 msm_routing_get_port_mixer,
10801 msm_routing_put_port_mixer),
10802 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10803 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10804 msm_routing_get_port_mixer,
10805 msm_routing_put_port_mixer),
10806 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10807 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10808 msm_routing_get_port_mixer,
10809 msm_routing_put_port_mixer),
10810 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10811 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10812 msm_routing_get_port_mixer,
10813 msm_routing_put_port_mixer),
10814 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10815 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10816 msm_routing_get_port_mixer,
10817 msm_routing_put_port_mixer),
10818 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10819 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10820 msm_routing_get_port_mixer,
10821 msm_routing_put_port_mixer),
10822 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10823 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10824 msm_routing_get_port_mixer,
10825 msm_routing_put_port_mixer),
10826 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10827 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10828 msm_routing_get_port_mixer,
10829 msm_routing_put_port_mixer),
10830 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10831 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10832 msm_routing_get_port_mixer,
10833 msm_routing_put_port_mixer),
10834 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10835 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10836 msm_routing_get_port_mixer,
10837 msm_routing_put_port_mixer),
10838 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10839 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10840 msm_routing_get_port_mixer,
10841 msm_routing_put_port_mixer),
10842 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10843 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10844 msm_routing_get_port_mixer,
10845 msm_routing_put_port_mixer),
10846 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10847 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10848 msm_routing_get_port_mixer,
10849 msm_routing_put_port_mixer),
10850 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10851 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10852 msm_routing_get_port_mixer,
10853 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010854 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10855 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10856 msm_routing_get_port_mixer,
10857 msm_routing_put_port_mixer),
10858 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10859 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10860 msm_routing_get_port_mixer,
10861 msm_routing_put_port_mixer),
10862 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10863 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10864 msm_routing_get_port_mixer,
10865 msm_routing_put_port_mixer),
10866 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10867 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10868 msm_routing_get_port_mixer,
10869 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010870};
10871
10872static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10873 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10874 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10875 msm_routing_get_port_mixer,
10876 msm_routing_put_port_mixer),
10877 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10878 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10879 msm_routing_get_port_mixer,
10880 msm_routing_put_port_mixer),
10881 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10882 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10883 msm_routing_get_port_mixer,
10884 msm_routing_put_port_mixer),
10885 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10886 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10887 msm_routing_get_port_mixer,
10888 msm_routing_put_port_mixer),
10889 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10890 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10891 msm_routing_get_port_mixer,
10892 msm_routing_put_port_mixer),
10893 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10894 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10895 msm_routing_get_port_mixer,
10896 msm_routing_put_port_mixer),
10897 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10898 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10899 msm_routing_get_port_mixer,
10900 msm_routing_put_port_mixer),
10901 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10902 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10903 msm_routing_get_port_mixer,
10904 msm_routing_put_port_mixer),
10905 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10906 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10907 msm_routing_get_port_mixer,
10908 msm_routing_put_port_mixer),
10909 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10910 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10911 msm_routing_get_port_mixer,
10912 msm_routing_put_port_mixer),
10913 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10914 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10915 msm_routing_get_port_mixer,
10916 msm_routing_put_port_mixer),
10917 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10918 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10919 msm_routing_get_port_mixer,
10920 msm_routing_put_port_mixer),
10921 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10922 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10923 msm_routing_get_port_mixer,
10924 msm_routing_put_port_mixer),
10925 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10926 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10927 msm_routing_get_port_mixer,
10928 msm_routing_put_port_mixer),
10929 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10930 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10931 msm_routing_get_port_mixer,
10932 msm_routing_put_port_mixer),
10933 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10934 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10935 msm_routing_get_port_mixer,
10936 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010937 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10938 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10939 msm_routing_get_port_mixer,
10940 msm_routing_put_port_mixer),
10941 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10942 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10943 msm_routing_get_port_mixer,
10944 msm_routing_put_port_mixer),
10945 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10946 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10947 msm_routing_get_port_mixer,
10948 msm_routing_put_port_mixer),
10949 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10950 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10951 msm_routing_get_port_mixer,
10952 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010953};
10954
10955static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10956 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10957 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10958 msm_routing_get_port_mixer,
10959 msm_routing_put_port_mixer),
10960 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10961 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10962 msm_routing_get_port_mixer,
10963 msm_routing_put_port_mixer),
10964 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10965 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10966 msm_routing_get_port_mixer,
10967 msm_routing_put_port_mixer),
10968 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10969 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10970 msm_routing_get_port_mixer,
10971 msm_routing_put_port_mixer),
10972 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10973 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10974 msm_routing_get_port_mixer,
10975 msm_routing_put_port_mixer),
10976 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10977 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10978 msm_routing_get_port_mixer,
10979 msm_routing_put_port_mixer),
10980 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10981 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10982 msm_routing_get_port_mixer,
10983 msm_routing_put_port_mixer),
10984 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10985 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10986 msm_routing_get_port_mixer,
10987 msm_routing_put_port_mixer),
10988 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10989 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10990 msm_routing_get_port_mixer,
10991 msm_routing_put_port_mixer),
10992 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10993 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10994 msm_routing_get_port_mixer,
10995 msm_routing_put_port_mixer),
10996 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10997 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10998 msm_routing_get_port_mixer,
10999 msm_routing_put_port_mixer),
11000 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
11001 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11002 msm_routing_get_port_mixer,
11003 msm_routing_put_port_mixer),
11004 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
11005 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11006 msm_routing_get_port_mixer,
11007 msm_routing_put_port_mixer),
11008 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
11009 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11010 msm_routing_get_port_mixer,
11011 msm_routing_put_port_mixer),
11012 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
11013 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11014 msm_routing_get_port_mixer,
11015 msm_routing_put_port_mixer),
11016 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
11017 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11018 msm_routing_get_port_mixer,
11019 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011020 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
11021 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11022 msm_routing_get_port_mixer,
11023 msm_routing_put_port_mixer),
11024 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
11025 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11026 msm_routing_get_port_mixer,
11027 msm_routing_put_port_mixer),
11028 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
11029 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11030 msm_routing_get_port_mixer,
11031 msm_routing_put_port_mixer),
11032 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
11033 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11034 msm_routing_get_port_mixer,
11035 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011036};
11037
11038static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
11039 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11040 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11041 msm_routing_get_port_mixer,
11042 msm_routing_put_port_mixer),
11043 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11044 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11045 msm_routing_get_port_mixer,
11046 msm_routing_put_port_mixer),
11047 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11048 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11049 msm_routing_get_port_mixer,
11050 msm_routing_put_port_mixer),
11051 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11052 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11053 msm_routing_get_port_mixer,
11054 msm_routing_put_port_mixer),
11055 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11056 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11057 msm_routing_get_port_mixer,
11058 msm_routing_put_port_mixer),
11059 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11060 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11061 msm_routing_get_port_mixer,
11062 msm_routing_put_port_mixer),
11063 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11064 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11065 msm_routing_get_port_mixer,
11066 msm_routing_put_port_mixer),
11067 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11068 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11069 msm_routing_get_port_mixer,
11070 msm_routing_put_port_mixer),
11071 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11072 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11073 msm_routing_get_port_mixer,
11074 msm_routing_put_port_mixer),
11075 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11076 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11077 msm_routing_get_port_mixer,
11078 msm_routing_put_port_mixer),
11079 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11080 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11081 msm_routing_get_port_mixer,
11082 msm_routing_put_port_mixer),
11083 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11084 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11085 msm_routing_get_port_mixer,
11086 msm_routing_put_port_mixer),
11087 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11088 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11089 msm_routing_get_port_mixer,
11090 msm_routing_put_port_mixer),
11091 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11092 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11093 msm_routing_get_port_mixer,
11094 msm_routing_put_port_mixer),
11095 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11096 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11097 msm_routing_get_port_mixer,
11098 msm_routing_put_port_mixer),
11099 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11100 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11101 msm_routing_get_port_mixer,
11102 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011103 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11104 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11105 msm_routing_get_port_mixer,
11106 msm_routing_put_port_mixer),
11107 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11108 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11109 msm_routing_get_port_mixer,
11110 msm_routing_put_port_mixer),
11111 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11112 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11113 msm_routing_get_port_mixer,
11114 msm_routing_put_port_mixer),
11115 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11116 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11117 msm_routing_get_port_mixer,
11118 msm_routing_put_port_mixer),
11119};
11120
11121static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
11122 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11123 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11124 msm_routing_get_port_mixer,
11125 msm_routing_put_port_mixer),
11126 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11127 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11128 msm_routing_get_port_mixer,
11129 msm_routing_put_port_mixer),
11130 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11131 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11132 msm_routing_get_port_mixer,
11133 msm_routing_put_port_mixer),
11134 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11135 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11136 msm_routing_get_port_mixer,
11137 msm_routing_put_port_mixer),
11138 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11139 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11140 msm_routing_get_port_mixer,
11141 msm_routing_put_port_mixer),
11142 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11143 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11144 msm_routing_get_port_mixer,
11145 msm_routing_put_port_mixer),
11146 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11147 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11148 msm_routing_get_port_mixer,
11149 msm_routing_put_port_mixer),
11150 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11151 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11152 msm_routing_get_port_mixer,
11153 msm_routing_put_port_mixer),
11154 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11155 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11156 msm_routing_get_port_mixer,
11157 msm_routing_put_port_mixer),
11158 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11159 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11160 msm_routing_get_port_mixer,
11161 msm_routing_put_port_mixer),
11162 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11163 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11164 msm_routing_get_port_mixer,
11165 msm_routing_put_port_mixer),
11166 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11167 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11168 msm_routing_get_port_mixer,
11169 msm_routing_put_port_mixer),
11170 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11171 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11172 msm_routing_get_port_mixer,
11173 msm_routing_put_port_mixer),
11174 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11175 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11176 msm_routing_get_port_mixer,
11177 msm_routing_put_port_mixer),
11178 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11179 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11180 msm_routing_get_port_mixer,
11181 msm_routing_put_port_mixer),
11182 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11183 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11184 msm_routing_get_port_mixer,
11185 msm_routing_put_port_mixer),
11186 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11187 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11188 msm_routing_get_port_mixer,
11189 msm_routing_put_port_mixer),
11190 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11191 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11192 msm_routing_get_port_mixer,
11193 msm_routing_put_port_mixer),
11194 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11195 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11196 msm_routing_get_port_mixer,
11197 msm_routing_put_port_mixer),
11198 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11199 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11200 msm_routing_get_port_mixer,
11201 msm_routing_put_port_mixer),
11202};
11203
11204static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
11205 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11206 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11207 msm_routing_get_port_mixer,
11208 msm_routing_put_port_mixer),
11209 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11210 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11211 msm_routing_get_port_mixer,
11212 msm_routing_put_port_mixer),
11213 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11214 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11215 msm_routing_get_port_mixer,
11216 msm_routing_put_port_mixer),
11217 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11218 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11219 msm_routing_get_port_mixer,
11220 msm_routing_put_port_mixer),
11221 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11222 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11223 msm_routing_get_port_mixer,
11224 msm_routing_put_port_mixer),
11225 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11226 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11227 msm_routing_get_port_mixer,
11228 msm_routing_put_port_mixer),
11229 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11230 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11231 msm_routing_get_port_mixer,
11232 msm_routing_put_port_mixer),
11233 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11234 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11235 msm_routing_get_port_mixer,
11236 msm_routing_put_port_mixer),
11237 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11238 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11239 msm_routing_get_port_mixer,
11240 msm_routing_put_port_mixer),
11241 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11242 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11243 msm_routing_get_port_mixer,
11244 msm_routing_put_port_mixer),
11245 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11246 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11247 msm_routing_get_port_mixer,
11248 msm_routing_put_port_mixer),
11249 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11250 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11251 msm_routing_get_port_mixer,
11252 msm_routing_put_port_mixer),
11253 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11254 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11255 msm_routing_get_port_mixer,
11256 msm_routing_put_port_mixer),
11257 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11258 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11259 msm_routing_get_port_mixer,
11260 msm_routing_put_port_mixer),
11261 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11262 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11263 msm_routing_get_port_mixer,
11264 msm_routing_put_port_mixer),
11265 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11266 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11267 msm_routing_get_port_mixer,
11268 msm_routing_put_port_mixer),
11269 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11270 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11271 msm_routing_get_port_mixer,
11272 msm_routing_put_port_mixer),
11273 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11274 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11275 msm_routing_get_port_mixer,
11276 msm_routing_put_port_mixer),
11277 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11278 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11279 msm_routing_get_port_mixer,
11280 msm_routing_put_port_mixer),
11281 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11282 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11283 msm_routing_get_port_mixer,
11284 msm_routing_put_port_mixer),
11285};
11286
11287static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
11288 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11289 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11290 msm_routing_get_port_mixer,
11291 msm_routing_put_port_mixer),
11292 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11293 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11294 msm_routing_get_port_mixer,
11295 msm_routing_put_port_mixer),
11296 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11297 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11298 msm_routing_get_port_mixer,
11299 msm_routing_put_port_mixer),
11300 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11301 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11302 msm_routing_get_port_mixer,
11303 msm_routing_put_port_mixer),
11304 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11305 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11306 msm_routing_get_port_mixer,
11307 msm_routing_put_port_mixer),
11308 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11309 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11310 msm_routing_get_port_mixer,
11311 msm_routing_put_port_mixer),
11312 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11313 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11314 msm_routing_get_port_mixer,
11315 msm_routing_put_port_mixer),
11316 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11317 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11318 msm_routing_get_port_mixer,
11319 msm_routing_put_port_mixer),
11320 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11321 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11322 msm_routing_get_port_mixer,
11323 msm_routing_put_port_mixer),
11324 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11325 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11326 msm_routing_get_port_mixer,
11327 msm_routing_put_port_mixer),
11328 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11329 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11330 msm_routing_get_port_mixer,
11331 msm_routing_put_port_mixer),
11332 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11333 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11334 msm_routing_get_port_mixer,
11335 msm_routing_put_port_mixer),
11336 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11337 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11338 msm_routing_get_port_mixer,
11339 msm_routing_put_port_mixer),
11340 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11341 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11342 msm_routing_get_port_mixer,
11343 msm_routing_put_port_mixer),
11344 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11345 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11346 msm_routing_get_port_mixer,
11347 msm_routing_put_port_mixer),
11348 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11349 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11350 msm_routing_get_port_mixer,
11351 msm_routing_put_port_mixer),
11352 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11353 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11354 msm_routing_get_port_mixer,
11355 msm_routing_put_port_mixer),
11356 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11357 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11358 msm_routing_get_port_mixer,
11359 msm_routing_put_port_mixer),
11360 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11361 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11362 msm_routing_get_port_mixer,
11363 msm_routing_put_port_mixer),
11364 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11365 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11366 msm_routing_get_port_mixer,
11367 msm_routing_put_port_mixer),
11368};
11369
11370static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
11371 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11372 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11373 msm_routing_get_port_mixer,
11374 msm_routing_put_port_mixer),
11375 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11376 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11377 msm_routing_get_port_mixer,
11378 msm_routing_put_port_mixer),
11379 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11380 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11381 msm_routing_get_port_mixer,
11382 msm_routing_put_port_mixer),
11383 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11384 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11385 msm_routing_get_port_mixer,
11386 msm_routing_put_port_mixer),
11387 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11388 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11389 msm_routing_get_port_mixer,
11390 msm_routing_put_port_mixer),
11391 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11392 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11393 msm_routing_get_port_mixer,
11394 msm_routing_put_port_mixer),
11395 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11396 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11397 msm_routing_get_port_mixer,
11398 msm_routing_put_port_mixer),
11399 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11400 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11401 msm_routing_get_port_mixer,
11402 msm_routing_put_port_mixer),
11403 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11404 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11405 msm_routing_get_port_mixer,
11406 msm_routing_put_port_mixer),
11407 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11408 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11409 msm_routing_get_port_mixer,
11410 msm_routing_put_port_mixer),
11411 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11412 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11413 msm_routing_get_port_mixer,
11414 msm_routing_put_port_mixer),
11415 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11416 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11417 msm_routing_get_port_mixer,
11418 msm_routing_put_port_mixer),
11419 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11420 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11421 msm_routing_get_port_mixer,
11422 msm_routing_put_port_mixer),
11423 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11424 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11425 msm_routing_get_port_mixer,
11426 msm_routing_put_port_mixer),
11427 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11428 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11429 msm_routing_get_port_mixer,
11430 msm_routing_put_port_mixer),
11431 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11432 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11433 msm_routing_get_port_mixer,
11434 msm_routing_put_port_mixer),
11435 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11436 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11437 msm_routing_get_port_mixer,
11438 msm_routing_put_port_mixer),
11439 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11440 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11441 msm_routing_get_port_mixer,
11442 msm_routing_put_port_mixer),
11443 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11444 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11445 msm_routing_get_port_mixer,
11446 msm_routing_put_port_mixer),
11447 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11448 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11449 msm_routing_get_port_mixer,
11450 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011451};
11452
11453static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
11454 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11455 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11456 msm_routing_put_port_mixer),
11457 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11458 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11459 msm_routing_put_port_mixer),
11460 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11461 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11462 msm_routing_put_port_mixer),
11463 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11464 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11465 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011466 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11467 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11468 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011469 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11470 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11471 msm_routing_put_port_mixer),
11472 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11473 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11474 msm_routing_put_port_mixer),
11475};
11476
11477static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
11478 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11479 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11480 msm_routing_put_port_mixer),
11481 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11482 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11483 msm_routing_put_port_mixer),
11484 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11485 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11486 msm_routing_put_port_mixer),
11487 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11488 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11489 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011490 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11491 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11492 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011493 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11494 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11495 msm_routing_put_port_mixer),
11496 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11497 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
11498 msm_routing_put_port_mixer),
11499 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11500 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11501 msm_routing_put_port_mixer),
11502};
11503
11504static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
11505 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11506 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11507 msm_routing_put_listen_mixer),
11508 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11509 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11510 msm_routing_put_listen_mixer),
11511 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11512 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11513 msm_routing_put_listen_mixer),
11514 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11515 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11516 msm_routing_put_listen_mixer),
11517 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11518 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11519 msm_routing_put_listen_mixer),
11520 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11521 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11522 msm_routing_put_listen_mixer),
11523 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11524 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11525 msm_routing_put_listen_mixer),
11526 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11527 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11528 msm_routing_put_listen_mixer),
11529};
11530
11531static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
11532 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11533 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11534 msm_routing_put_listen_mixer),
11535 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11536 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11537 msm_routing_put_listen_mixer),
11538 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11539 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11540 msm_routing_put_listen_mixer),
11541 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11542 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11543 msm_routing_put_listen_mixer),
11544 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11545 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11546 msm_routing_put_listen_mixer),
11547 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11548 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11549 msm_routing_put_listen_mixer),
11550 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11551 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11552 msm_routing_put_listen_mixer),
11553 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11554 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11555 msm_routing_put_listen_mixer),
11556};
11557
11558static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
11559 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11560 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11561 msm_routing_put_listen_mixer),
11562 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11563 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11564 msm_routing_put_listen_mixer),
11565 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11566 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11567 msm_routing_put_listen_mixer),
11568 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11569 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11570 msm_routing_put_listen_mixer),
11571 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11572 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11573 msm_routing_put_listen_mixer),
11574 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11575 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11576 msm_routing_put_listen_mixer),
11577 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11578 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11579 msm_routing_put_listen_mixer),
11580 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11581 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11582 msm_routing_put_listen_mixer),
11583};
11584
11585static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11586 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11587 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11588 msm_routing_put_listen_mixer),
11589 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11590 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11591 msm_routing_put_listen_mixer),
11592 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11593 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11594 msm_routing_put_listen_mixer),
11595 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11596 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11597 msm_routing_put_listen_mixer),
11598 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11599 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11600 msm_routing_put_listen_mixer),
11601 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11602 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11603 msm_routing_put_listen_mixer),
11604 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11605 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11606 msm_routing_put_listen_mixer),
11607 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11608 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11609 msm_routing_put_listen_mixer),
11610};
11611
11612static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11613 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11614 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11615 msm_routing_put_listen_mixer),
11616 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11617 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11618 msm_routing_put_listen_mixer),
11619 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11620 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11621 msm_routing_put_listen_mixer),
11622 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11623 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11624 msm_routing_put_listen_mixer),
11625 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11626 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11627 msm_routing_put_listen_mixer),
11628 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11629 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11630 msm_routing_put_listen_mixer),
11631 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11632 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11633 msm_routing_put_listen_mixer),
11634 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11635 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11636 msm_routing_put_listen_mixer),
11637};
11638
11639static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11640 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11641 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11642 msm_routing_put_listen_mixer),
11643 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11644 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11645 msm_routing_put_listen_mixer),
11646 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11647 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11648 msm_routing_put_listen_mixer),
11649 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11650 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11651 msm_routing_put_listen_mixer),
11652 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11653 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11654 msm_routing_put_listen_mixer),
11655 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11656 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11657 msm_routing_put_listen_mixer),
11658 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11659 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11660 msm_routing_put_listen_mixer),
11661 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11662 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11663 msm_routing_put_listen_mixer),
11664};
11665
11666static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11667 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11668 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11669 msm_routing_put_listen_mixer),
11670 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11671 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11672 msm_routing_put_listen_mixer),
11673 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11674 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11675 msm_routing_put_listen_mixer),
11676 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11677 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11678 msm_routing_put_listen_mixer),
11679 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11680 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11681 msm_routing_put_listen_mixer),
11682 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11683 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11684 msm_routing_put_listen_mixer),
11685 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11686 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11687 msm_routing_put_listen_mixer),
11688 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11689 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11690 msm_routing_put_listen_mixer),
11691};
11692
11693static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11694 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11695 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11696 msm_routing_put_listen_mixer),
11697 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11698 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11699 msm_routing_put_listen_mixer),
11700 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11701 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11702 msm_routing_put_listen_mixer),
11703 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11704 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11705 msm_routing_put_listen_mixer),
11706 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11707 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11708 msm_routing_put_listen_mixer),
11709 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11710 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11711 msm_routing_put_listen_mixer),
11712 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11713 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11714 msm_routing_put_listen_mixer),
11715 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11716 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11717 msm_routing_put_listen_mixer),
11718};
11719
11720static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11721 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11722 0, 1, 0, msm_routing_get_switch_mixer,
11723 msm_routing_put_switch_mixer);
11724
11725static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11726 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11727 0, 1, 0, msm_routing_get_switch_mixer,
11728 msm_routing_put_switch_mixer);
11729
11730static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11731 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11732 0, 1, 0, msm_routing_get_switch_mixer,
11733 msm_routing_put_switch_mixer);
11734
11735static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11736 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11737 0, 1, 0, msm_routing_get_switch_mixer,
11738 msm_routing_put_switch_mixer);
11739
11740static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11741 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11742 0, 1, 0, msm_routing_get_switch_mixer,
11743 msm_routing_put_switch_mixer);
11744
11745static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11746 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11747 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11748 msm_routing_put_fm_pcmrx_switch_mixer);
11749
11750static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11751 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11752 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11753 msm_routing_put_int0_mi2s_switch_mixer);
11754
11755static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11756 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11757 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11758 msm_routing_put_int4_mi2s_switch_mixer);
11759
11760static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11761 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11762 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11763 msm_routing_put_pri_mi2s_switch_mixer);
11764
11765static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11766 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11767 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11768 msm_routing_put_sec_mi2s_switch_mixer);
11769
11770static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11771 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11772 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11773 msm_routing_put_tert_mi2s_switch_mixer);
11774
11775static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11776 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11777 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11778 msm_routing_put_quat_mi2s_switch_mixer);
11779
Rohit Kumara5077932017-09-10 22:05:05 +053011780static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11781 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11782 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11783 msm_routing_put_quin_mi2s_switch_mixer);
11784
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011785static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11786 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11787 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11788 msm_routing_put_hfp_switch_mixer);
11789
11790static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11791 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11792 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11793 msm_routing_put_hfp_switch_mixer);
11794
11795static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11796 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11797 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11798 msm_routing_put_hfp_switch_mixer);
11799
11800static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11801 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11802 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11803 msm_routing_put_hfp_switch_mixer);
11804
11805static const struct snd_kcontrol_new usb_switch_mixer_controls =
11806 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11807 0, 1, 0, msm_routing_get_usb_switch_mixer,
11808 msm_routing_put_usb_switch_mixer);
11809
11810static const struct soc_enum lsm_port_enum =
11811 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11812
11813static const char * const lsm_func_text[] = {
11814 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11815};
11816static const struct soc_enum lsm_func_enum =
11817 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11818
11819static const struct snd_kcontrol_new lsm_controls[] = {
11820 /* kcontrol of lsm_function */
11821 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11822 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11823 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11824 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11825 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11826 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11827 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11828 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11829 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11830 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11831 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11832 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11833 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11834 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11835 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11836 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11837 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11838 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11839 /* kcontrol of lsm_port */
11840 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11841 msm_routing_lsm_port_get,
11842 msm_routing_lsm_port_put),
11843 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11844 msm_routing_lsm_port_get,
11845 msm_routing_lsm_port_put),
11846 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11847 msm_routing_lsm_port_get,
11848 msm_routing_lsm_port_put),
11849 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11850 msm_routing_lsm_port_get,
11851 msm_routing_lsm_port_put),
11852 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11853 msm_routing_lsm_port_get,
11854 msm_routing_lsm_port_put),
11855 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11856 msm_routing_lsm_port_get,
11857 msm_routing_lsm_port_put),
11858 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11859 msm_routing_lsm_port_get,
11860 msm_routing_lsm_port_put),
11861 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11862 msm_routing_lsm_port_get,
11863 msm_routing_lsm_port_put),
11864};
11865
11866static const char * const aanc_slim_0_rx_text[] = {
11867 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11868 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11869};
11870
11871static const struct soc_enum aanc_slim_0_rx_enum =
11872 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11873 aanc_slim_0_rx_text);
11874
11875static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11876 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11877 msm_routing_slim_0_rx_aanc_mux_get,
11878 msm_routing_slim_0_rx_aanc_mux_put)
11879};
11880
11881static int msm_routing_get_stereo_to_custom_stereo_control(
11882 struct snd_kcontrol *kcontrol,
11883 struct snd_ctl_elem_value *ucontrol)
11884{
11885 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11886 return 0;
11887}
11888
11889static int msm_routing_put_stereo_to_custom_stereo_control(
11890 struct snd_kcontrol *kcontrol,
11891 struct snd_ctl_elem_value *ucontrol)
11892{
11893 int flag = 0, i = 0, rc = 0, idx = 0;
11894 int be_index = 0, port_id, topo_id;
11895 unsigned int session_id = 0;
11896 uint16_t op_FL_ip_FL_weight = 0;
11897 uint16_t op_FL_ip_FR_weight = 0;
11898 uint16_t op_FR_ip_FL_weight = 0;
11899 uint16_t op_FR_ip_FR_weight = 0;
11900
11901 flag = ucontrol->value.integer.value[0];
11902 pr_debug("%s E flag %d\n", __func__, flag);
11903
11904 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11905 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11906 __func__, is_custom_stereo_on, flag);
11907 return 0;
11908 }
11909 is_custom_stereo_on = flag ? true : false;
11910 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11911 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11912 port_id = msm_bedais[be_index].port_id;
11913 if (!msm_bedais[be_index].active)
11914 continue;
11915 if ((port_id != SLIMBUS_0_RX) &&
11916 (port_id != RT_PROXY_PORT_001_RX) &&
11917 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11918 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11919 continue;
11920
11921 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11922 MSM_FRONTEND_DAI_MM_SIZE) {
11923 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11924 LEGACY_PCM_MODE)
11925 goto skip_send_custom_stereo;
11926 session_id =
11927 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11928 if (is_custom_stereo_on) {
11929 op_FL_ip_FL_weight =
11930 Q14_GAIN_ZERO_POINT_FIVE;
11931 op_FL_ip_FR_weight =
11932 Q14_GAIN_ZERO_POINT_FIVE;
11933 op_FR_ip_FL_weight =
11934 Q14_GAIN_ZERO_POINT_FIVE;
11935 op_FR_ip_FR_weight =
11936 Q14_GAIN_ZERO_POINT_FIVE;
11937 } else {
11938 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11939 op_FL_ip_FR_weight = 0;
11940 op_FR_ip_FL_weight = 0;
11941 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11942 }
11943 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11944 unsigned long copp =
11945 session_copp_map[i]
11946 [SESSION_TYPE_RX][be_index];
11947 if (!test_bit(idx, &copp))
11948 goto skip_send_custom_stereo;
11949 topo_id = adm_get_topology_for_port_copp_idx(
11950 msm_bedais[be_index].port_id, idx);
11951 if (topo_id < 0)
11952 pr_debug("%s:Err:custom stereo topo %d",
11953 __func__, topo_id);
11954 pr_debug("idx %d\n", idx);
11955 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11956 rc = msm_ds2_dap_set_custom_stereo_onoff
11957 (msm_bedais[be_index].port_id,
11958 idx, is_custom_stereo_on);
11959 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11960 rc = dolby_dap_set_custom_stereo_onoff(
11961 msm_bedais[be_index].port_id,
11962 idx, is_custom_stereo_on);
11963 else
11964 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11965 (msm_bedais[be_index].port_id,
11966 idx, session_id,
11967 op_FL_ip_FL_weight,
11968 op_FL_ip_FR_weight,
11969 op_FR_ip_FL_weight,
11970 op_FR_ip_FR_weight);
11971 if (rc < 0)
11972skip_send_custom_stereo:
11973 pr_err("%s: err setting custom stereo\n",
11974 __func__);
11975 }
11976
11977 }
11978 }
11979 return 0;
11980}
11981
11982static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11983 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11984 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11985 msm_routing_put_stereo_to_custom_stereo_control),
11986};
11987
11988static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11989 struct snd_ctl_elem_value *ucontrol)
11990{
11991 return 0;
11992}
11993
11994static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11995 struct snd_ctl_elem_value *ucontrol)
11996{
11997 int i = 0, j;
11998 int num_app_types = ucontrol->value.integer.value[i++];
11999
12000 pr_debug("%s\n", __func__);
12001
12002 memset(app_type_cfg, 0, MAX_APP_TYPES*
12003 sizeof(struct msm_pcm_routing_app_type_data));
12004 if (num_app_types > MAX_APP_TYPES) {
12005 pr_err("%s: number of app types exceed the max supported\n",
12006 __func__);
12007 return -EINVAL;
12008 }
12009 for (j = 0; j < num_app_types; j++) {
12010 app_type_cfg[j].app_type =
12011 ucontrol->value.integer.value[i++];
12012 app_type_cfg[j].sample_rate =
12013 ucontrol->value.integer.value[i++];
12014 app_type_cfg[j].bit_width =
12015 ucontrol->value.integer.value[i++];
12016 }
12017
12018 return 0;
12019}
12020
12021static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
12022 struct snd_ctl_elem_value *ucontrol)
12023{
12024 int j, fe_id, be_id, port_type;
12025 int ret = 0;
12026 unsigned long copp;
12027 struct msm_pcm_routing_bdai_data *bedai;
12028 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
12029 SESSION_TYPE_RX;
12030 int app_type = ucontrol->value.integer.value[1];
12031 int gain = (ucontrol->value.integer.value[2] +
12032 ucontrol->value.integer.value[3])/2;
12033
12034 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
12035 MSM_AFE_PORT_TYPE_TX;
12036
12037 mutex_lock(&routing_lock);
12038 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
12039 if (is_be_dai_extproc(be_id))
12040 continue;
12041
12042 bedai = &msm_bedais[be_id];
12043 if (afe_get_port_type(bedai->port_id) != port_type)
12044 continue;
12045
12046 if (!bedai->active)
12047 continue;
12048
12049 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
12050 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
12051 continue;
12052
12053 if (app_type !=
12054 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
12055 continue;
12056
12057 copp = session_copp_map[fe_id][dir][be_id];
12058 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
12059 if (!test_bit(j, &copp))
12060 continue;
12061 ret |= adm_set_volume(bedai->port_id, j, gain);
12062 }
12063 }
12064 }
12065 mutex_unlock(&routing_lock);
12066 return ret ? -EINVAL : 0;
12067}
12068
12069static const struct snd_kcontrol_new app_type_cfg_controls[] = {
12070 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
12071 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
12072 msm_routing_put_app_type_cfg_control),
12073 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
12074 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
12075};
12076
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070012077static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
12078 struct snd_ctl_elem_value *ucontrol)
12079{
12080 int copp_idx, fe_id, be_id, port_type;
12081 int ret = 0;
12082 unsigned long copp;
12083 struct msm_pcm_routing_bdai_data *bedai;
12084 char *param_data = NULL;
12085 uint32_t *update_param_data = NULL;
12086 uint32_t param_size = sizeof(uint32_t) +
12087 sizeof(struct adm_param_data_v5);
12088 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
12089 SESSION_TYPE_RX;
12090 int app_type = ucontrol->value.integer.value[1];
12091 int module_id = ucontrol->value.integer.value[2];
12092 int instance_id = ucontrol->value.integer.value[3];
12093 int param_id = ucontrol->value.integer.value[4];
12094 int param_value = ucontrol->value.integer.value[5];
12095
12096 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
12097 MSM_AFE_PORT_TYPE_TX;
12098 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
12099 __func__, app_type, module_id,
12100 instance_id, param_id, param_value);
12101
12102 param_data = kzalloc(param_size, GFP_KERNEL);
12103 if (!param_data)
12104 return -ENOMEM;
12105
12106 update_param_data = (uint32_t *)param_data;
12107 *update_param_data++ = module_id;
12108 *update_param_data++ = param_id;
12109 *update_param_data++ = sizeof(uint32_t);
12110 *update_param_data++ = param_value;
12111
12112 mutex_lock(&routing_lock);
12113 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
12114 if (is_be_dai_extproc(be_id))
12115 continue;
12116
12117 bedai = &msm_bedais[be_id];
12118 if (afe_get_port_type(bedai->port_id) != port_type)
12119 continue;
12120
12121 if (!bedai->active)
12122 continue;
12123
12124 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
12125 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
12126 continue;
12127
12128 if (app_type !=
12129 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
12130 continue;
12131
12132 copp = session_copp_map[fe_id][dir][be_id];
12133 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
12134 copp_idx++) {
12135 if (!test_bit(copp_idx, &copp))
12136 continue;
12137
12138 ret = adm_send_params_v5(bedai->port_id,
12139 copp_idx,
12140 param_data,
12141 param_size);
12142 if (ret) {
12143 pr_err("%s: Setting param failed with err=%d\n",
12144 __func__, ret);
12145 ret = -EINVAL;
12146 goto done;
12147 }
12148 }
12149 }
12150 }
12151done:
12152 mutex_unlock(&routing_lock);
12153 kfree(param_data);
12154 return ret;
12155}
12156
12157static const struct snd_kcontrol_new module_cfg_controls[] = {
12158 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
12159 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
12160};
12161
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012162static int msm_routing_get_lsm_app_type_cfg_control(
12163 struct snd_kcontrol *kcontrol,
12164 struct snd_ctl_elem_value *ucontrol)
12165{
12166 return 0;
12167}
12168
12169static int msm_routing_put_lsm_app_type_cfg_control(
12170 struct snd_kcontrol *kcontrol,
12171 struct snd_ctl_elem_value *ucontrol)
12172{
12173 int i = 0, j;
12174 int num_app_types = ucontrol->value.integer.value[i++];
12175
12176 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
12177 sizeof(struct msm_pcm_routing_app_type_data));
12178 if (num_app_types > MAX_APP_TYPES) {
12179 pr_err("%s: number of app types exceed the max supported\n",
12180 __func__);
12181 return -EINVAL;
12182 }
12183 for (j = 0; j < num_app_types; j++) {
12184 lsm_app_type_cfg[j].app_type =
12185 ucontrol->value.integer.value[i++];
12186 lsm_app_type_cfg[j].sample_rate =
12187 ucontrol->value.integer.value[i++];
12188 lsm_app_type_cfg[j].bit_width =
12189 ucontrol->value.integer.value[i++];
12190 }
12191
12192 return 0;
12193}
12194
12195static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
12196 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
12197 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
12198 msm_routing_put_lsm_app_type_cfg_control),
12199};
12200
12201static int msm_routing_get_use_ds1_or_ds2_control(
12202 struct snd_kcontrol *kcontrol,
12203 struct snd_ctl_elem_value *ucontrol)
12204{
12205 ucontrol->value.integer.value[0] = is_ds2_on;
12206 return 0;
12207}
12208
12209static int msm_routing_put_use_ds1_or_ds2_control(
12210 struct snd_kcontrol *kcontrol,
12211 struct snd_ctl_elem_value *ucontrol)
12212{
12213 is_ds2_on = ucontrol->value.integer.value[0];
12214 return 0;
12215}
12216
12217static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
12218 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
12219 1, 0, msm_routing_get_use_ds1_or_ds2_control,
12220 msm_routing_put_use_ds1_or_ds2_control),
12221};
12222
12223int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
12224 struct snd_ctl_elem_value *ucontrol) {
12225 int rc = 0;
12226 int be_idx = 0;
12227 char *param_value;
12228 int *update_param_value;
12229 uint32_t param_length = sizeof(uint32_t);
12230 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
12231
12232 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
12233 if (!param_value)
12234 return -ENOMEM;
12235
12236 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
12237 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
12238 break;
12239 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
12240 rc = adm_get_params(SLIMBUS_0_TX, 0,
12241 RMS_MODULEID_APPI_PASSTHRU,
12242 RMS_PARAM_FIRST_SAMPLE,
12243 param_length + param_payload_len,
12244 param_value);
12245 if (rc) {
12246 pr_err("%s: get parameters failed:%d\n", __func__, rc);
12247 kfree(param_value);
12248 return -EINVAL;
12249 }
12250 update_param_value = (int *)param_value;
12251 ucontrol->value.integer.value[0] = update_param_value[0];
12252
12253 pr_debug("%s: FROM DSP value[0] 0x%x\n",
12254 __func__, update_param_value[0]);
12255 }
12256 kfree(param_value);
12257 return 0;
12258}
12259
12260static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
12261 struct snd_ctl_elem_value *ucontrol)
12262{
12263 voc_session_id = ucontrol->value.integer.value[0];
12264
12265 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
12266
12267 return 0;
12268}
12269
12270static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
12271 struct snd_ctl_elem_value *ucontrol)
12272{
12273 ucontrol->value.integer.value[0] = voc_session_id;
12274
12275 return 0;
12276}
12277
12278static struct snd_kcontrol_new msm_voc_session_controls[] = {
12279 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
12280 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
12281 msm_voc_session_id_put),
12282};
12283
12284static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
12285 struct snd_ctl_elem_info *uinfo)
12286{
12287 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12288 uinfo->count = sizeof(struct sound_focus_param);
12289
12290 return 0;
12291}
12292
12293static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
12294 struct snd_ctl_elem_value *ucontrol)
12295{
12296 int ret = 0;
12297 struct sound_focus_param soundFocusData;
12298
12299 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12300 sizeof(struct sound_focus_param));
12301 ret = voc_set_sound_focus(soundFocusData);
12302 if (ret) {
12303 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12304 __func__, ret);
12305
12306 ret = -EINVAL;
12307 }
12308
12309 return ret;
12310}
12311
12312static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
12313 struct snd_ctl_elem_value *ucontrol)
12314{
12315 int ret = 0;
12316 struct sound_focus_param soundFocusData;
12317
12318 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
12319
12320 ret = voc_get_sound_focus(&soundFocusData);
12321 if (ret) {
12322 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12323 __func__, ret);
12324
12325 ret = -EINVAL;
12326 goto done;
12327 }
12328 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12329 sizeof(struct sound_focus_param));
12330
12331done:
12332 return ret;
12333}
12334
12335static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
12336 struct snd_ctl_elem_info *uinfo)
12337{
12338 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12339 uinfo->count = sizeof(struct source_tracking_param);
12340
12341 return 0;
12342}
12343
12344static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
12345 struct snd_ctl_elem_value *ucontrol)
12346{
12347 int ret = 0;
12348 struct source_tracking_param sourceTrackingData;
12349
12350 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
12351
12352 ret = voc_get_source_tracking(&sourceTrackingData);
12353 if (ret) {
12354 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12355 __func__, ret);
12356
12357 ret = -EINVAL;
12358 goto done;
12359 }
12360 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12361 sizeof(struct source_tracking_param));
12362
12363done:
12364 return ret;
12365}
12366
12367static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
12368 int *copp_idx)
12369{
12370 int i, idx, be_idx;
12371 int ret = 0;
12372 unsigned long copp;
12373
12374 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
12375
12376 ret = q6audio_validate_port(port_id);
12377 if (ret < 0) {
12378 pr_err("%s: port validation failed id 0x%x ret %d\n",
12379 __func__, port_id, ret);
12380
12381 ret = -EINVAL;
12382 goto done;
12383 }
12384
12385 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
12386 if (msm_bedais[be_idx].port_id == port_id)
12387 break;
12388 }
12389 if (be_idx >= MSM_BACKEND_DAI_MAX) {
12390 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
12391
12392 ret = -EINVAL;
12393 goto done;
12394 }
12395
12396 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
12397 MSM_FRONTEND_DAI_MM_SIZE) {
12398 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
12399 copp = session_copp_map[i]
12400 [session_type][be_idx];
12401 if (test_bit(idx, &copp))
12402 break;
12403 }
12404 if (idx >= MAX_COPPS_PER_PORT)
12405 continue;
12406 else
12407 break;
12408 }
12409 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
12410 pr_err("%s: Invalid FE, exiting\n", __func__);
12411
12412 ret = -EINVAL;
12413 goto done;
12414 }
12415 *copp_idx = idx;
12416 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
12417
12418done:
12419 return ret;
12420}
12421
12422static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
12423 const char *prefix, int *port_id)
12424{
12425 int ret = 0;
12426
12427 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
12428
12429 /*
12430 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
12431 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
12432 * and compare the string with the backend name to derive the port id.
12433 */
12434 if (!strcmp(kcontrol->id.name + strlen(prefix),
12435 "SLIMBUS_0")) {
12436 *port_id = SLIMBUS_0_TX;
12437 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12438 "TERT_MI2S")) {
12439 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
12440 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12441 "INT3_MI2S")) {
12442 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
12443 } else {
12444 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
12445 __func__, kcontrol->id.name);
12446
12447 ret = -EINVAL;
12448 goto done;
12449 }
12450 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
12451 __func__, kcontrol->id.name, *port_id);
12452
12453done:
12454 return ret;
12455}
12456
12457static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
12458 struct snd_ctl_elem_value *ucontrol)
12459{
12460 int ret = 0;
12461 struct sound_focus_param soundFocusData;
12462 int port_id, copp_idx;
12463
12464 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12465 "Sound Focus Audio Tx ", &port_id);
12466 if (ret != 0) {
12467 pr_err("%s: Error in deriving port id, err=%d\n",
12468 __func__, ret);
12469
12470 ret = -EINVAL;
12471 goto done;
12472 }
12473
12474 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12475 &copp_idx);
12476 if (ret) {
12477 pr_err("%s: Could not get copp idx for port_id=%d\n",
12478 __func__, port_id);
12479
12480 ret = -EINVAL;
12481 goto done;
12482 }
12483
12484 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12485 sizeof(struct sound_focus_param));
12486
12487 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
12488 if (ret) {
12489 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12490 __func__, ret);
12491
12492 ret = -EINVAL;
12493 goto done;
12494 }
12495
12496done:
12497 return ret;
12498}
12499
12500static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
12501 struct snd_ctl_elem_value *ucontrol)
12502{
12503 int ret = 0;
12504 struct sound_focus_param soundFocusData;
12505 int port_id, copp_idx;
12506
12507 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12508 "Sound Focus Audio Tx ", &port_id);
12509 if (ret) {
12510 pr_err("%s: Error in deriving port id, err=%d\n",
12511 __func__, ret);
12512
12513 ret = -EINVAL;
12514 goto done;
12515 }
12516
12517 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12518 &copp_idx);
12519 if (ret) {
12520 pr_err("%s: Could not get copp idx for port_id=%d\n",
12521 __func__, port_id);
12522
12523 ret = -EINVAL;
12524 goto done;
12525 }
12526
12527 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
12528 if (ret) {
12529 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12530 __func__, ret);
12531
12532 ret = -EINVAL;
12533 goto done;
12534 }
12535
12536 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12537 sizeof(struct sound_focus_param));
12538
12539done:
12540 return ret;
12541}
12542
12543static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
12544 struct snd_ctl_elem_value *ucontrol)
12545{
12546 int ret = 0;
12547 struct source_tracking_param sourceTrackingData;
12548 int port_id, copp_idx;
12549
12550 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12551 "Source Tracking Audio Tx ", &port_id);
12552 if (ret) {
12553 pr_err("%s: Error in deriving port id, err=%d\n",
12554 __func__, ret);
12555
12556 ret = -EINVAL;
12557 goto done;
12558 }
12559
12560 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12561 &copp_idx);
12562 if (ret) {
12563 pr_err("%s: Could not get copp idx for port_id=%d\n",
12564 __func__, port_id);
12565
12566 ret = -EINVAL;
12567 goto done;
12568 }
12569
12570 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
12571 if (ret) {
12572 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12573 __func__, ret);
12574
12575 ret = -EINVAL;
12576 goto done;
12577 }
12578
12579 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12580 sizeof(struct source_tracking_param));
12581
12582done:
12583 return ret;
12584}
12585
12586static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12587 {
12588 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12589 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12590 .name = "Sound Focus Voice Tx SLIMBUS_0",
12591 .info = msm_sound_focus_info,
12592 .get = msm_voice_sound_focus_get,
12593 .put = msm_voice_sound_focus_put,
12594 },
12595 {
12596 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12597 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12598 .name = "Source Tracking Voice Tx SLIMBUS_0",
12599 .info = msm_source_tracking_info,
12600 .get = msm_voice_source_tracking_get,
12601 },
12602 {
12603 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12604 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12605 .name = "Sound Focus Audio Tx SLIMBUS_0",
12606 .info = msm_sound_focus_info,
12607 .get = msm_audio_sound_focus_get,
12608 .put = msm_audio_sound_focus_put,
12609 },
12610 {
12611 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12612 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12613 .name = "Source Tracking Audio Tx SLIMBUS_0",
12614 .info = msm_source_tracking_info,
12615 .get = msm_audio_source_tracking_get,
12616 },
12617 {
12618 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12619 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12620 .name = "Sound Focus Voice Tx TERT_MI2S",
12621 .info = msm_sound_focus_info,
12622 .get = msm_voice_sound_focus_get,
12623 .put = msm_voice_sound_focus_put,
12624 },
12625 {
12626 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12627 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12628 .name = "Source Tracking Voice Tx TERT_MI2S",
12629 .info = msm_source_tracking_info,
12630 .get = msm_voice_source_tracking_get,
12631 },
12632 {
12633 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12634 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12635 .name = "Sound Focus Audio Tx TERT_MI2S",
12636 .info = msm_sound_focus_info,
12637 .get = msm_audio_sound_focus_get,
12638 .put = msm_audio_sound_focus_put,
12639 },
12640 {
12641 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12642 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12643 .name = "Source Tracking Audio Tx TERT_MI2S",
12644 .info = msm_source_tracking_info,
12645 .get = msm_audio_source_tracking_get,
12646 },
12647 {
12648 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12649 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12650 .name = "Sound Focus Voice Tx INT3_MI2S",
12651 .info = msm_sound_focus_info,
12652 .get = msm_voice_sound_focus_get,
12653 .put = msm_voice_sound_focus_put,
12654 },
12655 {
12656 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12657 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12658 .name = "Source Tracking Voice Tx INT3_MI2S",
12659 .info = msm_source_tracking_info,
12660 .get = msm_voice_source_tracking_get,
12661 },
12662 {
12663 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12664 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12665 .name = "Sound Focus Audio Tx INT3_MI2S",
12666 .info = msm_sound_focus_info,
12667 .get = msm_audio_sound_focus_get,
12668 .put = msm_audio_sound_focus_put,
12669 },
12670 {
12671 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12672 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12673 .name = "Source Tracking Audio Tx INT3_MI2S",
12674 .info = msm_source_tracking_info,
12675 .get = msm_audio_source_tracking_get,
12676 },
12677};
12678
12679static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12680 struct snd_ctl_elem_value *ucontrol)
12681{
12682 int ret = 0;
12683 int item;
12684 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12685
12686 pr_debug("%s item is %d\n", __func__,
12687 ucontrol->value.enumerated.item[0]);
12688 mutex_lock(&routing_lock);
12689 item = ucontrol->value.enumerated.item[0];
12690 if (item < e->items) {
12691 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12692 __func__, e->shift_l, e->values[item]);
12693 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12694 e->values[item] < MSM_BACKEND_DAI_MAX)
12695 /* Enable feedback TX path */
12696 ret = afe_spk_prot_feed_back_cfg(
12697 msm_bedais[e->values[item]].port_id,
12698 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12699 else {
12700 pr_debug("%s values are out of range item %d\n",
12701 __func__, e->values[item]);
12702 /* Disable feedback TX path */
12703 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12704 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12705 else
12706 ret = -EINVAL;
12707 }
12708 } else {
12709 pr_err("%s item value is out of range item\n", __func__);
12710 ret = -EINVAL;
12711 }
12712 mutex_unlock(&routing_lock);
12713 return ret;
12714}
12715
12716static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12717 struct snd_ctl_elem_value *ucontrol)
12718{
12719 int ret = 0;
12720 int item;
12721 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12722
12723 pr_debug("%s item is %d\n", __func__,
12724 ucontrol->value.enumerated.item[0]);
12725 mutex_lock(&routing_lock);
12726 item = ucontrol->value.enumerated.item[0];
12727 if (item < e->items) {
12728 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12729 __func__, e->shift_l, e->values[item]);
12730 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12731 e->values[item] < MSM_BACKEND_DAI_MAX)
12732 /* Enable feedback TX path */
12733 ret = afe_spk_prot_feed_back_cfg(
12734 msm_bedais[e->values[item]].port_id,
12735 msm_bedais[e->shift_l].port_id,
12736 1, 1, 1);
12737 else {
12738 pr_debug("%s values are out of range item %d\n",
12739 __func__, e->values[item]);
12740 /* Disable feedback TX path */
12741 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12742 ret = afe_spk_prot_feed_back_cfg(0,
12743 0, 0, 0, 0);
12744 else
12745 ret = -EINVAL;
12746 }
12747 } else {
12748 pr_err("%s item value is out of range item\n", __func__);
12749 ret = -EINVAL;
12750 }
12751 mutex_unlock(&routing_lock);
12752 return ret;
12753}
12754
12755static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12756 struct snd_ctl_elem_value *ucontrol)
12757{
12758 pr_debug("%s\n", __func__);
12759 return 0;
12760}
12761
12762static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12763 struct snd_ctl_elem_value *ucontrol)
12764{
12765 pr_debug("%s\n", __func__);
12766 ucontrol->value.enumerated.item[0] = 0;
12767 return 0;
12768}
12769
12770static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12771 "ZERO", "SLIM4_TX"
12772};
12773
12774static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12775 "ZERO", "SLIM4_TX"
12776};
12777
12778static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12779 "ZERO", "SENARY_TX"
12780};
12781
12782static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12783 "ZERO", "INT5_MI2S_TX"
12784};
12785
12786static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12787 "ZERO", "INT5_MI2S_TX"
12788};
12789
12790static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12791 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12792};
12793
12794static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12795 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12796};
12797
12798static const int const mi2s_rx_vi_fb_tx_value[] = {
12799 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12800};
12801
12802static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12803 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12804};
12805
12806static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12807 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12808};
12809
12810static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
12811 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12812 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12813 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12814
12815static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
12816 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12817 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12818 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12819
12820static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
12821 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
12822 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12823 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12824
12825static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
12826 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12827 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12828 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12829 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12830
12831static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
12832 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12833 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12834 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12835 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12836
12837static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12838 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12839 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12840 spkr_prot_put_vi_lch_port);
12841
12842static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12843 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12844 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12845 spkr_prot_put_vi_rch_port);
12846
12847static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12848 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12849 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12850 spkr_prot_put_vi_lch_port);
12851
12852static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12853 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12854 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12855 spkr_prot_put_vi_lch_port);
12856
12857static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12858 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12859 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12860 spkr_prot_put_vi_rch_port);
12861
12862static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12863 /* Frontend AIF */
12864 /* Widget name equals to Front-End DAI name<Need confirmation>,
12865 * Stream name must contains substring of front-end dai name
12866 */
12867 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12868 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12869 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12870 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12871 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12872 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12873 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12874 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12875 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12876 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12877 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12878 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12879 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12880 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12881 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12882 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12883 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12884 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12885 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12886 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12887 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12888 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12889 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12890 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12891 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12892 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012893 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012894 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012895 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12896 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12897 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12898 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
12899 SND_SOC_DAPM_AIF_IN("CS-VOICE_DL1", "CS-VOICE Playback", 0, 0, 0, 0),
12900 SND_SOC_DAPM_AIF_OUT("CS-VOICE_UL1", "CS-VOICE Capture", 0, 0, 0, 0),
12901 SND_SOC_DAPM_AIF_IN("VOICE2_DL", "Voice2 Playback", 0, 0, 0, 0),
12902 SND_SOC_DAPM_AIF_OUT("VOICE2_UL", "Voice2 Capture", 0, 0, 0, 0),
12903 SND_SOC_DAPM_AIF_IN("VoLTE_DL", "VoLTE Playback", 0, 0, 0, 0),
12904 SND_SOC_DAPM_AIF_OUT("VoLTE_UL", "VoLTE Capture", 0, 0, 0, 0),
12905 SND_SOC_DAPM_AIF_IN("VoWLAN_DL", "VoWLAN Playback", 0, 0, 0, 0),
12906 SND_SOC_DAPM_AIF_OUT("VoWLAN_UL", "VoWLAN Capture", 0, 0, 0, 0),
12907 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12908 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12909 "VoiceMMode1 Playback", 0, 0, 0, 0),
12910 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12911 "VoiceMMode1 Capture", 0, 0, 0, 0),
12912 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12913 "VoiceMMode2 Playback", 0, 0, 0, 0),
12914 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12915 "VoiceMMode2 Capture", 0, 0, 0, 0),
12916 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12917 0, 0, 0, 0),
12918 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12919 0, 0, 0, 0),
12920 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12921 0, 0, 0, 0),
12922 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12923 0, 0, 0, 0),
12924 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12925 0, 0, 0, 0),
12926 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12927 0, 0, 0, 0),
12928 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12929 0, 0, 0, 0),
12930 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12931 0, 0, 0, 0),
12932 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12933 0, 0, 0, 0),
12934 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12935 0, 0, 0, 0),
12936 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12937 0, 0, 0, 0),
12938 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12939 0, 0, 0, 0),
12940 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12941 0, 0, 0, 0),
12942 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12943 0, 0, 0, 0),
12944 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12945 0, 0, 0, 0),
12946 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12947 0, 0, 0, 0),
12948 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12949 0, 0, 0, 0),
12950 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12951 0, 0, 0, 0),
12952 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12953 0, 0, 0, 0),
12954 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12955 0, 0, 0, 0),
12956 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12957 0, 0, 0, 0),
12958 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12959 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12960 0, 0, 0, 0),
12961 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12962 "INT0 MI2S_RX Hostless Playback",
12963 0, 0, 0, 0),
12964 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12965 "INT4 MI2S_RX Hostless Playback",
12966 0, 0, 0, 0),
12967 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12968 "Primary MI2S_RX Hostless Playback",
12969 0, 0, 0, 0),
12970 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12971 "Secondary MI2S_RX Hostless Playback",
12972 0, 0, 0, 0),
12973 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12974 "Tertiary MI2S_RX Hostless Playback",
12975 0, 0, 0, 0),
12976 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12977 "Quaternary MI2S_RX Hostless Playback",
12978 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012979 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12980 "Quinary MI2S_RX Hostless Playback",
12981 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012982
12983 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12984 0, 0, 0, 0),
12985 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
12986 0, 0, 0, 0),
12987 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
12988 0, 0, 0, 0),
12989 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
12990 "INT3 MI2S_TX Hostless Capture",
12991 0, 0, 0, 0),
12992 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
12993 "Tertiary MI2S_TX Hostless Capture",
12994 0, 0, 0, 0),
12995 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
12996 "Secondary MI2S_TX Hostless Capture",
12997 0, 0, 0, 0),
12998 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
12999 "Primary MI2S_TX Hostless Capture",
13000 0, 0, 0, 0),
13001 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
13002 0, 0, 0, 0),
13003 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
13004 0, 0, 0, 0),
13005 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
13006 "Quaternary MI2S_TX Hostless Capture",
13007 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013008 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
13009 "Quinary MI2S_TX Hostless Capture",
13010 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013011
13012 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
13013 "Primary TDM0 Hostless Playback",
13014 0, 0, 0, 0),
13015 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
13016 "Primary TDM0 Hostless Capture",
13017 0, 0, 0, 0),
13018 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
13019 "Primary TDM1 Hostless Playback",
13020 0, 0, 0, 0),
13021 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
13022 "Primary TDM1 Hostless Capture",
13023 0, 0, 0, 0),
13024 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
13025 "Primary TDM2 Hostless Playback",
13026 0, 0, 0, 0),
13027 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
13028 "Primary TDM2 Hostless Capture",
13029 0, 0, 0, 0),
13030 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
13031 "Primary TDM3 Hostless Playback",
13032 0, 0, 0, 0),
13033 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
13034 "Primary TDM3 Hostless Capture",
13035 0, 0, 0, 0),
13036 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
13037 "Primary TDM4 Hostless Playback",
13038 0, 0, 0, 0),
13039 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
13040 "Primary TDM4 Hostless Capture",
13041 0, 0, 0, 0),
13042 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
13043 "Primary TDM5 Hostless Playback",
13044 0, 0, 0, 0),
13045 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
13046 "Primary TDM5 Hostless Capture",
13047 0, 0, 0, 0),
13048 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
13049 "Primary TDM6 Hostless Playback",
13050 0, 0, 0, 0),
13051 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
13052 "Primary TDM6 Hostless Capture",
13053 0, 0, 0, 0),
13054 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
13055 "Primary TDM7 Hostless Playback",
13056 0, 0, 0, 0),
13057 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
13058 "Primary TDM7 Hostless Capture",
13059 0, 0, 0, 0),
13060 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
13061 "Secondary TDM0 Hostless Playback",
13062 0, 0, 0, 0),
13063 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
13064 "Secondary TDM0 Hostless Capture",
13065 0, 0, 0, 0),
13066 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
13067 "Secondary TDM1 Hostless Playback",
13068 0, 0, 0, 0),
13069 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
13070 "Secondary TDM1 Hostless Capture",
13071 0, 0, 0, 0),
13072 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
13073 "Secondary TDM2 Hostless Playback",
13074 0, 0, 0, 0),
13075 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
13076 "Secondary TDM2 Hostless Capture",
13077 0, 0, 0, 0),
13078 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
13079 "Secondary TDM3 Hostless Playback",
13080 0, 0, 0, 0),
13081 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
13082 "Secondary TDM3 Hostless Capture",
13083 0, 0, 0, 0),
13084 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
13085 "Secondary TDM4 Hostless Playback",
13086 0, 0, 0, 0),
13087 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
13088 "Secondary TDM4 Hostless Capture",
13089 0, 0, 0, 0),
13090 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
13091 "Secondary TDM5 Hostless Playback",
13092 0, 0, 0, 0),
13093 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
13094 "Secondary TDM5 Hostless Capture",
13095 0, 0, 0, 0),
13096 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
13097 "Secondary TDM6 Hostless Playback",
13098 0, 0, 0, 0),
13099 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
13100 "Secondary TDM6 Hostless Capture",
13101 0, 0, 0, 0),
13102 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
13103 "Secondary TDM7 Hostless Playback",
13104 0, 0, 0, 0),
13105 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
13106 "Secondary TDM7 Hostless Capture",
13107 0, 0, 0, 0),
13108 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
13109 "Tertiary TDM0 Hostless Playback",
13110 0, 0, 0, 0),
13111 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
13112 "Tertiary TDM0 Hostless Capture",
13113 0, 0, 0, 0),
13114 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
13115 "Tertiary TDM1 Hostless Playback",
13116 0, 0, 0, 0),
13117 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
13118 "Tertiary TDM1 Hostless Capture",
13119 0, 0, 0, 0),
13120 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
13121 "Tertiary TDM2 Hostless Playback",
13122 0, 0, 0, 0),
13123 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
13124 "Tertiary TDM2 Hostless Capture",
13125 0, 0, 0, 0),
13126 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
13127 "Tertiary TDM3 Hostless Playback",
13128 0, 0, 0, 0),
13129 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
13130 "Tertiary TDM3 Hostless Capture",
13131 0, 0, 0, 0),
13132 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
13133 "Tertiary TDM4 Hostless Playback",
13134 0, 0, 0, 0),
13135 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
13136 "Tertiary TDM4 Hostless Capture",
13137 0, 0, 0, 0),
13138 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
13139 "Tertiary TDM5 Hostless Playback",
13140 0, 0, 0, 0),
13141 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
13142 "Tertiary TDM5 Hostless Capture",
13143 0, 0, 0, 0),
13144 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
13145 "Tertiary TDM6 Hostless Playback",
13146 0, 0, 0, 0),
13147 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
13148 "Tertiary TDM6 Hostless Capture",
13149 0, 0, 0, 0),
13150 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
13151 "Tertiary TDM7 Hostless Playback",
13152 0, 0, 0, 0),
13153 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
13154 "Tertiary TDM7 Hostless Capture",
13155 0, 0, 0, 0),
13156 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
13157 "Quaternary TDM0 Hostless Playback",
13158 0, 0, 0, 0),
13159 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
13160 "Quaternary TDM0 Hostless Capture",
13161 0, 0, 0, 0),
13162 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
13163 "Quaternary TDM1 Hostless Playback",
13164 0, 0, 0, 0),
13165 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
13166 "Quaternary TDM1 Hostless Capture",
13167 0, 0, 0, 0),
13168 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
13169 "Quaternary TDM2 Hostless Playback",
13170 0, 0, 0, 0),
13171 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
13172 "Quaternary TDM2 Hostless Capture",
13173 0, 0, 0, 0),
13174 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
13175 "Quaternary TDM3 Hostless Playback",
13176 0, 0, 0, 0),
13177 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
13178 "Quaternary TDM3 Hostless Capture",
13179 0, 0, 0, 0),
13180 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
13181 "Quaternary TDM4 Hostless Playback",
13182 0, 0, 0, 0),
13183 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
13184 "Quaternary TDM4 Hostless Capture",
13185 0, 0, 0, 0),
13186 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
13187 "Quaternary TDM5 Hostless Playback",
13188 0, 0, 0, 0),
13189 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
13190 "Quaternary TDM5 Hostless Capture",
13191 0, 0, 0, 0),
13192 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
13193 "Quaternary TDM6 Hostless Playback",
13194 0, 0, 0, 0),
13195 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
13196 "Quaternary TDM6 Hostless Capture",
13197 0, 0, 0, 0),
13198 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
13199 "Quaternary TDM7 Hostless Playback",
13200 0, 0, 0, 0),
13201 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
13202 "Quaternary TDM7 Hostless Capture",
13203 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013204 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
13205 "Quinary TDM0 Hostless Playback",
13206 0, 0, 0, 0),
13207 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
13208 "Quinary TDM0 Hostless Capture",
13209 0, 0, 0, 0),
13210 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
13211 "Quinary TDM1 Hostless Playback",
13212 0, 0, 0, 0),
13213 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
13214 "Quinary TDM1 Hostless Capture",
13215 0, 0, 0, 0),
13216 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
13217 "Quinary TDM2 Hostless Playback",
13218 0, 0, 0, 0),
13219 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
13220 "Quinary TDM2 Hostless Capture",
13221 0, 0, 0, 0),
13222 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
13223 "Quinary TDM3 Hostless Playback",
13224 0, 0, 0, 0),
13225 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
13226 "Quinary TDM3 Hostless Capture",
13227 0, 0, 0, 0),
13228 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
13229 "Quinary TDM4 Hostless Playback",
13230 0, 0, 0, 0),
13231 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
13232 "Quinary TDM4 Hostless Capture",
13233 0, 0, 0, 0),
13234 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
13235 "Quinary TDM5 Hostless Playback",
13236 0, 0, 0, 0),
13237 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
13238 "Quinary TDM5 Hostless Capture",
13239 0, 0, 0, 0),
13240 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
13241 "Quinary TDM6 Hostless Playback",
13242 0, 0, 0, 0),
13243 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
13244 "Quinary TDM6 Hostless Capture",
13245 0, 0, 0, 0),
13246 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
13247 "Quinary TDM7 Hostless Playback",
13248 0, 0, 0, 0),
13249 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
13250 "Quinary TDM7 Hostless Capture",
13251 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013252
13253 /* LSM */
13254 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
13255 0, 0, 0, 0),
13256 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
13257 0, 0, 0, 0),
13258 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
13259 0, 0, 0, 0),
13260 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
13261 0, 0, 0, 0),
13262 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
13263 0, 0, 0, 0),
13264 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
13265 0, 0, 0, 0),
13266 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
13267 0, 0, 0, 0),
13268 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
13269 0, 0, 0, 0),
13270 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
13271 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
13272 /* Backend AIF */
13273 /* Stream name equals to backend dai link stream name */
13274 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
13275 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
13276 0, 0, 0, 0),
13277 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
13278 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
13279 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
13280 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
13281 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
13282 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
13283 0, 0, 0, 0),
13284 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
13285 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
13286 0, 0, 0, 0),
13287 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
13288 0, 0, 0, 0),
13289 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
13290 0, 0, 0, 0),
13291 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
13292 "Secondary MI2S Playback SD1",
13293 0, 0, 0, 0),
13294 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
13295 0, 0, 0, 0),
13296 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
13297 0, 0, 0, 0),
13298 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
13299 0, 0, 0, 0),
13300 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
13301 0, 0, 0, 0),
13302 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
13303 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
13304 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
13305 0, 0, 0, 0),
13306 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
13307 0, 0, 0, 0),
13308 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
13309 0, 0, 0, 0),
13310 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
13311 0, 0, 0, 0),
13312 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
13313 0, 0, 0, 0),
13314 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
13315 0, 0, 0, 0),
13316 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
13317 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
13318 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
13319 0, 0, 0, 0),
13320 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
13321 0, 0, 0, 0),
13322 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
13323 0, 0, 0, 0),
13324 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
13325 0, 0, 0, 0),
13326 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
13327 0, 0, 0, 0),
13328 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
13329 0, 0, 0, 0),
13330 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
13331 0, 0, 0, 0),
13332 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
13333 0, 0, 0, 0),
13334 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
13335 0, 0, 0, 0),
13336 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
13337 0, 0, 0, 0),
13338 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
13339 0, 0, 0, 0),
13340 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
13341 0, 0, 0, 0),
13342 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
13343 0, 0, 0, 0),
13344 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
13345 0, 0, 0, 0),
13346 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
13347 0, 0, 0, 0),
13348 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
13349 0, 0, 0, 0),
13350 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
13351 0, 0, 0, 0),
13352 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
13353 0, 0, 0, 0),
13354 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
13355 0, 0, 0, 0),
13356 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
13357 0, 0, 0, 0),
13358 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
13359 0, 0, 0, 0),
13360 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
13361 0, 0, 0, 0),
13362 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
13363 0, 0, 0, 0),
13364 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
13365 0, 0, 0, 0),
13366 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
13367 0, 0, 0, 0),
13368 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
13369 0, 0, 0, 0),
13370 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
13371 0, 0, 0, 0),
13372 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
13373 0, 0, 0, 0),
13374 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
13375 0, 0, 0, 0),
13376 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
13377 0, 0, 0, 0),
13378 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
13379 0, 0, 0, 0),
13380 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
13381 0, 0, 0, 0),
13382 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
13383 0, 0, 0, 0),
13384 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
13385 0, 0, 0, 0),
13386 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
13387 0, 0, 0, 0),
13388 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
13389 0, 0, 0, 0),
13390 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
13391 0, 0, 0, 0),
13392 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
13393 0, 0, 0, 0),
13394 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
13395 0, 0, 0, 0),
13396 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
13397 0, 0, 0, 0),
13398 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
13399 0, 0, 0, 0),
13400 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
13401 0, 0, 0, 0),
13402 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
13403 0, 0, 0, 0),
13404 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
13405 0, 0, 0, 0),
13406 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
13407 0, 0, 0, 0),
13408 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
13409 0, 0, 0, 0),
13410 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
13411 0, 0, 0, 0),
13412 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
13413 0, 0, 0, 0),
13414 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
13415 0, 0, 0, 0),
13416 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
13417 0, 0, 0, 0),
13418 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
13419 0, 0, 0, 0),
13420 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
13421 0, 0, 0, 0),
13422 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
13423 0, 0, 0, 0),
13424 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
13425 0, 0, 0, 0),
13426 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
13427 0, 0, 0, 0),
13428 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
13429 0, 0, 0, 0),
13430 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
13431 0, 0, 0, 0),
13432 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
13433 0, 0, 0, 0),
13434 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
13435 0, 0, 0, 0),
13436 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
13437 0, 0, 0, 0),
13438 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
13439 0, 0, 0, 0),
13440 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
13441 0, 0, 0, 0),
13442 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
13443 0, 0, 0, 0),
13444 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
13445 0, 0, 0, 0),
13446 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
13447 0, 0, 0, 0),
13448 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
13449 0, 0, 0, 0),
13450 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
13451 0, 0, 0, 0),
13452 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
13453 0, 0, 0, 0),
13454 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
13455 0, 0, 0, 0),
13456 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
13457 0, 0, 0, 0),
13458 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
13459 0, 0, 0, 0),
13460 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
13461 0, 0, 0, 0),
13462 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
13463 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013464 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
13465 0, 0, 0, 0),
13466 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
13467 0, 0, 0, 0),
13468 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
13469 0, 0, 0, 0),
13470 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
13471 0, 0, 0, 0),
13472 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
13473 0, 0, 0, 0),
13474 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
13475 0, 0, 0, 0),
13476 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
13477 0, 0, 0, 0),
13478 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
13479 0, 0, 0, 0),
13480 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
13481 0, 0, 0, 0),
13482 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
13483 0, 0, 0, 0),
13484 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
13485 0, 0, 0, 0),
13486 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
13487 0, 0, 0, 0),
13488 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
13489 0, 0, 0, 0),
13490 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
13491 0, 0, 0, 0),
13492 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
13493 0, 0, 0, 0),
13494 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
13495 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013496 /* incall */
13497 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
13498 0, 0, 0, 0),
13499 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
13500 0, 0, 0, 0),
13501 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
13502 0, 0, 0, 0),
13503 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
13504 0, 0, 0, 0),
13505 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
13506 0, 0, 0, 0),
13507 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
13508 0, 0, 0, 0),
13509 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
13510 0, 0, 0, 0),
13511 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
13512 0, 0, 0, 0),
13513 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
13514
13515 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
13516 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
13517 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
13518 0, 0, 0, 0),
13519 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
13520 0, 0, 0, 0),
13521 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
13522 0, 0, 0, 0),
13523 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
13524 0, 0, 0, 0),
13525 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
13526 0, 0, 0, 0),
13527 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
13528 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013529 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
13530 0, 0, 0, 0),
13531 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
13532 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013533 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
13534 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
13535 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
13536 0, 0, 0, 0),
13537 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
13538 0, 0, 0, 0),
13539 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
13540 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
13541 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
13542 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
13543 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
13544 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
13545 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
13546 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
13547 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
13548 /* In- call recording */
13549 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
13550 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
13551
13552 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
13553 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
13554
13555 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
13556 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
13557 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
13558 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
13559
13560 /* Switch Definitions */
13561 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
13562 &slim_fm_switch_mixer_controls),
13563 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
13564 &slim1_fm_switch_mixer_controls),
13565 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
13566 &slim3_fm_switch_mixer_controls),
13567 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
13568 &slim4_fm_switch_mixer_controls),
13569 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
13570 &slim6_fm_switch_mixer_controls),
13571 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13572 &pcm_rx_switch_mixer_controls),
13573 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13574 &int0_mi2s_rx_switch_mixer_controls),
13575 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13576 &int4_mi2s_rx_switch_mixer_controls),
13577 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13578 &pri_mi2s_rx_switch_mixer_controls),
13579 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13580 &sec_mi2s_rx_switch_mixer_controls),
13581 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13582 &tert_mi2s_rx_switch_mixer_controls),
13583 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13584 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013585 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13586 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013587 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13588 &hfp_pri_aux_switch_mixer_controls),
13589 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13590 &hfp_aux_switch_mixer_controls),
13591 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13592 &hfp_int_switch_mixer_controls),
13593 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13594 &hfp_slim7_switch_mixer_controls),
13595 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13596 &usb_switch_mixer_controls),
13597
13598 /* Mixer definitions */
13599 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13600 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13601 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13602 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13603 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13604 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13605 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13606 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13607 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13608 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13609 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13610 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13611 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13612 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13613 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13614 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13615 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13616 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13617 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13618 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13619 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13620 quaternary_mi2s_rx_mixer_controls,
13621 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13622 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13623 tertiary_mi2s_rx_mixer_controls,
13624 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13625 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13626 secondary_mi2s_rx_mixer_controls,
13627 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13628 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13629 secondary_mi2s_rx2_mixer_controls,
13630 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13631 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13632 primary_mi2s_rx_mixer_controls,
13633 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13634 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13635 int0_mi2s_rx_mixer_controls,
13636 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13637 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13638 int4_mi2s_rx_mixer_controls,
13639 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13640 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13641 quinary_mi2s_rx_mixer_controls,
13642 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13643 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13644 pri_tdm_rx_0_mixer_controls,
13645 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13646 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13647 pri_tdm_rx_1_mixer_controls,
13648 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13649 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13650 pri_tdm_rx_2_mixer_controls,
13651 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13652 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13653 pri_tdm_rx_3_mixer_controls,
13654 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13655 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13656 pri_tdm_tx_0_mixer_controls,
13657 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13658 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13659 sec_tdm_rx_0_mixer_controls,
13660 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13661 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13662 sec_tdm_rx_1_mixer_controls,
13663 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13664 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13665 sec_tdm_rx_2_mixer_controls,
13666 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13667 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13668 sec_tdm_rx_3_mixer_controls,
13669 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13670 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13671 sec_tdm_tx_0_mixer_controls,
13672 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13673 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13674 tert_tdm_rx_0_mixer_controls,
13675 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13676 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13677 tert_tdm_tx_0_mixer_controls,
13678 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13679 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13680 tert_tdm_rx_1_mixer_controls,
13681 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13682 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13683 tert_tdm_rx_2_mixer_controls,
13684 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13685 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13686 tert_tdm_rx_3_mixer_controls,
13687 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13688 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13689 tert_tdm_rx_4_mixer_controls,
13690 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13691 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13692 quat_tdm_rx_0_mixer_controls,
13693 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13694 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13695 quat_tdm_tx_0_mixer_controls,
13696 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13697 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13698 quat_tdm_rx_1_mixer_controls,
13699 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13700 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13701 quat_tdm_rx_2_mixer_controls,
13702 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13703 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13704 quat_tdm_rx_3_mixer_controls,
13705 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013706 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13707 quin_tdm_rx_0_mixer_controls,
13708 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13709 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13710 quin_tdm_tx_0_mixer_controls,
13711 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13712 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13713 quin_tdm_rx_1_mixer_controls,
13714 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13715 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13716 quin_tdm_rx_2_mixer_controls,
13717 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13718 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13719 quin_tdm_rx_3_mixer_controls,
13720 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013721 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13722 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13723 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13724 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13725 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13726 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13727 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13728 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13729 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13730 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13731 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13732 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13733 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13734 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13735 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13736 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013737 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13738 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013739 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13740 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013741 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13742 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13743 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13744 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13745 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13746 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13747 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13748 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
13749 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13750 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13751 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13752 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13753 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13754 tert_auxpcm_rx_mixer_controls,
13755 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13756 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13757 quat_auxpcm_rx_mixer_controls,
13758 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013759 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13760 quin_auxpcm_rx_mixer_controls,
13761 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013762 /* incall */
13763 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13764 incall_music_delivery_mixer_controls,
13765 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13766 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13767 incall_music2_delivery_mixer_controls,
13768 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13769 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13770 slimbus_4_rx_mixer_controls,
13771 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13772 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13773 slimbus_6_rx_mixer_controls,
13774 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13775 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13776 usb_audio_rx_mixer_controls,
13777 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13778 /* Voice Mixer */
13779 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13780 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13781 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13782 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13783 SND_SOC_NOPM, 0, 0,
13784 sec_i2s_rx_voice_mixer_controls,
13785 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13786 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13787 SND_SOC_NOPM, 0, 0,
13788 sec_mi2s_rx_voice_mixer_controls,
13789 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13790 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13791 SND_SOC_NOPM, 0, 0,
13792 slimbus_rx_voice_mixer_controls,
13793 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13794 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13795 SND_SOC_NOPM, 0, 0,
13796 bt_sco_rx_voice_mixer_controls,
13797 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13798 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13799 SND_SOC_NOPM, 0, 0,
13800 afe_pcm_rx_voice_mixer_controls,
13801 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13802 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13803 SND_SOC_NOPM, 0, 0,
13804 aux_pcm_rx_voice_mixer_controls,
13805 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13806 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13807 SND_SOC_NOPM, 0, 0,
13808 sec_aux_pcm_rx_voice_mixer_controls,
13809 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13810 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13811 SND_SOC_NOPM, 0, 0,
13812 tert_aux_pcm_rx_voice_mixer_controls,
13813 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13814 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13815 SND_SOC_NOPM, 0, 0,
13816 quat_aux_pcm_rx_voice_mixer_controls,
13817 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013818 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13819 SND_SOC_NOPM, 0, 0,
13820 quin_aux_pcm_rx_voice_mixer_controls,
13821 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013822 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13823 SND_SOC_NOPM, 0, 0,
13824 hdmi_rx_voice_mixer_controls,
13825 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13826 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13827 SND_SOC_NOPM, 0, 0,
13828 mi2s_rx_voice_mixer_controls,
13829 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13830 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13831 SND_SOC_NOPM, 0, 0,
13832 pri_mi2s_rx_voice_mixer_controls,
13833 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13834 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13835 SND_SOC_NOPM, 0, 0,
13836 int0_mi2s_rx_voice_mixer_controls,
13837 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13838 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13839 SND_SOC_NOPM, 0, 0,
13840 int4_mi2s_rx_voice_mixer_controls,
13841 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13842 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13843 SND_SOC_NOPM, 0, 0,
13844 tert_mi2s_rx_voice_mixer_controls,
13845 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13846 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13847 SND_SOC_NOPM, 0, 0,
13848 quat_mi2s_rx_voice_mixer_controls,
13849 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13850 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13851 SND_SOC_NOPM, 0, 0,
13852 quin_mi2s_rx_voice_mixer_controls,
13853 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
13854 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13855 SND_SOC_NOPM, 0, 0,
13856 quat_tdm_rx_2_voice_mixer_controls,
13857 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
13858 SND_SOC_DAPM_MIXER("Voice_Tx Mixer",
13859 SND_SOC_NOPM, 0, 0, tx_voice_mixer_controls,
13860 ARRAY_SIZE(tx_voice_mixer_controls)),
13861 SND_SOC_DAPM_MIXER("Voice2_Tx Mixer",
13862 SND_SOC_NOPM, 0, 0, tx_voice2_mixer_controls,
13863 ARRAY_SIZE(tx_voice2_mixer_controls)),
13864 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13865 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13866 ARRAY_SIZE(tx_voip_mixer_controls)),
13867 SND_SOC_DAPM_MIXER("VoLTE_Tx Mixer",
13868 SND_SOC_NOPM, 0, 0, tx_volte_mixer_controls,
13869 ARRAY_SIZE(tx_volte_mixer_controls)),
13870 SND_SOC_DAPM_MIXER("VoWLAN_Tx Mixer",
13871 SND_SOC_NOPM, 0, 0, tx_vowlan_mixer_controls,
13872 ARRAY_SIZE(tx_vowlan_mixer_controls)),
13873 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13874 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13875 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13876 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13877 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13878 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13879 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13880 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13881 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13882 int_bt_a2dp_rx_mixer_controls,
13883 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13884 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13885 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13886 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13887 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13888 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13889 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13890 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13891 tx_voice2_stub_mixer_controls,
13892 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13893 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13894 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13895 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13896 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13897 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13898 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13899 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13900 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13901 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13902 SND_SOC_NOPM, 0, 0,
13903 slimbus_6_rx_voice_mixer_controls,
13904 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13905 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13906 slimbus_7_rx_voice_mixer_controls,
13907 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13908 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13909 slimbus_8_rx_voice_mixer_controls,
13910 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13911 /* port mixer */
13912 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13913 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13914 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13915 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13916 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13917 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13918 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13919 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13920 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13921 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13922 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13923 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13924 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13925 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13926 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013927 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13928 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13929 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013930 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13931 sbus_1_rx_port_mixer_controls,
13932 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13933 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13934 bt_sco_rx_port_mixer_controls,
13935 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13936 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13937 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13938 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13939 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13940 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13941 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13942 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13943 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13944 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13945 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13946 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13947 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13948 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13949 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13950 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13951 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13952 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13953 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13954 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13955 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13956 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13957 primary_mi2s_rx_port_mixer_controls,
13958 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13959 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13960 sec_mi2s_rx_port_mixer_controls,
13961 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
13962 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13963 tert_mi2s_rx_port_mixer_controls,
13964 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
13965 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13966 quat_mi2s_rx_port_mixer_controls,
13967 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013968 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13969 quin_mi2s_rx_port_mixer_controls,
13970 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013971 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13972 pri_tdm_rx_0_port_mixer_controls,
13973 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
13974 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13975 pri_tdm_rx_1_port_mixer_controls,
13976 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
13977 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13978 pri_tdm_rx_2_port_mixer_controls,
13979 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
13980 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13981 pri_tdm_rx_3_port_mixer_controls,
13982 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
13983 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13984 sec_tdm_rx_0_port_mixer_controls,
13985 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
13986 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13987 sec_tdm_rx_1_port_mixer_controls,
13988 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
13989 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13990 sec_tdm_rx_2_port_mixer_controls,
13991 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
13992 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13993 sec_tdm_rx_3_port_mixer_controls,
13994 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
13995 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13996 tert_tdm_rx_0_port_mixer_controls,
13997 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
13998 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13999 tert_tdm_rx_1_port_mixer_controls,
14000 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
14001 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
14002 tert_tdm_rx_2_port_mixer_controls,
14003 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
14004 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
14005 tert_tdm_rx_3_port_mixer_controls,
14006 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
14007 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
14008 quat_tdm_rx_0_port_mixer_controls,
14009 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
14010 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
14011 quat_tdm_rx_1_port_mixer_controls,
14012 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
14013 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
14014 quat_tdm_rx_2_port_mixer_controls,
14015 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
14016 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
14017 quat_tdm_rx_3_port_mixer_controls,
14018 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053014019 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
14020 quin_tdm_rx_0_port_mixer_controls,
14021 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
14022 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
14023 quin_tdm_rx_1_port_mixer_controls,
14024 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
14025 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
14026 quin_tdm_rx_2_port_mixer_controls,
14027 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
14028 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
14029 quin_tdm_rx_3_port_mixer_controls,
14030 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014031 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
14032 int0_mi2s_rx_port_mixer_controls,
14033 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
14034 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
14035 int4_mi2s_rx_port_mixer_controls,
14036 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
14037 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
14038 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
14039 ARRAY_SIZE(tx_qchat_mixer_controls)),
14040 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
14041 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
14042 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
14043 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
14044 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
14045 ARRAY_SIZE(usb_rx_port_mixer_controls)),
14046 /* lsm mixer definitions */
14047 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
14048 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
14049 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
14050 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
14051 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
14052 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
14053 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
14054 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
14055 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
14056 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
14057 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
14058 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
14059 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
14060 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
14061 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
14062 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
14063 /* Virtual Pins to force backends ON atm */
14064 SND_SOC_DAPM_OUTPUT("BE_OUT"),
14065 SND_SOC_DAPM_INPUT("BE_IN"),
14066
14067 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
14068 &slim0_rx_vi_fb_lch_mux),
14069 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
14070 &slim0_rx_vi_fb_rch_mux),
14071 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
14072 &mi2s_rx_vi_fb_mux),
14073 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
14074 &int4_mi2s_rx_vi_fb_mono_ch_mux),
14075 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
14076 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
14077
14078 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
14079 &voc_ext_ec_mux),
14080 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
14081 &ext_ec_ref_mux_ul1),
14082 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
14083 &ext_ec_ref_mux_ul2),
14084 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
14085 &ext_ec_ref_mux_ul3),
14086 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
14087 &ext_ec_ref_mux_ul4),
14088 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
14089 &ext_ec_ref_mux_ul5),
14090 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
14091 &ext_ec_ref_mux_ul6),
14092 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
14093 &ext_ec_ref_mux_ul8),
14094 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
14095 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053014096 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
14097 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053014098 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
14099 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014100 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
14101 &ext_ec_ref_mux_ul17),
14102 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
14103 &ext_ec_ref_mux_ul18),
14104 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
14105 &ext_ec_ref_mux_ul19),
14106};
14107
14108static const struct snd_soc_dapm_route intercon[] = {
14109 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14110 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14111 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14112 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14113 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14114 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14115 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14116 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14117 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14118 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14119 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14120 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14121 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14122 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14123 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14124 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14125 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
14126
14127 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14128 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14129 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14130 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14131 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14132 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14133 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14134 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14135 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14136 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14137 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14138 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14139 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14140 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14141 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14142 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14143 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
14144
14145 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14146 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14147 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14148 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14149 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14150 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14151 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14152 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14153 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14154 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14155 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14156 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14157 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14158 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14159 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14160 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14161 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
14162
14163 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14164 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14165 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14166 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14167 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14168 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14169 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14170 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14171 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14172 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14173 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14174 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14175 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14176 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14177 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14178 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14179 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
14180
14181 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14182 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14183 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14184 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14185 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14186 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14187 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14188 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14189 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14190 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14191 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14192 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14193 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14194 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14195 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14196 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14197 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
14198
14199 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
14200 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
14201 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
14202 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
14203 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
14204 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
14205 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
14206 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
14207 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
14208 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
14209 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
14210 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
14211 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
14212 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
14213 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
14214 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
14215 {"HDMI", NULL, "HDMI Mixer"},
14216
14217 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
14218 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
14219 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
14220 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
14221 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
14222 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
14223 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
14224 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
14225 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
14226 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
14227 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
14228 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
14229 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
14230 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
14231 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
14232 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
14233 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
14234
14235 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14236 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14237 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14238 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14239 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14240 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14241 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14242 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14243 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14244 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14245 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14246 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14247 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14248 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14249 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14250 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14251 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
14252
14253 /* incall */
14254 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
14255 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
14256 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
14257 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
14258 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
14259 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14260 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14261 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14262 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14263 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
14264 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14265 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14266 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14267 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14268 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
14269
14270 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14271 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14272 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14273 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14274 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14275 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14276 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14277 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14278 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14279 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14280 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14281 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14282 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14283 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14284 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14285 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14286 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
14287
14288 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14289 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14290 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14291 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14292 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14293 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14294 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14295 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14296 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14297 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14298 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14299 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14300 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14301 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14302 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14303 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14304 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
14305
14306 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14307 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14308 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14309 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14310 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14311 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14312 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14313 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14314 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14315 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14316 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14317 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14318 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14319 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14320 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14321 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14322 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
14323
14324 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14325 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14326 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14327 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14328 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14329 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14330 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
14331 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14332 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14333 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14334 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14335 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14336 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14337 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14338 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14339 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14340 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14341 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14342 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14343 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14344 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14345 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14346 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14347 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14348 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14349 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14350 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014351 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014352 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014353 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14354 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014355 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014356 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14357 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14358 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14359 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14360 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14361 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14362 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14363 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14364 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14365 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14366 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14367 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14368 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14369 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14370 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14371 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14372 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
14373
14374 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14375 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14376 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14377 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14378 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14379 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14380 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14381 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14382 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14383 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14384 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14385 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14386 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14387 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14388 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14389 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
14390
14391 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14392 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14393 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14394 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14395 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14396 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14397 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14398 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14399 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14400 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14401 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14402 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14403 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14404 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14405 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
14406
14407 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14408 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14409 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14410 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14411 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14412 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14413 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14414 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14415 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14416 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14417 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14418 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14419 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14420 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14421 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
14422
14423 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14424 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
14425
14426 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14427 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14428
14429 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14430 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14431 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14432 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14433 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14434 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14435 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14436 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14437 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14438 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14439 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14440 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14441 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14442 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14443 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14444 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
14445
14446 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14447 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14448 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14449 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14450 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14451 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14452 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14453 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14454 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14455 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14456 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14457 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14458 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14459 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14460 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14461 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
14462
14463 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14464 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14465 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14466 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14467 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14468 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14469 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14470 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14471 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14472 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14473 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14474 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14475 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14476 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14477 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14478 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
14479
14480 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14481 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14482 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14483 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14484 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14485 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14486 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14487 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14488 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14489 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14490 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14491 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14492 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14493 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14494 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14495 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14496 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14497 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
14498
14499 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14500 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14501 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14502 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14503 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14504 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14505 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14506 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14507 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14508 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14509 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14510 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14511 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14512 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14513 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14514 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14515 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
14516
14517 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14518 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14519 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14520 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14521 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14522 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14523 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14524 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14525 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14526 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14527 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14528 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14529 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14530 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14531 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14532 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14533 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
14534
14535 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14536 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14537 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14538 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14539 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14540 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14541 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14542 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14543 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14544 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14545 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14546 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14547 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14548 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14549 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14550 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14551 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
14552
14553 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14554 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14555 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14556 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14557 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14558 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14559 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14560 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14561 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14562 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14563 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14564 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14565 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14566 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14567 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14568 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14569 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
14570
14571 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14572 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14573 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14574 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14575 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14576 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14577 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14578 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14579 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14580 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14581 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14582 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14583 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14584 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14585 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14586 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14587 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14588
14589 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14590 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14591 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14592 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14593 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14594 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14595 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14596 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14597 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14598 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14599 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14600 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14601 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14602 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14603 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14604 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14605 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14606
14607 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14608 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14609 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14610 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14611 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14612 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14613 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14614 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14615 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14616 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14617 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14618 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14619 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14620 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14621 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14622 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14623 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14624
14625 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14626 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14627 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14628 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14629 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14630 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14631 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14632 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14633 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14634 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14635 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14636 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14637 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14638 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14639 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14640 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14641 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14642
14643 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14644 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14645 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14646 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14647 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14648 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14649 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14650 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14651 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14652 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14653 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14654 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14655 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14656 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14657 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14658 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14659 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14660
14661 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14662 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14663 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14664 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14665 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14666 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14667 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14668 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14669 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14670 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14671 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14672 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14673 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14674 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14675 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14676 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14677 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14678
14679 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14680 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14681 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14682 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14683 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14684 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14685 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14686 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14687 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14688 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14689 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14690 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14691 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14692 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14693 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14694 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14695 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14696
14697 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14698 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14699 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14700 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14701 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14702 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14703 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14704 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14705 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14706 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14707 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14708 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14709 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14710 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14711 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14712 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14713 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14714
14715 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14716 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14717 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14718 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14719 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14720 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14721 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14722 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14723 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14724 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14725 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14726 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14727 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14728 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14729 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14730 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14731 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14732
14733 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14734 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14735 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14736 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14737 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14738 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14739 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14740 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14741 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14742 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14743 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14744 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14745 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14746 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14747 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14748 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14749 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14750
14751 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14752 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14753 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14754 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14755 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14756 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14757 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14758 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14759 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14760 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14761 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14762 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14763 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14764 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14765 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14766 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14767 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14768
14769 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14770 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14771 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14772 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14773 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14774 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14775 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14776 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14777 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14778 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14779 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14780 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14781 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14782 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14783 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14784 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14785 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14786
14787 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14788 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14789 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14790 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14791 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14792 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14793 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14794 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14795 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14796 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14797 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14798 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14799 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14800 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14801 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14802 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14803 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14804 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14805
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014806 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14807 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14808 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14809 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14810 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14811 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14812 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14813 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14814 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14815 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14816 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14817 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14818 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14819 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14820 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14821 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14822 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14823
14824 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14825 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14826 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14827 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14828 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14829 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14830 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14831 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14832 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14833 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14834 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14835 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14836 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14837 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14838 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14839 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14840 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14841 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14842
14843 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14844 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14845 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14846 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14847 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14848 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14849 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14850 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14851 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14852 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14853 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14854 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14855 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14856 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14857 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14858 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14859 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14860 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14861
14862 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14863 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14864 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14865 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14866 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14867 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14868 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14869 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14870 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14871 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14872 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14873 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14874 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14875 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14876 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14877 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14878 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14879 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14880
Rohit Kumara5077932017-09-10 22:05:05 +053014881 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14882 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14883 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14884 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14885 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14886 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14887 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14888 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14889 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14890 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14891 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14892 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14893 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14894 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14895 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14896 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14897 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14898 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14899
14900 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14901 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14902 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14903 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14904 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14905 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14906 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14907 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14908 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14909 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14910 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14911 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14912 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14913 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14914 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14915 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14916 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14917
14918 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14919 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14920 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14921 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14922 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14923 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14924 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14925 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14926 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14927 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14928 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14929 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14930 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14931 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14932 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14933 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14934 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14935 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14936
14937 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14938 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14939 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14940 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14941 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14942 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14943 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14944 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14945 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14946 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14947 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14948 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14949 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14950 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14951 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14952 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14953 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14954 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
14955
14956 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14957 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14958 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14959 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14960 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14961 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14962 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14963 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14964 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14965 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14966 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14967 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14968 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14969 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14970 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14971 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14972 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14973 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
14974
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014975 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
14976 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
14977 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
14978 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
14979 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014980 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014981 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014982 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14983 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14984 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14985 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14986 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14987 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14988 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14989 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14990 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14991 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14992 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14993 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14994 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14995 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14996 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014997 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014998 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14999 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
15000 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015001 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015002 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
15003 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015004 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
15005 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
15006 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015007 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015008 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
15009 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
15010 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015011 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015012 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015013 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
15014 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
15015 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015016 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15017 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
15018 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15019 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15020 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15021 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15022 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15023 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15024 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15025 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15026 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015027 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015028 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
15029 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
15030 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015031 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015032 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015033 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15034 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15035 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015036 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015037 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015038 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15039 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15040 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15041 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015042 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015043
15044 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15045 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15046 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15047 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15048 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15049 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15050 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15051 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15052 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15053 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15054 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15055 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15056 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15057 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15058 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15059 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015060 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15061 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15062 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15063 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015064
15065 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15066 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15067 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15068 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15069 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15070 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15071 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15072 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15073 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15074 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15075 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15076 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15077 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15078 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15079 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15080 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015081 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15082 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15083 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15084 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015085
15086 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15087 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15088 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15089 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15090 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15091 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15092 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15093 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15094 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15095 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15096 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15097 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15098 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15099 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15100 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15101 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015102 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15103 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15104 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15105 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015106
15107 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15108 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15109 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15110 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15111 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15112 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15113 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15114 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15115 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15116 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15117 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15118 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15119 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15120 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15121 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15122 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015123 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15124 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15125 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15126 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015127
15128 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15129 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15130 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15131 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15132 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15133 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15134 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15135 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15136 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15137 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15138 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15139 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15140 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15141 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15142 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15143 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015144 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15145 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15146 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15147 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015148
15149 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15150 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15151 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15152 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15153 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15154 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15155 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15156 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15157 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15158 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15159 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15160 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15161 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15162 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15163 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15164 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015165 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15166 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15167 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15168 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015169
15170 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15171 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15172 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15173 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15174 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15175 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15176 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15177 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15178 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15179 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15180 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15181 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15182 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15183 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15184 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15185 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015186 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15187 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15188 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15189 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015190
15191 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15192 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15193 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15194 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15195 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15196 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15197 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15198 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015199 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15200 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15201 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15202 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015203
Laxminath Kasam38070be2017-08-17 18:21:59 +053015204 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15205 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15206 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15207 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15208 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15209 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15210 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15211 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015212 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15213 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15214 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15215 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015216 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015217 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15218 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15219 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15220 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15221 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15222 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15223 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15224 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15225 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15226 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15227 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15228 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15229 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15230 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15231 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15232 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015233 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15234 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15235 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15236 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015237
15238 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15239 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15240 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15241 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15242 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15243 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015244 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015245
Asish Bhattacharya34504582017-08-08 12:55:01 +053015246 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15247 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15248 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15249 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15250 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15251 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15252 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15253 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15254 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15255 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15256 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15257 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15258 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15259 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15260 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15261 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15262 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15263
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015264 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15265 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15266 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15267 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15268 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15269 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15270 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15271 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15272 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15273 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15274 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15275 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15276 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15277 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15278 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15279 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15280 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15281 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
15282
15283 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15284 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15285 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15286 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15287 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15288 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15289 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15290 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15291 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15292 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15293 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15294 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15295 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15296 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15297 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15298 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15299 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15300 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
15301
15302 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15303 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15304 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15305 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15306 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15307 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15308 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15309 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15310 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15311 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15312 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15313 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15314 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15315 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15316 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15317 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15318 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
15319
15320 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15321 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15322 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15323 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15324 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15325 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15326 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15327 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15328 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15329 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15330 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15331 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15332 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15333 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15334 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15335 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15336 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
15337
15338 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15339 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15340 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015341 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015342 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15343 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15344 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15345 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15346 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015347 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015348 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15349 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015350 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015351 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15352 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15353 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15354 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15355 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15356 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15357
15358 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
15359 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
15360 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015361 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015362 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
15363 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
15364 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
15365 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
15366 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015367 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015368 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
15369 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15370 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
15371 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
15372 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
15373 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
15374 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
15375 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
15376 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015377 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015378 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015379 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
15380 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
15381 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
15382 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
15383
15384 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15385 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15386 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15387 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15388 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15389 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15390 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15391 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15392 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15393 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15394 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15395 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15396 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15397 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15398 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15399 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15400 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
15401
15402 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15403 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15404 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15405 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15406 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15407 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15408 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15409 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15410 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15411 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15412 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15413 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15414 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15415 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15416 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15417 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15418 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
15419
15420 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15421 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15422 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15423 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15424 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15425 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15426 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15427 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15428 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15429 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15430 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15431 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15432 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15433 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15434 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15435 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15436 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
15437
15438 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15439 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15440 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15441 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15442 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15443 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15444 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15445 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15446 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15447 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15448 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15449 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15450 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15451 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15452 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15453 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15454 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
15455
Rohit Kumara5077932017-09-10 22:05:05 +053015456 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15457 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15458 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15459 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15460 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15461 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15462 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15463 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15464 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15465 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15466 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15467 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15468 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15469 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15470 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15471 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15472 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
15473
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015474 {"MI2S_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15475 {"MI2S_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15476 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15477 {"MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15478 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15479 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15480 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15481 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15482 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15483
15484 {"PRI_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15485 {"PRI_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15486 {"PRI_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15487 {"PRI_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15488 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15489 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15490 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15491 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15492 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15493 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
15494
15495 {"SEC_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15496 {"SEC_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15497 {"SEC_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15498 {"SEC_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15499 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
15500 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15501 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15502 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
15503
15504 {"SEC_MI2S_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15505 {"SEC_MI2S_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15506 {"SEC_MI2S_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15507 {"SEC_MI2S_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15508 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15509 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15510 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15511 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15512 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15513 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
15514
15515 {"SLIM_0_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15516 {"SLIM_0_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15517 {"SLIM_0_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15518 {"SLIM_0_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15519 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
15520 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15521 {"SLIM_0_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15522 {"SLIM_0_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15523 {"SLIM_0_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15524 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15525 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15526 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15527 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
15528
15529 {"SLIM_6_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15530 {"SLIM_6_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15531 {"SLIM_6_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15532 {"SLIM_6_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15533 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
15534 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15535 {"SLIM_6_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15536 {"SLIM_6_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15537 {"SLIM_6_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15538 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15539 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15540 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15541 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
15542
15543 {"USB_AUDIO_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15544 {"USB_AUDIO_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15545 {"USB_AUDIO_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15546 {"USB_AUDIO_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15547 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15548 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15549 {"USB_AUDIO_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15550 {"USB_AUDIO_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15551 {"USB_AUDIO_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15552 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15553 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15554 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15555 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
15556
15557 {"INTERNAL_BT_SCO_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15558 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15559 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15560 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15561 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15562 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15563 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15564 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15565 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15566 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15567 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15568 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
15569
15570 {"AFE_PCM_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15571 {"AFE_PCM_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15572 {"AFE_PCM_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15573 {"AFE_PCM_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15574 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15575 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15576 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15577 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15578 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15579 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
15580
15581 {"AUX_PCM_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15582 {"AUX_PCM_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15583 {"AUX_PCM_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15584 {"AUX_PCM_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15585 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15586 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15587 {"AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15588 {"AUX_PCM_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15589 {"AUX_PCM_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15590 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15591 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15592 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15593 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
15594
15595 {"SEC_AUX_PCM_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15596 {"SEC_AUX_PCM_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15597 {"SEC_AUX_PCM_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15598 {"SEC_AUX_PCM_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15599 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15600 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15601 {"SEC_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15602 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15603 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15604 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15605 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
15606
15607 {"TERT_AUX_PCM_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15608 {"TERT_AUX_PCM_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15609 {"TERT_AUX_PCM_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15610 {"TERT_AUX_PCM_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15611 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15612 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15613 {"TERT_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15614 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15615 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15616 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15617 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
15618
15619 {"QUAT_AUX_PCM_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15620 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15621 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15622 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15623 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15624 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15625 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15626 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15627 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15628 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15629 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
15630
Rohit Kumara5077932017-09-10 22:05:05 +053015631 {"QUIN_AUX_PCM_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15632 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15633 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15634 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15635 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15636 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15637 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15638 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15639 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15640 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15641 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
15642
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015643 {"HDMI_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15644 {"HDMI_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15645 {"HDMI_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15646 {"HDMI_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15647 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15648 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15649 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15650 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15651 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15652 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
15653 {"HDMI", NULL, "HDMI_DL_HL"},
15654
15655 {"MI2S_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15656 {"MI2S_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15657 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15658 {"MI2S_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15659 {"MI2S_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15660 {"MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15661 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15662 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15663 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15664 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15665
15666 {"PRI_MI2S_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15667 {"PRI_MI2S_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15668 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15669 {"PRI_MI2S_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15670 {"PRI_MI2S_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15671 {"PRI_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15672 {"PRI_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15673 {"PRI_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15674 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15675 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15676 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15677 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15678 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15679
15680 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15681 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15682 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15683 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15684 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15685 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15686
15687 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15688 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15689 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15690 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15691 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15692 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15693
15694 {"TERT_MI2S_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15695 {"TERT_MI2S_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15696 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15697 {"TERT_MI2S_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15698 {"TERT_MI2S_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15699 {"TERT_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15700 {"TERT_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15701 {"TERT_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15702 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15703 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15704 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15705 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15706 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15707
15708 {"QUAT_MI2S_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15709 {"QUAT_MI2S_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15710 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15711 {"QUAT_MI2S_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15712 {"QUAT_MI2S_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15713 {"QUAT_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15714 {"QUAT_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15715 {"QUAT_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15716 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15717 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15718 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15719 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15720
15721 {"QUIN_MI2S_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15722 {"QUIN_MI2S_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
15723 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15724 {"QUIN_MI2S_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
15725 {"QUIN_MI2S_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15726 {"QUIN_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15727 {"QUIN_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15728 {"QUIN_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15729 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15730 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15731 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15732 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15733
15734 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15735 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15736
15737 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15738 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15739 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15740 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015741 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015742 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15743 {"CS-VOICE_UL1", NULL, "VOC_EXT_EC MUX"},
15744 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
15745 {"VoLTE_UL", NULL, "VOC_EXT_EC MUX"},
15746 {"VOICE2_UL", NULL, "VOC_EXT_EC MUX"},
15747 {"VoWLAN_UL", NULL, "VOC_EXT_EC MUX"},
15748 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15749 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15750
15751 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15752 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15753 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15754 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15755 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15756 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15757 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15758 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15759 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15760 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15761
15762 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15763 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15764 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15765 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15766
15767 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15768 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15769 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15770 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15771
15772 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15773 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15774 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15775 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15776
15777 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15778 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15779 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15780 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15781
15782 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15783 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15784 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15785 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15786
15787 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15788 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15789 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15790 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15791
15792 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15793 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15794 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15795 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15796
Laxminath Kasam38070be2017-08-17 18:21:59 +053015797 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15798 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15799 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15800 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15801 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15802 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15803 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15804 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15805 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15806 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015807
15808 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15809 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15810 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15811 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15812
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015813 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15814 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15815 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15816 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15817
15818 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15819 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15820 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15821 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15822
15823 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15824 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15825 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15826 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15827
15828 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15829 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15830 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15831 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15832 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15833 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15834 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15835 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015836 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015837 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015838 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15839 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15840 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
15841
15842 {"Voice_Tx Mixer", "PRI_TX_Voice", "PRI_I2S_TX"},
15843 {"Voice_Tx Mixer", "PRI_MI2S_TX_Voice", "PRI_MI2S_TX"},
15844 {"Voice_Tx Mixer", "MI2S_TX_Voice", "MI2S_TX"},
15845 {"Voice_Tx Mixer", "TERT_MI2S_TX_Voice", "TERT_MI2S_TX"},
15846 {"Voice_Tx Mixer", "SLIM_0_TX_Voice", "SLIMBUS_0_TX"},
15847 {"Voice_Tx Mixer", "SLIM_7_TX_Voice", "SLIMBUS_7_TX"},
15848 {"Voice_Tx Mixer", "SLIM_8_TX_Voice", "SLIMBUS_8_TX"},
15849 {"Voice_Tx Mixer", "USB_AUDIO_TX_Voice", "USB_AUDIO_TX"},
15850 {"Voice_Tx Mixer", "INTERNAL_BT_SCO_TX_Voice", "INT_BT_SCO_TX"},
15851 {"Voice_Tx Mixer", "AFE_PCM_TX_Voice", "PCM_TX"},
15852 {"Voice_Tx Mixer", "AUX_PCM_TX_Voice", "AUX_PCM_TX"},
15853 {"Voice_Tx Mixer", "SEC_AUX_PCM_TX_Voice", "SEC_AUX_PCM_TX"},
15854 {"Voice_Tx Mixer", "TERT_AUX_PCM_TX_Voice", "TERT_AUX_PCM_TX"},
15855 {"Voice_Tx Mixer", "QUAT_AUX_PCM_TX_Voice", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015856 {"Voice_Tx Mixer", "QUIN_AUX_PCM_TX_Voice", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015857 {"Voice_Tx Mixer", "SEC_MI2S_TX_Voice", "SEC_MI2S_TX"},
15858 {"CS-VOICE_UL1", NULL, "Voice_Tx Mixer"},
15859
15860 {"Voice2_Tx Mixer", "PRI_TX_Voice2", "PRI_I2S_TX"},
15861 {"Voice2_Tx Mixer", "PRI_MI2S_TX_Voice2", "PRI_MI2S_TX"},
15862 {"Voice2_Tx Mixer", "MI2S_TX_Voice2", "MI2S_TX"},
15863 {"Voice2_Tx Mixer", "TERT_MI2S_TX_Voice2", "TERT_MI2S_TX"},
15864 {"Voice2_Tx Mixer", "SLIM_0_TX_Voice2", "SLIMBUS_0_TX"},
15865 {"Voice2_Tx Mixer", "SLIM_7_TX_Voice2", "SLIMBUS_7_TX"},
15866 {"Voice2_Tx Mixer", "SLIM_8_TX_Voice2", "SLIMBUS_8_TX"},
15867 {"Voice2_Tx Mixer", "USB_AUDIO_TX_Voice2", "USB_AUDIO_TX"},
15868 {"Voice2_Tx Mixer", "INTERNAL_BT_SCO_TX_Voice2", "INT_BT_SCO_TX"},
15869 {"Voice2_Tx Mixer", "AFE_PCM_TX_Voice2", "PCM_TX"},
15870 {"Voice2_Tx Mixer", "AUX_PCM_TX_Voice2", "AUX_PCM_TX"},
15871 {"Voice2_Tx Mixer", "SEC_AUX_PCM_TX_Voice2", "SEC_AUX_PCM_TX"},
15872 {"Voice2_Tx Mixer", "TERT_AUX_PCM_TX_Voice2", "TERT_AUX_PCM_TX"},
15873 {"Voice2_Tx Mixer", "QUAT_AUX_PCM_TX_Voice2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015874 {"Voice2_Tx Mixer", "QUIN_AUX_PCM_TX_Voice2", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015875 {"VOICE2_UL", NULL, "Voice2_Tx Mixer"},
15876
15877 {"VoLTE_Tx Mixer", "PRI_TX_VoLTE", "PRI_I2S_TX"},
15878 {"VoLTE_Tx Mixer", "SLIM_0_TX_VoLTE", "SLIMBUS_0_TX"},
15879 {"VoLTE_Tx Mixer", "SLIM_7_TX_VoLTE", "SLIMBUS_7_TX"},
15880 {"VoLTE_Tx Mixer", "SLIM_8_TX_VoLTE", "SLIMBUS_8_TX"},
15881 {"VoLTE_Tx Mixer", "USB_AUDIO_TX_VoLTE", "USB_AUDIO_TX"},
15882 {"VoLTE_Tx Mixer", "INTERNAL_BT_SCO_TX_VoLTE", "INT_BT_SCO_TX"},
15883 {"VoLTE_Tx Mixer", "AFE_PCM_TX_VoLTE", "PCM_TX"},
15884 {"VoLTE_Tx Mixer", "AUX_PCM_TX_VoLTE", "AUX_PCM_TX"},
15885 {"VoLTE_Tx Mixer", "SEC_AUX_PCM_TX_VoLTE", "SEC_AUX_PCM_TX"},
15886 {"VoLTE_Tx Mixer", "TERT_AUX_PCM_TX_VoLTE", "TERT_AUX_PCM_TX"},
15887 {"VoLTE_Tx Mixer", "QUAT_AUX_PCM_TX_VoLTE", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015888 {"VoLTE_Tx Mixer", "QUIN_AUX_PCM_TX_VoLTE", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015889 {"VoLTE_Tx Mixer", "MI2S_TX_VoLTE", "MI2S_TX"},
15890 {"VoLTE_Tx Mixer", "PRI_MI2S_TX_VoLTE", "PRI_MI2S_TX"},
15891 {"VoLTE_Tx Mixer", "TERT_MI2S_TX_VoLTE", "TERT_MI2S_TX"},
15892 {"VoLTE_UL", NULL, "VoLTE_Tx Mixer"},
15893
15894 {"VoWLAN_Tx Mixer", "PRI_TX_VoWLAN", "PRI_I2S_TX"},
15895 {"VoWLAN_Tx Mixer", "SLIM_0_TX_VoWLAN", "SLIMBUS_0_TX"},
15896 {"VoWLAN_Tx Mixer", "SLIM_7_TX_VoWLAN", "SLIMBUS_7_TX"},
15897 {"VoWLAN_Tx Mixer", "SLIM_8_TX_VoWLAN", "SLIMBUS_8_TX"},
15898 {"VoWLAN_Tx Mixer", "USB_AUDIO_TX_VoWLAN", "USB_AUDIO_TX"},
15899 {"VoWLAN_Tx Mixer", "INTERNAL_BT_SCO_TX_VoWLAN", "INT_BT_SCO_TX"},
15900 {"VoWLAN_Tx Mixer", "AFE_PCM_TX_VoWLAN", "PCM_TX"},
15901 {"VoWLAN_Tx Mixer", "AUX_PCM_TX_VoWLAN", "AUX_PCM_TX"},
15902 {"VoWLAN_Tx Mixer", "SEC_AUX_PCM_TX_VoWLAN", "SEC_AUX_PCM_TX"},
15903 {"VoWLAN_Tx Mixer", "TERT_AUX_PCM_TX_VoWLAN", "TERT_AUX_PCM_TX"},
15904 {"VoWLAN_Tx Mixer", "QUAT_AUX_PCM_TX_VoWLAN", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015905 {"VoWLAN_Tx Mixer", "QUIN_AUX_PCM_TX_VoWLAN", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015906 {"VoWLAN_Tx Mixer", "MI2S_TX_VoWLAN", "MI2S_TX"},
15907 {"VoWLAN_Tx Mixer", "PRI_MI2S_TX_VoWLAN", "PRI_MI2S_TX"},
15908 {"VoWLAN_Tx Mixer", "TERT_MI2S_TX_VoWLAN", "TERT_MI2S_TX"},
15909 {"VoWLAN_UL", NULL, "VoWLAN_Tx Mixer"},
15910
15911 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15912 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15913 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15914 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15915 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15916 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15917 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15918 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15919 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15920 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15921 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15922 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15923 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15924 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15925 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015926 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015927 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
15928 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15929
15930 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15931 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15932 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15933 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15934 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15935 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15936 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15937 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15938 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15939 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15940 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15941 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15942 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15943 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15944 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015945 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015946 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15947
15948 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15949 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15950 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15951 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15952 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15953 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15954 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15955 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15956 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15957 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15958 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15959 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15960 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15961 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015962 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015963 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
15964 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15965
15966 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15967 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15968 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15969 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15970 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15971 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15972 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15973 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15974 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15975 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15976 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15977 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15978 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15979 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15980 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15981
15982 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15983 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15984 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15985 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15986 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15987 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15988 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15989 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15990 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15991
15992 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15993 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15994 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15995 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15996 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15997 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15998 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15999 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16000 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
16001
16002
16003 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
16004 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
16005 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
16006 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
16007 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
16008 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16009 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16010 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16011 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
16012
16013
16014 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
16015 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
16016 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
16017 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
16018 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
16019 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16020 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16021 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16022 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
16023
16024 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
16025 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
16026 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
16027 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
16028 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
16029 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16030 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16031 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16032 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
16033
16034 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
16035 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
16036 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
16037 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
16038 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
16039 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16040 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
16041
16042 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
16043 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
16044 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
16045 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
16046 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
16047 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16048 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
16049
16050 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
16051 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
16052 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
16053 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
16054 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
16055 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16056 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
16057
16058
16059 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
16060 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
16061 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
16062 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
16063 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
16064 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
16065 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
16066 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
16067 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
16068 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
16069 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016070 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016071 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
16072 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
16073 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
16074 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
16075 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
16076 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
16077
16078 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
16079 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
16080 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
16081 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
16082 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
16083 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
16084 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
16085 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
16086 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
16087 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
16088 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
16089 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
16090 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
16091 {"MI2S_RX", NULL, "MI2S_DL_HL"},
16092 {"MI2S_UL_HL", NULL, "MI2S_TX"},
16093 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
16094 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
16095
16096 /* connect to INT4_MI2S_DL_HL since same pcm_id */
16097 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
16098 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
16099 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
16100 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
16101 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
16102 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
16103 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
16104 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
16105 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
16106 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
16107
16108 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
16109 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053016110 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
16111 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016112 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
16113 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
16114 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
16115 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
16116 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
16117 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
16118 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
16119 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
16120 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
16121 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
16122
16123 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
16124 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
16125 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
16126 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
16127 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
16128 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
16129 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
16130 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
16131 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
16132 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
16133 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
16134 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
16135 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
16136 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
16137 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
16138 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
16139 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
16140 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
16141 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
16142 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
16143 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
16144 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
16145 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
16146 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
16147 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
16148 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
16149 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
16150 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
16151 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
16152 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
16153 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
16154 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053016155 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
16156 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
16157 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
16158 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
16159 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
16160 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
16161 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
16162 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016163
16164 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16165 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16166 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16167 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16168 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16169 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16170 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16171 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16172 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16173 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16174 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16175 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16176 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16177 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16178 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16179 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016180 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16181 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16182 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16183 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016184 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
16185
16186 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16187 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16188 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16189 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16190 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16191 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16192 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16193 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16194 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16195 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16196 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16197 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16198 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16199 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16200 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16201 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016202 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16203 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16204 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16205 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016206 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
16207
16208 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16209 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16210 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16211 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16212 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16213 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16214 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16215 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16216 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16217 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16218 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16219 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16220 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16221 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16222 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16223 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016224 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16225 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16226 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16227 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016228 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
16229
16230 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16231 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16232 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16233 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16234 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16235 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16236 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16237 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16238 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16239 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16240 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16241 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16242 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16243 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16244 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16245 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016246 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16247 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16248 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16249 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016250 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
16251
16252 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16253 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16254 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16255 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16256 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16257 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16258 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16259 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16260 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16261 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16262 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16263 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16264 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16265 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16266 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16267 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016268 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16269 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16270 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16271 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016272 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
16273
16274 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16275 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16276 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16277 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16278 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16279 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16280 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16281 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16282 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16283 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16284 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16285 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16286 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16287 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16288 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16289 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016290 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16291 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16292 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16293 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016294 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
16295
16296 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16297 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16298 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16299 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16300 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16301 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16302 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16303 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16304 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16305 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16306 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16307 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16308 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16309 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16310 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16311 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016312 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16313 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16314 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16315 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016316 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
16317
16318 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16319 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16320 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16321 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16322 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16323 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16324 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16325 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16326 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16327 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16328 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16329 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16330 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16331 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16332 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16333 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016334 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16335 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16336 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16337 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016338 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
16339
16340 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16341 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16342 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16343 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16344 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16345 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16346 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16347 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16348 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16349 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16350 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16351 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16352 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16353 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16354 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16355 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016356 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16357 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16358 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16359 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016360 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
16361
16362 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16363 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16364 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16365 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16366 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16367 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16368 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16369 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16370 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16371 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16372 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16373 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16374 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16375 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16376 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16377 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016378 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16379 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16380 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16381 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016382 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
16383
16384 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16385 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16386 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16387 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16388 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16389 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16390 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16391 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16392 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16393 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16394 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16395 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16396 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16397 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16398 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16399 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016400 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16401 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16402 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16403 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016404 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
16405
16406 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16407 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16408 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16409 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16410 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16411 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16412 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16413 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16414 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16415 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16416 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16417 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16418 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16419 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16420 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16421 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016422 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16423 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16424 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16425 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016426 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
16427
16428 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16429 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16430 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16431 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16432 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16433 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16434 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16435 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16436 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16437 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16438 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16439 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16440 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16441 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16442 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16443 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016444 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16445 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16446 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16447 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016448 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
16449
16450 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16451 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16452 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16453 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16454 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16455 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16456 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16457 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16458 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16459 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16460 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16461 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16462 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16463 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16464 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16465 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016466 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16467 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16468 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16469 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016470 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
16471
16472 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16473 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16474 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16475 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16476 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16477 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16478 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16479 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16480 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16481 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16482 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16483 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16484 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16485 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16486 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16487 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016488 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16489 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16490 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16491 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016492 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
16493
16494 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16495 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16496 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16497 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16498 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16499 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16500 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16501 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16502 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16503 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16504 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16505 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16506 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16507 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16508 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16509 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016510 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16511 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16512 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16513 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016514 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
16515
Rohit Kumara5077932017-09-10 22:05:05 +053016516 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16517 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16518 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16519 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16520 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16521 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16522 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16523 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16524 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16525 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16526 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16527 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16528 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16529 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16530 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16531 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16532 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16533 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16534 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16535 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016536 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016537
16538 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16539 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16540 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16541 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16542 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16543 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16544 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16545 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16546 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16547 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16548 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16549 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16550 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16551 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16552 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16553 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16554 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16555 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16556 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16557 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016558 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016559
16560 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16561 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16562 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16563 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16564 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16565 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16566 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16567 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16568 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16569 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16570 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16571 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16572 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16573 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16574 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16575 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16576 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16577 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16578 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16579 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016580 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016581
16582 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16583 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16584 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16585 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16586 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16587 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16588 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16589 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16590 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16591 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16592 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16593 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16594 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16595 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16596 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16597 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16598 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16599 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16600 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16601 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016602 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016603
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016604 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16605 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16606 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16607 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016608 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016609 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16610 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16611 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16612 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16613 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16614 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
16615
16616 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16617 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16618 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16619 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016620 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016621 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16622 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16623 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16624 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16625 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16626 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
16627
16628 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16629 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16630 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16631 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16632 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16633 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16634 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16635 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16636 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016637 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016638 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16639 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16640 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16641 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16642 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016643 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016644 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16645 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
16646 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16647 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16648 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
16649 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
16650 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
16651 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
16652 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
16653 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
16654
16655
16656 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16657 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16658 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16659 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16660 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16661 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
16662
16663 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16664 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16665 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16666 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
16667
16668 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16669 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16670 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16671 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
16672
16673 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16674 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
16675 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16676 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
16677
Rohit Kumara5077932017-09-10 22:05:05 +053016678 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16679 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
16680 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16681 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
16682
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016683 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16684 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16685 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16686 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16687 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16688 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16689 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16690 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016691 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016692 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
16693 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16694 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16695 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16696 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16697 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16698 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16699 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16700 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16701 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16702 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
16703
16704 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16705 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16706 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16707 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16708 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16709 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16710 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16711 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16712 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16713 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16714 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16715 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
16716
16717 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16718 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16719 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16720 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16721 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16722 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16723 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16724 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16725 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16726 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16727 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16728 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
16729
16730 {"STUB_RX Mixer", "Voice Stub", "VOICE_STUB_DL"},
16731 {"STUB_RX Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16732 {"STUB_RX Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16733 {"STUB_RX", NULL, "STUB_RX Mixer"},
16734 {"SLIMBUS_1_RX Mixer", "Voice Stub", "VOICE_STUB_DL"},
16735 {"SLIMBUS_1_RX Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16736 {"SLIMBUS_1_RX Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16737 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
16738 {"AFE_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
16739 {"AFE_PCM_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16740 {"AFE_PCM_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16741 {"SLIMBUS_3_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
16742 {"SLIMBUS_3_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16743 {"SLIMBUS_3_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16744 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
16745
16746 {"SLIM_7_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
16747 {"SLIM_7_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
16748 {"SLIM_7_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
16749 {"SLIM_7_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
16750 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
16751 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
16752 {"SLIM_7_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
16753 {"SLIM_7_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16754 {"SLIM_7_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16755 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16756 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16757 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16758 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
16759
16760 {"SLIM_8_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
16761 {"SLIM_8_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
16762 {"SLIM_8_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
16763 {"SLIM_8_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
16764 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
16765 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
16766 {"SLIM_8_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
16767 {"SLIM_8_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16768 {"SLIM_8_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16769 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16770 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16771 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16772 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16773
16774 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16775 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16776 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16777 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16778 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16779 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16780 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16781 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16782 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16783 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16784 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16785 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16786 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16787
16788 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16789 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16790 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16791 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16792 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16793 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16794 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16795 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16796 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16797 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16798 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16799 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16800 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16801
16802 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16803 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16804
16805 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16806 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16807
16808 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16809 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16810
16811 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16812 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16813 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16814
16815 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16816 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16817 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16818 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016819 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016820 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16821 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16822 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16823 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16824 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16825
16826 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16827 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16828 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16829 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016830 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016831 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16832 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16833 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16834 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16835
16836 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16837 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16838 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16839 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016840 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016841 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16842 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16843 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16844
16845 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16846 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16847 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16848 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016849 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016850 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16851 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16852 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16853 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16854 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16855
Rohit Kumara5077932017-09-10 22:05:05 +053016856 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16857 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16858 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16859 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16860 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16861 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16862 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16863 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16864
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016865 /* Backend Enablement */
16866
16867 {"BE_OUT", NULL, "PRI_I2S_RX"},
16868 {"BE_OUT", NULL, "SEC_I2S_RX"},
16869 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16870 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16871 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16872 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16873 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16874 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16875 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16876 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16877 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16878 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16879 {"BE_OUT", NULL, "HDMI"},
16880 {"BE_OUT", NULL, "DISPLAY_PORT"},
16881 {"BE_OUT", NULL, "SPDIF_RX"},
16882 {"BE_OUT", NULL, "MI2S_RX"},
16883 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16884 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16885 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16886 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16887 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16888 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16889 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16890 {"BE_OUT", NULL, "INT4_MI2S_RX"},
16891 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16892 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16893 {"BE_OUT", NULL, "INT_FM_RX"},
16894 {"BE_OUT", NULL, "PCM_RX"},
16895 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16896 {"BE_OUT", NULL, "AUX_PCM_RX"},
16897 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16898 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16899 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016900 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016901 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16902 {"BE_OUT", NULL, "INT_FM_RX"},
16903 {"BE_OUT", NULL, "PCM_RX"},
16904 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16905 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16906 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16907 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16908 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16909 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16910 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16911 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16912 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16913 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16914 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16915 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16916 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16917 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16918 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16919 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16920 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16921 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16922 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16923 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016924 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16925 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16926 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16927 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016928
16929 {"PRI_I2S_TX", NULL, "BE_IN"},
16930 {"MI2S_TX", NULL, "BE_IN"},
16931 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16932 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16933 {"PRI_MI2S_TX", NULL, "BE_IN"},
16934 {"TERT_MI2S_TX", NULL, "BE_IN"},
16935 {"INT2_MI2S_TX", NULL, "BE_IN"},
16936 {"INT3_MI2S_TX", NULL, "BE_IN"},
16937 {"INT5_MI2S_TX", NULL, "BE_IN"},
16938 {"SEC_MI2S_TX", NULL, "BE_IN"},
16939 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16940 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16941 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16942 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16943 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16944 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16945 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16946 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16947 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16948 {"USB_AUDIO_TX", NULL, "BE_IN" },
16949 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16950 {"INT_FM_TX", NULL, "BE_IN"},
16951 {"PCM_TX", NULL, "BE_IN"},
16952 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16953 {"BE_OUT", NULL, "STUB_RX"},
16954 {"STUB_TX", NULL, "BE_IN"},
16955 {"STUB_1_TX", NULL, "BE_IN"},
16956 {"BE_OUT", NULL, "AUX_PCM_RX"},
16957 {"AUX_PCM_TX", NULL, "BE_IN"},
16958 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16959 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16960 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016961 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016962 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16963 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16964 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16965 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16966 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16967 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16968 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16969 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16970 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16971 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16972 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16973 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16974 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16975 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16976 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16977 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16978 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16979 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16980 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16981 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16982 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16983 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16984 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16985 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16986 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16987 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16988 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16989 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016990 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16991 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16992 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16993 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016994};
16995
16996static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16997 struct snd_pcm_hw_params *params)
16998{
16999 struct snd_soc_pcm_runtime *rtd = substream->private_data;
17000 unsigned int be_id = rtd->dai_link->id;
17001
17002 if (be_id >= MSM_BACKEND_DAI_MAX) {
17003 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
17004 return -EINVAL;
17005 }
17006
17007 mutex_lock(&routing_lock);
17008 msm_bedais[be_id].sample_rate = params_rate(params);
17009 msm_bedais[be_id].channel = params_channels(params);
17010 msm_bedais[be_id].format = params_format(params);
17011 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
17012 __func__, msm_bedais[be_id].sample_rate,
17013 msm_bedais[be_id].format, be_id);
17014 mutex_unlock(&routing_lock);
17015 return 0;
17016}
17017
17018static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
17019{
17020 struct snd_soc_pcm_runtime *rtd = substream->private_data;
17021 unsigned int be_id = rtd->dai_link->id;
17022 int i, session_type, path_type, topology;
17023 struct msm_pcm_routing_bdai_data *bedai;
17024 struct msm_pcm_routing_fdai_data *fdai;
17025
17026 pr_debug("%s: substream->pcm->id:%s\n",
17027 __func__, substream->pcm->id);
17028
17029 if (be_id >= MSM_BACKEND_DAI_MAX) {
17030 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
17031 return -EINVAL;
17032 }
17033
17034 bedai = &msm_bedais[be_id];
17035 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
17036 0 : 1);
17037 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
17038 path_type = ADM_PATH_PLAYBACK;
17039 else
17040 path_type = ADM_PATH_LIVE_REC;
17041
17042 mutex_lock(&routing_lock);
17043 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17044 if (!is_mm_lsm_fe_id(i))
17045 continue;
17046 fdai = &fe_dai_map[i][session_type];
17047 if (fdai->strm_id != INVALID_SESSION) {
17048 int idx;
17049 int port_id;
17050 unsigned long copp =
17051 session_copp_map[i][session_type][be_id];
17052 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
17053 if (test_bit(idx, &copp))
17054 break;
17055 fdai->be_srate = bedai->sample_rate;
17056 port_id = bedai->port_id;
17057 topology = adm_get_topology_for_port_copp_idx(port_id,
17058 idx);
17059 adm_close(bedai->port_id, fdai->perf_mode, idx);
17060 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
17061 __func__, copp, i, session_type, be_id,
17062 topology);
17063 clear_bit(idx,
17064 &session_copp_map[i][session_type][be_id]);
17065 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
17066 (bedai->passthr_mode[i] == LEGACY_PCM))
17067 msm_pcm_routing_deinit_pp(bedai->port_id,
17068 topology);
17069 }
17070 }
17071
17072 bedai->active = 0;
17073 bedai->sample_rate = 0;
17074 bedai->channel = 0;
17075 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
17076 if (bedai->passthr_mode[i] != LISTEN)
17077 bedai->passthr_mode[i] = LEGACY_PCM;
17078 }
17079 mutex_unlock(&routing_lock);
17080
17081 return 0;
17082}
17083
17084static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
17085{
17086 struct snd_soc_pcm_runtime *rtd = substream->private_data;
17087 unsigned int be_id = rtd->dai_link->id;
17088 int i, path_type, topology;
17089 int session_type = INVALID_SESSION;
17090 struct msm_pcm_routing_bdai_data *bedai;
17091 u32 channels, sample_rate;
17092 uint16_t bits_per_sample = 16, voc_path_type;
17093 struct msm_pcm_routing_fdai_data *fdai;
17094 u32 session_id;
17095 struct media_format_info voc_be_media_format;
17096 bool is_lsm;
17097
17098 pr_debug("%s: substream->pcm->id:%s\n",
17099 __func__, substream->pcm->id);
17100
17101 if (be_id >= MSM_BACKEND_DAI_MAX) {
17102 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
17103 return -EINVAL;
17104 }
17105
17106 bedai = &msm_bedais[be_id];
17107
17108 mutex_lock(&routing_lock);
17109 if (bedai->active == 1)
17110 goto done; /* Ignore prepare if back-end already active */
17111
17112 /* AFE port is not active at this point. However, still
17113 * go ahead setting active flag under the notion that
17114 * QDSP6 is able to handle ADM starting before AFE port
17115 * is started.
17116 */
17117 bedai->active = 1;
17118
17119 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17120 if (!(is_mm_lsm_fe_id(i) &&
17121 route_check_fe_id_adm_support(i)))
17122 continue;
17123
17124 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
17125 if (bedai->passthr_mode[i] != LEGACY_PCM)
17126 path_type = ADM_PATH_COMPRESSED_RX;
17127 else
17128 path_type = ADM_PATH_PLAYBACK;
17129 session_type = SESSION_TYPE_RX;
17130 } else {
17131 path_type = ADM_PATH_LIVE_REC;
17132 session_type = SESSION_TYPE_TX;
17133 }
17134
17135 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
17136 (i <= MSM_FRONTEND_DAI_LSM8);
17137 fdai = &fe_dai_map[i][session_type];
17138 if (fdai->strm_id != INVALID_SESSION) {
17139 int app_type, app_type_idx, copp_idx, acdb_dev_id;
17140
17141 if (session_type == SESSION_TYPE_TX &&
17142 fdai->be_srate &&
17143 (fdai->be_srate != bedai->sample_rate)) {
17144 pr_debug("%s: flush strm %d diff BE rates\n",
17145 __func__,
17146 fdai->strm_id);
17147
17148 if (fdai->event_info.event_func)
17149 fdai->event_info.event_func(
17150 MSM_PCM_RT_EVT_BUF_RECFG,
17151 fdai->event_info.priv_data);
17152 fdai->be_srate = 0; /* might not need it */
17153 }
17154 bits_per_sample = msm_routing_get_bit_width(
17155 bedai->format);
17156
17157 app_type =
17158 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
17159 if (app_type && is_lsm) {
17160 app_type_idx =
17161 msm_pcm_routing_get_lsm_app_type_idx(app_type);
17162 sample_rate =
17163 fe_dai_app_type_cfg[i][session_type][be_id]
17164 .sample_rate;
17165 bits_per_sample =
17166 lsm_app_type_cfg[app_type_idx].bit_width;
17167 } else if (app_type) {
17168 app_type_idx =
17169 msm_pcm_routing_get_app_type_idx(app_type);
17170 sample_rate =
17171 fe_dai_app_type_cfg[i][session_type]
17172 [be_id].sample_rate;
17173 bits_per_sample =
17174 app_type_cfg[app_type_idx].bit_width;
17175 } else
17176 sample_rate = bedai->sample_rate;
17177 /*
17178 * check if ADM needs to be configured with different
17179 * channel mapping than backend
17180 */
17181 if (!bedai->adm_override_ch)
17182 channels = bedai->channel;
17183 else
17184 channels = bedai->adm_override_ch;
17185 acdb_dev_id =
17186 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
17187 topology = msm_routing_get_adm_topology(i, session_type,
17188 be_id);
17189 copp_idx = adm_open(bedai->port_id, path_type,
17190 sample_rate, channels, topology,
17191 fdai->perf_mode, bits_per_sample,
17192 app_type, acdb_dev_id);
17193 if ((copp_idx < 0) ||
17194 (copp_idx >= MAX_COPPS_PER_PORT)) {
17195 pr_err("%s: adm open failed\n", __func__);
17196 mutex_unlock(&routing_lock);
17197 return -EINVAL;
17198 }
17199 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
17200 __func__, i, session_type, be_id);
17201 set_bit(copp_idx,
17202 &session_copp_map[i][session_type][be_id]);
17203
17204 if (msm_is_resample_needed(
17205 sample_rate,
17206 bedai->sample_rate))
17207 adm_copp_mfc_cfg(
17208 bedai->port_id, copp_idx,
17209 bedai->sample_rate);
17210
17211 msm_pcm_routing_build_matrix(i, session_type, path_type,
17212 fdai->perf_mode,
17213 bedai->passthr_mode[i]);
17214 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
17215 (bedai->passthr_mode[i] == LEGACY_PCM))
17216 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
17217 topology, channels);
17218 }
17219 }
17220
17221 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17222 session_id = msm_pcm_routing_get_voc_sessionid(i);
17223 if (session_id) {
17224 pr_debug("%s voice session_id: 0x%x\n", __func__,
17225 session_id);
17226
17227 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
17228 voc_path_type = RX_PATH;
17229 else
17230 voc_path_type = TX_PATH;
17231
17232 voc_set_route_flag(session_id, voc_path_type, 1);
17233
17234 memset(&voc_be_media_format, 0,
17235 sizeof(struct media_format_info));
17236
17237 voc_be_media_format.port_id = bedai->port_id;
17238 voc_be_media_format.num_channels = bedai->channel;
17239 voc_be_media_format.sample_rate = bedai->sample_rate;
17240 voc_be_media_format.bits_per_sample = bedai->format;
17241 /* Defaulting this to 1 for voice call usecases */
17242 voc_be_media_format.channel_mapping[0] = 1;
17243
17244 voc_set_device_config(session_id, voc_path_type,
17245 &voc_be_media_format);
17246
17247 if (voc_get_route_flag(session_id, RX_PATH) &&
17248 voc_get_route_flag(session_id, TX_PATH))
17249 voc_enable_device(session_id);
17250 }
17251 }
17252
17253 /* Check if backend is an external ec ref port and set as needed */
17254 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
17255
17256 memset(&voc_be_media_format, 0,
17257 sizeof(struct media_format_info));
17258
17259 /* Get format info for ec ref port from msm_bedais[] */
17260 voc_be_media_format.port_id = bedai->port_id;
17261 voc_be_media_format.num_channels = bedai->channel;
17262 voc_be_media_format.bits_per_sample = bedai->format;
17263 voc_be_media_format.sample_rate = bedai->sample_rate;
17264 /* Defaulting this to 1 for voice call usecases */
17265 voc_be_media_format.channel_mapping[0] = 1;
17266 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
17267 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
17268 __func__, voc_be_media_format.port_id,
17269 voc_be_media_format.num_channels,
17270 voc_be_media_format.bits_per_sample,
17271 voc_be_media_format.sample_rate);
17272 }
17273
17274done:
17275 mutex_unlock(&routing_lock);
17276
17277 return 0;
17278}
17279
17280static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
17281 int fe_id)
17282{
17283 int index, topo_id, be_idx;
17284 unsigned long pp_config = 0;
17285 bool mute_on;
17286 int latency;
17287 bool compr_passthr_mode = true;
17288
17289 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
17290
17291 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
17292 pr_err("%s: Device pp params on invalid port %d\n",
17293 __func__, port_id);
17294 return -EINVAL;
17295 }
17296
17297 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17298 if (port_id == msm_bedais[be_idx].port_id)
17299 break;
17300 }
17301
17302 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17303 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17304 return -EINVAL;
17305 }
17306
17307 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17308 if (msm_bedais_pp_params[index].port_id == port_id)
17309 break;
17310 }
17311 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17312 pr_err("%s: Invalid backend pp params index %d\n",
17313 __func__, index);
17314 return -EINVAL;
17315 }
17316
17317 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
17318 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
17319 pr_err("%s: Invalid passthrough topology 0x%x\n",
17320 __func__, topo_id);
17321 return -EINVAL;
17322 }
17323
17324 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
17325 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
17326 compr_passthr_mode = false;
17327
17328 pp_config = msm_bedais_pp_params[index].pp_params_config;
17329 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
17330 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17331 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
17332 mute_on = msm_bedais_pp_params[index].mute_on;
17333 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17334 adm_send_compressed_device_mute(port_id,
17335 copp_idx,
17336 mute_on);
17337 }
17338 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
17339 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17340 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
17341 &pp_config);
17342 latency = msm_bedais_pp_params[index].latency;
17343 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17344 adm_send_compressed_device_latency(port_id,
17345 copp_idx,
17346 latency);
17347 }
17348 return 0;
17349}
17350
17351static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17352 struct snd_ctl_elem_value *ucontrol)
17353{
17354 int pp_id = ucontrol->value.integer.value[0];
17355 int port_id = 0;
17356 int index, be_idx, i, topo_id, idx;
17357 bool mute;
17358 int latency;
17359 bool compr_passthr_mode = true;
17360
17361 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
17362
17363 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17364 port_id = msm_bedais[be_idx].port_id;
17365 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
17366 break;
17367 }
17368
17369 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17370 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17371 return -EINVAL;
17372 }
17373
17374 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17375 if (msm_bedais_pp_params[index].port_id == port_id)
17376 break;
17377 }
17378 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17379 pr_err("%s: Invalid pp params backend index %d\n",
17380 __func__, index);
17381 return -EINVAL;
17382 }
17383
17384 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
17385 MSM_FRONTEND_DAI_MM_SIZE) {
17386 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
17387 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
17388 compr_passthr_mode = false;
17389
17390 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17391 unsigned long copp =
17392 session_copp_map[i]
17393 [SESSION_TYPE_RX][be_idx];
17394 if (!test_bit(idx, &copp))
17395 continue;
17396 topo_id = adm_get_topology_for_port_copp_idx(port_id,
17397 idx);
17398 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
17399 continue;
17400 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
17401 __func__, port_id, copp, msm_bedais[be_idx].active,
17402 msm_bedais[be_idx].passthr_mode[i]);
17403 switch (pp_id) {
17404 case ADM_PP_PARAM_MUTE_ID:
17405 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17406 mute = ucontrol->value.integer.value[1] ? true : false;
17407 msm_bedais_pp_params[index].mute_on = mute;
17408 set_bit(ADM_PP_PARAM_MUTE_BIT,
17409 &msm_bedais_pp_params[index].pp_params_config);
17410 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17411 adm_send_compressed_device_mute(port_id,
17412 idx, mute);
17413 break;
17414 case ADM_PP_PARAM_LATENCY_ID:
17415 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17416 msm_bedais_pp_params[index].latency =
17417 ucontrol->value.integer.value[1];
17418 set_bit(ADM_PP_PARAM_LATENCY_BIT,
17419 &msm_bedais_pp_params[index].pp_params_config);
17420 latency = msm_bedais_pp_params[index].latency =
17421 ucontrol->value.integer.value[1];
17422 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17423 adm_send_compressed_device_latency(port_id,
17424 idx, latency);
17425 break;
17426 default:
17427 pr_info("%s, device pp param %d not supported\n",
17428 __func__, pp_id);
17429 break;
17430 }
17431 }
17432 }
17433 return 0;
17434}
17435
17436static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17437 struct snd_ctl_elem_value *ucontrol)
17438{
17439 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
17440 return 0;
17441}
17442
17443static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
17444 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
17445 0, 3, msm_routing_get_device_pp_params_mixer,
17446 msm_routing_put_device_pp_params_mixer),
17447};
17448
17449static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
17450 struct snd_ctl_elem_value *ucontrol)
17451{
17452 ucontrol->value.integer.value[0] =
17453 core_get_license_status(ASM_MEDIA_FMT_APTX);
17454 pr_debug("%s: status %ld\n", __func__,
17455 ucontrol->value.integer.value[0]);
17456 return 0;
17457}
17458
17459static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
17460 struct snd_ctl_elem_value *ucontrol)
17461{
17462 int32_t status = 0;
17463
17464 status = core_set_license(ucontrol->value.integer.value[0],
17465 APTX_CLASSIC_DEC_LICENSE_ID);
17466 pr_debug("%s: status %d\n", __func__, status);
17467 return status;
17468}
17469
17470static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
17471 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
17472 0xFFFF, 0, msm_aptx_dec_license_control_get,
17473 msm_aptx_dec_license_control_put),
17474};
17475
17476static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
17477 struct snd_ctl_elem_info *uinfo)
17478{
17479 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
17480 uinfo->count = sizeof(be_dai_name_table);
17481 return 0;
17482}
17483
17484static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
17485 unsigned int __user *bytes,
17486 unsigned int size)
17487{
17488 int i;
17489 int ret;
17490
17491 if (size < sizeof(be_dai_name_table)) {
17492 pr_err("%s: invalid size %d requested, returning\n",
17493 __func__, size);
17494 ret = -EINVAL;
17495 goto done;
17496 }
17497
17498 /*
17499 * Fill be_dai_name_table from msm_bedais table to reduce code changes
17500 * needed when adding new backends
17501 */
17502 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17503 be_dai_name_table[i].be_id = i;
17504 strlcpy(be_dai_name_table[i].be_name,
17505 msm_bedais[i].name,
17506 LPASS_BE_NAME_MAX_LENGTH);
17507 }
17508
17509 ret = copy_to_user(bytes, &be_dai_name_table,
17510 sizeof(be_dai_name_table));
17511 if (ret) {
17512 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
17513 ret = -EFAULT;
17514 }
17515
17516done:
17517 return ret;
17518}
17519
17520static const struct snd_kcontrol_new
17521 msm_routing_be_dai_name_table_mixer_controls[] = {
17522 {
17523 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
17524 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
17525 .info = msm_routing_be_dai_name_table_info,
17526 .name = "Backend DAI Name Table",
17527 .tlv.c = snd_soc_bytes_tlv_callback,
17528 .private_value = (unsigned long) &(struct soc_bytes_ext) {
17529 .max = sizeof(be_dai_name_table),
17530 .get = msm_routing_be_dai_name_table_tlv_get,
17531 }
17532 },
17533};
17534
17535static int msm_routing_stereo_channel_reverse_control_get(
17536 struct snd_kcontrol *kcontrol,
17537 struct snd_ctl_elem_value *ucontrol)
17538{
17539 ucontrol->value.integer.value[0] = swap_ch;
17540 pr_debug("%s: Swap channel value: %ld\n", __func__,
17541 ucontrol->value.integer.value[0]);
17542 return 0;
17543}
17544
17545static int msm_routing_stereo_channel_reverse_control_put(
17546 struct snd_kcontrol *kcontrol,
17547 struct snd_ctl_elem_value *ucontrol)
17548{
17549 int i, idx, be_index, port_id;
17550 int ret = 0;
17551 unsigned long copp;
17552
17553 pr_debug("%s Swap channel value:%ld\n", __func__,
17554 ucontrol->value.integer.value[0]);
17555
17556 swap_ch = ucontrol->value.integer.value[0];
17557
17558 mutex_lock(&routing_lock);
17559 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
17560 port_id = msm_bedais[be_index].port_id;
17561 if (!msm_bedais[be_index].active)
17562 continue;
17563
17564 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
17565 MSM_FRONTEND_DAI_MM_SIZE) {
17566 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
17567 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17568 if (!test_bit(idx, &copp))
17569 continue;
17570
17571 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
17572 __func__, port_id, idx);
17573 ret = adm_swap_speaker_channels(
17574 port_id, idx,
17575 msm_bedais[be_index].sample_rate,
17576 swap_ch);
17577 if (ret) {
17578 pr_err("%s:Swap_channel failed, err=%d\n",
17579 __func__, ret);
17580 goto done;
17581 }
17582 }
17583 }
17584 }
17585done:
17586 mutex_unlock(&routing_lock);
17587 return ret;
17588}
17589
17590static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
17591 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
17592 1, 0, msm_routing_stereo_channel_reverse_control_get,
17593 msm_routing_stereo_channel_reverse_control_put),
17594};
17595
17596static const struct snd_pcm_ops msm_routing_pcm_ops = {
17597 .hw_params = msm_pcm_routing_hw_params,
17598 .close = msm_pcm_routing_close,
17599 .prepare = msm_pcm_routing_prepare,
17600};
17601
17602/* Not used but frame seems to require it */
17603static int msm_routing_probe(struct snd_soc_platform *platform)
17604{
17605 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
17606 ARRAY_SIZE(msm_qdsp6_widgets));
17607 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
17608 ARRAY_SIZE(intercon));
17609
17610 snd_soc_dapm_new_widgets(platform->component.dapm.card);
17611
17612 snd_soc_add_platform_controls(platform, lsm_controls,
17613 ARRAY_SIZE(lsm_controls));
17614
17615 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
17616 ARRAY_SIZE(aanc_slim_0_rx_mux));
17617
17618 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
17619 ARRAY_SIZE(msm_voc_session_controls));
17620
17621 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
17622 ARRAY_SIZE(app_type_cfg_controls));
17623
17624 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
17625 ARRAY_SIZE(lsm_app_type_cfg_controls));
17626
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070017627 snd_soc_add_platform_controls(platform, module_cfg_controls,
17628 ARRAY_SIZE(module_cfg_controls));
17629
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017630 snd_soc_add_platform_controls(platform,
17631 stereo_to_custom_stereo_controls,
17632 ARRAY_SIZE(stereo_to_custom_stereo_controls));
17633
17634 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
17635 ARRAY_SIZE(ec_ref_param_controls));
17636
17637 snd_soc_add_platform_controls(platform, channel_mixer_controls,
17638 ARRAY_SIZE(channel_mixer_controls));
17639
17640 msm_qti_pp_add_controls(platform);
17641
17642 msm_dts_srs_tm_add_controls(platform);
17643
17644 msm_dolby_dap_add_controls(platform);
17645
17646 snd_soc_add_platform_controls(platform,
17647 use_ds1_or_ds2_controls,
17648 ARRAY_SIZE(use_ds1_or_ds2_controls));
17649
17650 snd_soc_add_platform_controls(platform,
17651 device_pp_params_mixer_controls,
17652 ARRAY_SIZE(device_pp_params_mixer_controls));
17653
17654 snd_soc_add_platform_controls(platform,
17655 msm_routing_be_dai_name_table_mixer_controls,
17656 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
17657
17658 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
17659 ARRAY_SIZE(msm_source_tracking_controls));
17660 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
17661 ARRAY_SIZE(adm_channel_config_controls));
17662
17663 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
17664 ARRAY_SIZE(aptx_dec_license_controls));
17665 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
17666 ARRAY_SIZE(stereo_channel_reverse_control));
17667 return 0;
17668}
17669
17670int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
17671{
17672 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
17673}
17674
17675void msm_routing_pcm_free(struct snd_pcm *pcm)
17676{
17677 msm_pcm_routing_hwdep_free(pcm);
17678}
17679
17680static struct snd_soc_platform_driver msm_soc_routing_platform = {
17681 .ops = &msm_routing_pcm_ops,
17682 .probe = msm_routing_probe,
17683 .pcm_new = msm_routing_pcm_new,
17684 .pcm_free = msm_routing_pcm_free,
17685};
17686
17687static int msm_routing_pcm_probe(struct platform_device *pdev)
17688{
17689
17690 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
17691 return snd_soc_register_platform(&pdev->dev,
17692 &msm_soc_routing_platform);
17693}
17694
17695static int msm_routing_pcm_remove(struct platform_device *pdev)
17696{
17697 snd_soc_unregister_platform(&pdev->dev);
17698 return 0;
17699}
17700
17701static const struct of_device_id msm_pcm_routing_dt_match[] = {
17702 {.compatible = "qcom,msm-pcm-routing"},
17703 {}
17704};
17705MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
17706
17707static struct platform_driver msm_routing_pcm_driver = {
17708 .driver = {
17709 .name = "msm-pcm-routing",
17710 .owner = THIS_MODULE,
17711 .of_match_table = msm_pcm_routing_dt_match,
17712 },
17713 .probe = msm_routing_pcm_probe,
17714 .remove = msm_routing_pcm_remove,
17715};
17716
17717int msm_routing_check_backend_enabled(int fedai_id)
17718{
17719 int i;
17720
17721 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
17722 /* bad ID assigned in machine driver */
17723 pr_err("%s: bad MM ID\n", __func__);
17724 return 0;
17725 }
17726 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17727 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
17728 return msm_bedais[i].active;
17729 }
17730 return 0;
17731}
17732
17733static int msm_routing_set_cal(int32_t cal_type,
17734 size_t data_size, void *data)
17735{
17736 int ret = 0;
17737
17738 pr_debug("%s\n", __func__);
17739
17740 ret = cal_utils_set_cal(data_size, data, cal_data, 0, NULL);
17741 if (ret < 0) {
17742 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17743 __func__, ret, cal_type);
17744 ret = -EINVAL;
17745 goto done;
17746 }
17747done:
17748 return ret;
17749}
17750
17751static void msm_routing_delete_cal_data(void)
17752{
17753 pr_debug("%s\n", __func__);
17754
17755 cal_utils_destroy_cal_types(1, &cal_data);
17756}
17757
17758static int msm_routing_init_cal_data(void)
17759{
17760 int ret = 0;
17761 struct cal_type_info cal_type_info = {
17762 {ADM_TOPOLOGY_CAL_TYPE,
17763 {NULL, NULL, NULL,
17764 msm_routing_set_cal, NULL, NULL} },
17765 {NULL, NULL, cal_utils_match_buf_num}
17766 };
17767 pr_debug("%s\n", __func__);
17768
17769 ret = cal_utils_create_cal_types(1, &cal_data,
17770 &cal_type_info);
17771 if (ret < 0) {
17772 pr_err("%s: could not create cal type!\n",
17773 __func__);
17774 ret = -EINVAL;
17775 goto err;
17776 }
17777
17778 return ret;
17779err:
17780 msm_routing_delete_cal_data();
17781 return ret;
17782}
17783
17784static int __init msm_soc_routing_platform_init(void)
17785{
17786 mutex_init(&routing_lock);
17787 if (msm_routing_init_cal_data())
17788 pr_err("%s: could not init cal data!\n", __func__);
17789
17790 afe_set_routing_callback(
17791 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17792
17793 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17794 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17795
17796 return platform_driver_register(&msm_routing_pcm_driver);
17797}
17798module_init(msm_soc_routing_platform_init);
17799
17800static void __exit msm_soc_routing_platform_exit(void)
17801{
17802 msm_routing_delete_cal_data();
17803 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17804 mutex_destroy(&routing_lock);
17805 platform_driver_unregister(&msm_routing_pcm_driver);
17806}
17807module_exit(msm_soc_routing_platform_exit);
17808
17809MODULE_DESCRIPTION("MSM routing platform driver");
17810MODULE_LICENSE("GPL v2");