blob: 0d076bdf86401508358d7d22785a339322bd19ff [file] [log] [blame]
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05301/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#include <linux/init.h>
14#include <linux/err.h>
15#include <linux/module.h>
16#include <linux/moduleparam.h>
17#include <linux/platform_device.h>
18#include <linux/bitops.h>
19#include <linux/mutex.h>
20#include <linux/of_device.h>
21#include <linux/slab.h>
22#include <sound/core.h>
23#include <sound/soc.h>
24#include <sound/soc-dapm.h>
25#include <sound/pcm.h>
26#include <sound/initval.h>
27#include <sound/control.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053028#include <sound/tlv.h>
29#include <sound/asound.h>
30#include <sound/pcm_params.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053031#include <sound/hwdep.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053032#include <sound/audio_effects.h>
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053033#include <dsp/msm-dts-srs-tm-config.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053034#include <dsp/q6voice.h>
35#include <dsp/q6adm-v2.h>
36#include <dsp/q6asm-v2.h>
37#include <dsp/q6afe-v2.h>
38#include <dsp/q6lsm.h>
39#include <dsp/q6core.h>
40#include <dsp/audio_cal_utils.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053041
42#include "msm-pcm-routing-v2.h"
43#include "msm-pcm-routing-devdep.h"
44#include "msm-qti-pp-config.h"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053045#include "msm-dolby-dap-config.h"
46#include "msm-ds2-dap-config.h"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053047
48#ifndef CONFIG_DOLBY_DAP
49#undef DOLBY_ADM_COPP_TOPOLOGY_ID
50#define DOLBY_ADM_COPP_TOPOLOGY_ID 0xFFFFFFFE
51#endif
52
53#ifndef CONFIG_DOLBY_DS2
54#undef DS2_ADM_COPP_TOPOLOGY_ID
55#define DS2_ADM_COPP_TOPOLOGY_ID 0xFFFFFFFF
56#endif
57
58static struct mutex routing_lock;
59
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053060static struct cal_type_data *cal_data[MAX_ROUTING_CAL_TYPES];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053061
62static int fm_switch_enable;
63static int hfp_switch_enable;
Aniket Kumar Lataf8664712018-02-22 14:46:09 -080064static int a2dp_switch_enable;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053065static int int0_mi2s_switch_enable;
66static int int4_mi2s_switch_enable;
67static int pri_mi2s_switch_enable;
68static int sec_mi2s_switch_enable;
69static int tert_mi2s_switch_enable;
70static int quat_mi2s_switch_enable;
Rohit Kumara5077932017-09-10 22:05:05 +053071static int quin_mi2s_switch_enable;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053072static int fm_pcmrx_switch_enable;
73static int usb_switch_enable;
74static int lsm_port_index;
75static int slim0_rx_aanc_fb_port;
76static int msm_route_ec_ref_rx;
77static int msm_ec_ref_ch = 4;
78static int msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
79static int msm_ec_ref_sampling_rate = 48000;
80static uint32_t voc_session_id = ALL_SESSION_VSID;
81static int msm_route_ext_ec_ref;
82static bool is_custom_stereo_on;
83static bool is_ds2_on;
84static bool swap_ch;
85
86#define WEIGHT_0_DB 0x4000
87/* all the FEs which can support channel mixer */
88static struct msm_pcm_channel_mixer channel_mixer[MSM_FRONTEND_DAI_MM_SIZE];
89/* input BE for each FE */
90static int channel_input[MSM_FRONTEND_DAI_MM_SIZE][ADM_MAX_CHANNELS];
91
92enum {
93 MADNONE,
94 MADAUDIO,
95 MADBEACON,
96 MADULTRASOUND,
97 MADSWAUDIO,
98};
99
100#define ADM_LSM_PORT_INDEX 9
101
102#define SLIMBUS_0_TX_TEXT "SLIMBUS_0_TX"
103#define SLIMBUS_1_TX_TEXT "SLIMBUS_1_TX"
104#define SLIMBUS_2_TX_TEXT "SLIMBUS_2_TX"
105#define SLIMBUS_3_TX_TEXT "SLIMBUS_3_TX"
106#define SLIMBUS_4_TX_TEXT "SLIMBUS_4_TX"
107#define SLIMBUS_5_TX_TEXT "SLIMBUS_5_TX"
108#define TERT_MI2S_TX_TEXT "TERT_MI2S_TX"
109#define QUAT_MI2S_TX_TEXT "QUAT_MI2S_TX"
Ashish Jain01b10322018-05-12 15:37:44 +0530110#define PRI_TDM_TX_3_TEXT "PRI_TDM_TX_3"
111#define PRI_TDM_TX_2_TEXT "PRI_TDM_TX_2"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530112#define ADM_LSM_TX_TEXT "ADM_LSM_TX"
113#define INT3_MI2S_TX_TEXT "INT3_MI2S_TX"
114
115#define LSM_FUNCTION_TEXT "LSM Function"
116static const char * const lsm_port_text[] = {
117 "None",
118 SLIMBUS_0_TX_TEXT, SLIMBUS_1_TX_TEXT, SLIMBUS_2_TX_TEXT,
119 SLIMBUS_3_TX_TEXT, SLIMBUS_4_TX_TEXT, SLIMBUS_5_TX_TEXT,
120 TERT_MI2S_TX_TEXT, QUAT_MI2S_TX_TEXT, ADM_LSM_TX_TEXT,
Ashish Jain01b10322018-05-12 15:37:44 +0530121 INT3_MI2S_TX_TEXT, PRI_TDM_TX_2_TEXT, PRI_TDM_TX_3_TEXT,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530122};
123
124struct msm_pcm_route_bdai_pp_params {
125 u16 port_id; /* AFE port ID */
126 unsigned long pp_params_config;
127 bool mute_on;
128 int latency;
129};
130
131static struct msm_pcm_route_bdai_pp_params
132 msm_bedais_pp_params[MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX] = {
133 {HDMI_RX, 0, 0, 0},
134 {DISPLAY_PORT_RX, 0, 0, 0},
135};
136
137/*
138 * The be_dai_name_table is passed to HAL so that it can specify the
139 * BE ID for the BE it wants to enable based on the name. Thus there
140 * is a matching table and structure in HAL that need to be updated
141 * if any changes to these are made.
142 */
143struct msm_pcm_route_bdai_name {
144 unsigned int be_id;
145 char be_name[LPASS_BE_NAME_MAX_LENGTH];
146};
147static struct msm_pcm_route_bdai_name be_dai_name_table[MSM_BACKEND_DAI_MAX];
148
149static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
150 int fe_id);
151
152static int msm_routing_get_bit_width(unsigned int format)
153{
154 int bit_width;
155
156 switch (format) {
157 case SNDRV_PCM_FORMAT_S32_LE:
158 bit_width = 32;
159 break;
160 case SNDRV_PCM_FORMAT_S24_LE:
161 case SNDRV_PCM_FORMAT_S24_3LE:
162 bit_width = 24;
163 break;
164 case SNDRV_PCM_FORMAT_S16_LE:
165 default:
166 bit_width = 16;
167 }
168 return bit_width;
169}
170
171static bool msm_is_resample_needed(int input_sr, int output_sr)
172{
173 bool rc = false;
174
175 if (input_sr != output_sr)
176 rc = true;
177
178 pr_debug("perform resampling (%s) for copp rate (%d)afe rate (%d)",
179 (rc ? "oh yes" : "not really"),
180 input_sr, output_sr);
181
182 return rc;
183}
184
185static void msm_pcm_routing_cfg_pp(int port_id, int copp_idx, int topology,
186 int channels)
187{
188 int rc = 0;
189
190 switch (topology) {
191 case SRS_TRUMEDIA_TOPOLOGY_ID:
192 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
193 msm_dts_srs_tm_init(port_id, copp_idx);
194 break;
195 case DS2_ADM_COPP_TOPOLOGY_ID:
196 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY %d\n",
197 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
198 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
199 is_custom_stereo_on);
200 if (rc < 0)
201 pr_err("%s: DS2 topo_id 0x%x, port %d, CS %d rc %d\n",
202 __func__, topology, port_id,
203 is_custom_stereo_on, rc);
204 break;
205 case DOLBY_ADM_COPP_TOPOLOGY_ID:
206 if (is_ds2_on) {
207 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY\n", __func__);
208 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
209 is_custom_stereo_on);
210 if (rc < 0)
211 pr_err("%s:DS2 topo_id 0x%x, port %d, rc %d\n",
212 __func__, topology, port_id, rc);
213 } else {
214 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
215 rc = msm_dolby_dap_init(port_id, copp_idx, channels,
216 is_custom_stereo_on);
217 if (rc < 0)
218 pr_err("%s: DS1 topo_id 0x%x, port %d, rc %d\n",
219 __func__, topology, port_id, rc);
220 }
221 break;
222 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
223 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
224 rc = msm_qti_pp_asphere_init(port_id, copp_idx);
225 if (rc < 0)
226 pr_err("%s: topo_id 0x%x, port %d, copp %d, rc %d\n",
227 __func__, topology, port_id, copp_idx, rc);
228 break;
229 default:
230 /* custom topology specific feature param handlers */
231 break;
232 }
233}
234
235static void msm_pcm_routing_deinit_pp(int port_id, int topology)
236{
237 switch (topology) {
238 case SRS_TRUMEDIA_TOPOLOGY_ID:
239 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
240 msm_dts_srs_tm_deinit(port_id);
241 break;
242 case DS2_ADM_COPP_TOPOLOGY_ID:
243 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID %d\n",
244 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
245 msm_ds2_dap_deinit(port_id);
246 break;
247 case DOLBY_ADM_COPP_TOPOLOGY_ID:
248 if (is_ds2_on) {
249 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID\n", __func__);
250 msm_ds2_dap_deinit(port_id);
251 } else {
252 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
253 msm_dolby_dap_deinit(port_id);
254 }
255 break;
256 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
257 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
258 msm_qti_pp_asphere_deinit(port_id);
259 break;
260 default:
261 /* custom topology specific feature deinit handlers */
262 break;
263 }
264}
265
266static void msm_pcm_routng_cfg_matrix_map_pp(struct route_payload payload,
267 int path_type, int perf_mode)
268{
269 int itr = 0, rc = 0;
270
271 if ((path_type == ADM_PATH_PLAYBACK) &&
272 (perf_mode == LEGACY_PCM_MODE) &&
273 is_custom_stereo_on) {
274 for (itr = 0; itr < payload.num_copps; itr++) {
275 if ((payload.port_id[itr] != SLIMBUS_0_RX) &&
276 (payload.port_id[itr] != RT_PROXY_PORT_001_RX)) {
277 continue;
278 }
279
280 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd(
281 payload.port_id[itr],
282 payload.copp_idx[itr],
283 payload.session_id,
284 Q14_GAIN_ZERO_POINT_FIVE,
285 Q14_GAIN_ZERO_POINT_FIVE,
286 Q14_GAIN_ZERO_POINT_FIVE,
287 Q14_GAIN_ZERO_POINT_FIVE);
288 if (rc < 0)
289 pr_err("%s: err setting custom stereo\n",
290 __func__);
291 }
292 }
293}
294
295#define SLIMBUS_EXTPROC_RX AFE_PORT_INVALID
296struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = {
297 { PRIMARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_RX},
298 { PRIMARY_I2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_TX},
299 { SLIMBUS_0_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_RX},
300 { SLIMBUS_0_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_TX},
301 { HDMI_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_HDMI},
302 { INT_BT_SCO_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_RX},
303 { INT_BT_SCO_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_TX},
304 { INT_FM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_RX},
305 { INT_FM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_TX},
306 { RT_PROXY_PORT_001_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
307 LPASS_BE_AFE_PCM_RX},
308 { RT_PROXY_PORT_001_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
309 LPASS_BE_AFE_PCM_TX},
310 { AFE_PORT_ID_PRIMARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
311 LPASS_BE_AUXPCM_RX},
312 { AFE_PORT_ID_PRIMARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
313 LPASS_BE_AUXPCM_TX},
314 { VOICE_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
315 LPASS_BE_VOICE_PLAYBACK_TX},
316 { VOICE2_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
317 LPASS_BE_VOICE2_PLAYBACK_TX},
318 { VOICE_RECORD_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
319 LPASS_BE_INCALL_RECORD_RX},
320 { VOICE_RECORD_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
321 LPASS_BE_INCALL_RECORD_TX},
322 { MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_RX},
323 { MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_TX},
324 { SECONDARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SEC_I2S_RX},
325 { SLIMBUS_1_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_RX},
326 { SLIMBUS_1_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_TX},
327 { SLIMBUS_2_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_RX},
328 { SLIMBUS_2_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_TX},
329 { SLIMBUS_3_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_RX},
330 { SLIMBUS_3_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_TX},
331 { SLIMBUS_4_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_RX},
332 { SLIMBUS_4_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_TX},
333 { SLIMBUS_5_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_RX},
334 { SLIMBUS_5_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_TX},
335 { SLIMBUS_6_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_RX},
336 { SLIMBUS_6_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_TX},
337 { SLIMBUS_7_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_RX},
338 { SLIMBUS_7_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_TX},
339 { SLIMBUS_8_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_RX},
340 { SLIMBUS_8_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_TX},
341 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_RX},
342 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_TX},
343 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_1_TX},
344 { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
345 LPASS_BE_QUAT_MI2S_RX},
346 { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
347 LPASS_BE_QUAT_MI2S_TX},
348 { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
349 LPASS_BE_SEC_MI2S_RX},
350 { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
351 LPASS_BE_SEC_MI2S_TX},
352 { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
353 LPASS_BE_PRI_MI2S_RX},
354 { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
355 LPASS_BE_PRI_MI2S_TX},
356 { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
357 LPASS_BE_TERT_MI2S_RX},
358 { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
359 LPASS_BE_TERT_MI2S_TX},
360 { AUDIO_PORT_ID_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
361 LPASS_BE_AUDIO_I2S_RX},
362 { AFE_PORT_ID_SECONDARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
363 LPASS_BE_SEC_AUXPCM_RX},
364 { AFE_PORT_ID_SECONDARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
365 LPASS_BE_SEC_AUXPCM_TX},
366 { AFE_PORT_ID_SPDIF_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
367 LPASS_BE_SPDIF_RX},
368 { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, {0}, {0}, 0, 0, 0, 0, {0},
369 LPASS_BE_SEC_MI2S_RX_SD1},
370 { AFE_PORT_ID_QUINARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
371 LPASS_BE_QUIN_MI2S_RX},
372 { AFE_PORT_ID_QUINARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
373 LPASS_BE_QUIN_MI2S_TX},
374 { AFE_PORT_ID_SENARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
375 LPASS_BE_SENARY_MI2S_TX},
376 { AFE_PORT_ID_PRIMARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
377 LPASS_BE_PRI_TDM_RX_0},
378 { AFE_PORT_ID_PRIMARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
379 LPASS_BE_PRI_TDM_TX_0},
380 { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
381 LPASS_BE_PRI_TDM_RX_1},
382 { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
383 LPASS_BE_PRI_TDM_TX_1},
384 { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
385 LPASS_BE_PRI_TDM_RX_2},
386 { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
387 LPASS_BE_PRI_TDM_TX_2},
388 { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
389 LPASS_BE_PRI_TDM_RX_3},
390 { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
391 LPASS_BE_PRI_TDM_TX_3},
392 { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
393 LPASS_BE_PRI_TDM_RX_4},
394 { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
395 LPASS_BE_PRI_TDM_TX_4},
396 { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
397 LPASS_BE_PRI_TDM_RX_5},
398 { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
399 LPASS_BE_PRI_TDM_TX_5},
400 { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
401 LPASS_BE_PRI_TDM_RX_6},
402 { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
403 LPASS_BE_PRI_TDM_TX_6},
404 { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
405 LPASS_BE_PRI_TDM_RX_7},
406 { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
407 LPASS_BE_PRI_TDM_TX_7},
408 { AFE_PORT_ID_SECONDARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
409 LPASS_BE_SEC_TDM_RX_0},
410 { AFE_PORT_ID_SECONDARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
411 LPASS_BE_SEC_TDM_TX_0},
412 { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
413 LPASS_BE_SEC_TDM_RX_1},
414 { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
415 LPASS_BE_SEC_TDM_TX_1},
416 { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
417 LPASS_BE_SEC_TDM_RX_2},
418 { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
419 LPASS_BE_SEC_TDM_TX_2},
420 { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
421 LPASS_BE_SEC_TDM_RX_3},
422 { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
423 LPASS_BE_SEC_TDM_TX_3},
424 { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
425 LPASS_BE_SEC_TDM_RX_4},
426 { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
427 LPASS_BE_SEC_TDM_TX_4},
428 { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
429 LPASS_BE_SEC_TDM_RX_5},
430 { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
431 LPASS_BE_SEC_TDM_TX_5},
432 { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
433 LPASS_BE_SEC_TDM_RX_6},
434 { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
435 LPASS_BE_SEC_TDM_TX_6},
436 { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
437 LPASS_BE_SEC_TDM_RX_7},
438 { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
439 LPASS_BE_SEC_TDM_TX_7},
440 { AFE_PORT_ID_TERTIARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
441 LPASS_BE_TERT_TDM_RX_0},
442 { AFE_PORT_ID_TERTIARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
443 LPASS_BE_TERT_TDM_TX_0},
444 { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
445 LPASS_BE_TERT_TDM_RX_1},
446 { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
447 LPASS_BE_TERT_TDM_TX_1},
448 { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
449 LPASS_BE_TERT_TDM_RX_2},
450 { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
451 LPASS_BE_TERT_TDM_TX_2},
452 { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
453 LPASS_BE_TERT_TDM_RX_3},
454 { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
455 LPASS_BE_TERT_TDM_TX_3},
456 { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
457 LPASS_BE_TERT_TDM_RX_4},
458 { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
459 LPASS_BE_TERT_TDM_TX_4},
460 { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
461 LPASS_BE_TERT_TDM_RX_5},
462 { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
463 LPASS_BE_TERT_TDM_TX_5},
464 { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
465 LPASS_BE_TERT_TDM_RX_6},
466 { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
467 LPASS_BE_TERT_TDM_TX_6},
468 { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
469 LPASS_BE_TERT_TDM_RX_7},
470 { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
471 LPASS_BE_TERT_TDM_TX_7},
472 { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
473 LPASS_BE_QUAT_TDM_RX_0},
474 { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
475 LPASS_BE_QUAT_TDM_TX_0},
476 { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
477 LPASS_BE_QUAT_TDM_RX_1},
478 { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
479 LPASS_BE_QUAT_TDM_TX_1},
480 { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
481 LPASS_BE_QUAT_TDM_RX_2},
482 { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
483 LPASS_BE_QUAT_TDM_TX_2},
484 { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
485 LPASS_BE_QUAT_TDM_RX_3},
486 { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
487 LPASS_BE_QUAT_TDM_TX_3},
488 { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
489 LPASS_BE_QUAT_TDM_RX_4},
490 { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
491 LPASS_BE_QUAT_TDM_TX_4},
492 { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
493 LPASS_BE_QUAT_TDM_RX_5},
494 { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
495 LPASS_BE_QUAT_TDM_TX_5},
496 { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
497 LPASS_BE_QUAT_TDM_RX_6},
498 { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
499 LPASS_BE_QUAT_TDM_TX_6},
500 { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
501 LPASS_BE_QUAT_TDM_RX_7},
502 { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
503 LPASS_BE_QUAT_TDM_TX_7},
Rohit Kumara5077932017-09-10 22:05:05 +0530504 { AFE_PORT_ID_QUINARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
505 LPASS_BE_QUIN_TDM_RX_0},
506 { AFE_PORT_ID_QUINARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
507 LPASS_BE_QUIN_TDM_TX_0},
508 { AFE_PORT_ID_QUINARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
509 LPASS_BE_QUIN_TDM_RX_1},
510 { AFE_PORT_ID_QUINARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
511 LPASS_BE_QUIN_TDM_TX_1},
512 { AFE_PORT_ID_QUINARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
513 LPASS_BE_QUIN_TDM_RX_2},
514 { AFE_PORT_ID_QUINARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
515 LPASS_BE_QUIN_TDM_TX_2},
516 { AFE_PORT_ID_QUINARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
517 LPASS_BE_QUIN_TDM_RX_3},
518 { AFE_PORT_ID_QUINARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
519 LPASS_BE_QUIN_TDM_TX_3},
520 { AFE_PORT_ID_QUINARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
521 LPASS_BE_QUIN_TDM_RX_4},
522 { AFE_PORT_ID_QUINARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
523 LPASS_BE_QUIN_TDM_TX_4},
524 { AFE_PORT_ID_QUINARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
525 LPASS_BE_QUIN_TDM_RX_5},
526 { AFE_PORT_ID_QUINARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
527 LPASS_BE_QUIN_TDM_TX_5},
528 { AFE_PORT_ID_QUINARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
529 LPASS_BE_QUIN_TDM_RX_6},
530 { AFE_PORT_ID_QUINARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
531 LPASS_BE_QUIN_TDM_TX_6},
532 { AFE_PORT_ID_QUINARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
533 LPASS_BE_QUIN_TDM_RX_7},
534 { AFE_PORT_ID_QUINARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
535 LPASS_BE_QUIN_TDM_TX_7},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530536 { INT_BT_A2DP_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
537 LPASS_BE_INT_BT_A2DP_RX},
538 { AFE_PORT_ID_USB_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
539 LPASS_BE_USB_AUDIO_RX},
540 { AFE_PORT_ID_USB_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
541 LPASS_BE_USB_AUDIO_TX},
542 { DISPLAY_PORT_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
543 LPASS_BE_DISPLAY_PORT},
544 { AFE_PORT_ID_TERTIARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
545 LPASS_BE_TERT_AUXPCM_RX},
546 { AFE_PORT_ID_TERTIARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
547 LPASS_BE_TERT_AUXPCM_TX},
548 { AFE_PORT_ID_QUATERNARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
549 LPASS_BE_QUAT_AUXPCM_RX},
550 { AFE_PORT_ID_QUATERNARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
551 LPASS_BE_QUAT_AUXPCM_TX},
Rohit Kumara5077932017-09-10 22:05:05 +0530552 { AFE_PORT_ID_QUINARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
553 LPASS_BE_QUIN_AUXPCM_RX},
554 { AFE_PORT_ID_QUINARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
555 LPASS_BE_QUIN_AUXPCM_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530556 { AFE_PORT_ID_INT0_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
557 LPASS_BE_INT0_MI2S_RX},
558 { AFE_PORT_ID_INT0_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
559 LPASS_BE_INT0_MI2S_TX},
560 { AFE_PORT_ID_INT1_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
561 LPASS_BE_INT1_MI2S_RX},
562 { AFE_PORT_ID_INT1_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
563 LPASS_BE_INT1_MI2S_TX},
564 { AFE_PORT_ID_INT2_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
565 LPASS_BE_INT2_MI2S_RX},
566 { AFE_PORT_ID_INT2_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
567 LPASS_BE_INT2_MI2S_TX},
568 { AFE_PORT_ID_INT3_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
569 LPASS_BE_INT3_MI2S_RX},
570 { AFE_PORT_ID_INT3_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
571 LPASS_BE_INT3_MI2S_TX},
572 { AFE_PORT_ID_INT4_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
573 LPASS_BE_INT4_MI2S_RX},
574 { AFE_PORT_ID_INT4_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
575 LPASS_BE_INT4_MI2S_TX},
576 { AFE_PORT_ID_INT5_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
577 LPASS_BE_INT5_MI2S_RX},
578 { AFE_PORT_ID_INT5_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
579 LPASS_BE_INT5_MI2S_TX},
580 { AFE_PORT_ID_INT6_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
581 LPASS_BE_INT6_MI2S_RX},
582 { AFE_PORT_ID_INT6_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
583 LPASS_BE_INT6_MI2S_TX},
Raja Mallik425e1d32018-05-20 19:21:10 +0530584 { AFE_LOOPBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_AFE_LOOPBACK_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530585};
586
587/* Track ASM playback & capture sessions of DAI
588 * Track LSM listen sessions
589 */
590static struct msm_pcm_routing_fdai_data
591 fe_dai_map[MSM_FRONTEND_DAI_MAX][2] = {
592 /* MULTIMEDIA1 */
593 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
594 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
595 /* MULTIMEDIA2 */
596 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
597 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
598 /* MULTIMEDIA3 */
599 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
600 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
601 /* MULTIMEDIA4 */
602 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
603 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
604 /* MULTIMEDIA5 */
605 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
606 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
607 /* MULTIMEDIA6 */
608 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
609 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
610 /* MULTIMEDIA7*/
611 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
612 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
613 /* MULTIMEDIA8 */
614 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
615 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
616 /* MULTIMEDIA9 */
617 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
618 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
619 /* MULTIMEDIA10 */
620 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
621 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
622 /* MULTIMEDIA11 */
623 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
624 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
625 /* MULTIMEDIA12 */
626 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
627 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
628 /* MULTIMEDIA13 */
629 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
630 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
631 /* MULTIMEDIA14 */
632 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
633 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
634 /* MULTIMEDIA15 */
635 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
636 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
637 /* MULTIMEDIA16 */
638 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
639 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
640 /* MULTIMEDIA17 */
641 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
642 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
643 /* MULTIMEDIA18 */
644 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
645 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
646 /* MULTIMEDIA19 */
647 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
648 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
649 /* MULTIMEDIA20 */
650 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
651 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +0530652 /* MULTIMEDIA28 */
653 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
654 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
655 /* MULTIMEDIA29 */
656 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
657 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530658 /* VOIP */
659 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
660 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
661 /* AFE_RX */
662 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
663 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
664 /* AFE_TX */
665 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
666 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
667 /* VOICE_STUB */
668 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
669 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530670 /* DTMF_RX */
671 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
672 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530673 /* QCHAT */
674 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
675 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
676 /* VOLTE_STUB */
677 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
678 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
679 /* LSM1 */
680 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
681 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
682 /* LSM2 */
683 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
684 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
685 /* LSM3 */
686 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
687 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
688 /* LSM4 */
689 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
690 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
691 /* LSM5 */
692 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
693 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
694 /* LSM6 */
695 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
696 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
697 /* LSM7 */
698 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
699 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
700 /* LSM8 */
701 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
702 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
703 /* VOICE2_STUB */
704 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
705 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530706 /* VOICEMMODE1 */
707 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
708 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
709 /* VOICEMMODE2 */
710 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
711 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
712};
713
714static unsigned long session_copp_map[MSM_FRONTEND_DAI_MAX][2]
715 [MSM_BACKEND_DAI_MAX];
716static struct msm_pcm_routing_app_type_data app_type_cfg[MAX_APP_TYPES];
717static struct msm_pcm_routing_app_type_data lsm_app_type_cfg[MAX_APP_TYPES];
718static struct msm_pcm_stream_app_type_cfg
719 fe_dai_app_type_cfg[MSM_FRONTEND_DAI_MAX][2][MSM_BACKEND_DAI_MAX];
720
721static int last_be_id_configured[MSM_FRONTEND_DAI_MAX][MAX_SESSION_TYPES];
722
723/* The caller of this should aqcuire routing lock */
724void msm_pcm_routing_get_bedai_info(int be_idx,
725 struct msm_pcm_routing_bdai_data *be_dai)
726{
727 if (be_idx >= 0 && be_idx < MSM_BACKEND_DAI_MAX)
728 memcpy(be_dai, &msm_bedais[be_idx],
729 sizeof(struct msm_pcm_routing_bdai_data));
730}
731
732/* The caller of this should aqcuire routing lock */
733void msm_pcm_routing_get_fedai_info(int fe_idx, int sess_type,
734 struct msm_pcm_routing_fdai_data *fe_dai)
735{
736 if ((sess_type == SESSION_TYPE_TX) || (sess_type == SESSION_TYPE_RX))
737 memcpy(fe_dai, &fe_dai_map[fe_idx][sess_type],
738 sizeof(struct msm_pcm_routing_fdai_data));
739}
740
741void msm_pcm_routing_acquire_lock(void)
742{
743 mutex_lock(&routing_lock);
744}
745
746void msm_pcm_routing_release_lock(void)
747{
748 mutex_unlock(&routing_lock);
749}
750
751static int msm_pcm_routing_get_app_type_idx(int app_type)
752{
753 int idx;
754
755 pr_debug("%s: app_type: %d\n", __func__, app_type);
756 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
757 if (app_type_cfg[idx].app_type == app_type)
758 return idx;
759 }
760 pr_info("%s: App type not available, fallback to default\n", __func__);
761 return 0;
762}
763
764static int msm_pcm_routing_get_lsm_app_type_idx(int app_type)
765{
766 int idx;
767
768 pr_debug("%s: app_type: %d\n", __func__, app_type);
769 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
770 if (lsm_app_type_cfg[idx].app_type == app_type)
771 return idx;
772 }
773 pr_debug("%s: App type not available, fallback to default\n", __func__);
774 return 0;
775}
776
777static bool is_mm_lsm_fe_id(int fe_id)
778{
779 bool rc = true;
780
781 if (fe_id > MSM_FRONTEND_DAI_MM_MAX_ID &&
782 ((fe_id < MSM_FRONTEND_DAI_LSM1) ||
783 (fe_id > MSM_FRONTEND_DAI_LSM8))) {
784 rc = false;
785 }
786 return rc;
787}
788
789int msm_pcm_routing_reg_stream_app_type_cfg(
790 int fedai_id, int session_type, int be_id,
791 struct msm_pcm_stream_app_type_cfg *cfg_data)
792{
793 int ret = 0;
794
795 if (cfg_data == NULL) {
796 pr_err("%s: Received NULL pointer for cfg_data\n", __func__);
797 ret = -EINVAL;
798 goto done;
799 }
800
801 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
802 __func__, fedai_id, session_type, be_id,
803 cfg_data->app_type, cfg_data->acdb_dev_id,
804 cfg_data->sample_rate);
805
806 if (!is_mm_lsm_fe_id(fedai_id)) {
807 pr_err("%s: Invalid machine driver ID %d\n",
808 __func__, fedai_id);
809 ret = -EINVAL;
810 goto done;
811 }
812 if (session_type != SESSION_TYPE_RX &&
813 session_type != SESSION_TYPE_TX) {
814 pr_err("%s: Invalid session type %d\n",
815 __func__, session_type);
816 ret = -EINVAL;
817 goto done;
818 }
819 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
820 pr_err("%s: Received out of bounds be_id %d\n",
821 __func__, be_id);
822 ret = -EINVAL;
823 goto done;
824 }
825
826 fe_dai_app_type_cfg[fedai_id][session_type][be_id] = *cfg_data;
827
828 /*
829 * Store the BE ID of the configuration information set as the latest so
830 * the get mixer control knows what to return.
831 */
832 last_be_id_configured[fedai_id][session_type] = be_id;
833
834done:
835 return ret;
836}
837EXPORT_SYMBOL(msm_pcm_routing_reg_stream_app_type_cfg);
838
839/**
840 * msm_pcm_routing_get_stream_app_type_cfg
841 *
842 * Receives fedai_id, session_type, be_id, and populates app_type,
843 * acdb_dev_id, & sample rate. Returns 0 on success. On failure returns
844 * -EINVAL and does not alter passed values.
845 *
846 * fedai_id - Passed value, front end ID for which app type config is wanted
847 * session_type - Passed value, session type for which app type config
848 * is wanted
849 * be_id - Returned value, back end device id the app type config data is for
850 * cfg_data - Returned value, configuration data used by app type config
851 */
852int msm_pcm_routing_get_stream_app_type_cfg(
853 int fedai_id, int session_type, int *bedai_id,
854 struct msm_pcm_stream_app_type_cfg *cfg_data)
855{
856 int be_id;
857 int ret = 0;
858
859 if (bedai_id == NULL) {
860 pr_err("%s: Received NULL pointer for backend ID\n", __func__);
861 ret = -EINVAL;
862 goto done;
863 } else if (cfg_data == NULL) {
864 pr_err("%s: NULL pointer sent for cfg_data\n", __func__);
865 ret = -EINVAL;
866 goto done;
867 } else if (!is_mm_lsm_fe_id(fedai_id)) {
868 pr_err("%s: Invalid FE ID %d\n", __func__, fedai_id);
869 ret = -EINVAL;
870 goto done;
871 } else if (session_type != SESSION_TYPE_RX &&
872 session_type != SESSION_TYPE_TX) {
873 pr_err("%s: Invalid session type %d\n", __func__, session_type);
874 ret = -EINVAL;
875 goto done;
876 }
877
878 be_id = last_be_id_configured[fedai_id][session_type];
879 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
880 pr_err("%s: Invalid BE ID %d\n", __func__, be_id);
881 ret = -EINVAL;
882 goto done;
883 }
884
885 *bedai_id = be_id;
886 *cfg_data = fe_dai_app_type_cfg[fedai_id][session_type][be_id];
887 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
888 __func__, fedai_id, session_type, *bedai_id,
889 cfg_data->app_type, cfg_data->acdb_dev_id,
890 cfg_data->sample_rate);
891done:
892 return ret;
893}
894EXPORT_SYMBOL(msm_pcm_routing_get_stream_app_type_cfg);
895
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530896static struct cal_block_data *msm_routing_find_topology_by_path(int path,
897 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530898{
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530899 struct list_head *ptr, *next;
900 struct cal_block_data *cal_block = NULL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530901 pr_debug("%s\n", __func__);
902
903 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530904 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530905
906 cal_block = list_entry(ptr,
907 struct cal_block_data, list);
908
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530909 if (((struct audio_cal_info_adm_top *)cal_block
910 ->cal_info)->path == path) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530911 return cal_block;
912 }
913 }
914 pr_debug("%s: Can't find topology for path %d\n", __func__, path);
915 return NULL;
916}
917
918static struct cal_block_data *msm_routing_find_topology(int path,
919 int app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530920 int acdb_id,
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -0700921 int cal_index,
922 bool exact)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530923{
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,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530931 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530932
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 }
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -0700944 pr_debug("%s: Can't find topology for path %d, app %d, "
945 "acdb_id %d %s\n", __func__, path, app_type, acdb_id,
946 exact ? "fail" : "defaulting to search by path");
947 return exact ? NULL : msm_routing_find_topology_by_path(path,
948 cal_index);
949}
950
951static int msm_routing_find_topology_on_index(int session_type, int app_type,
952 int acdb_dev_id, int idx,
953 bool exact)
954{
955 int topology = -EINVAL;
956 struct cal_block_data *cal_block = NULL;
957
958 mutex_lock(&cal_data[idx]->lock);
959 cal_block = msm_routing_find_topology(session_type, app_type,
960 acdb_dev_id, idx, exact);
961 if (cal_block != NULL) {
962 topology = ((struct audio_cal_info_adm_top *)
963 cal_block->cal_info)->topology;
964 }
965 mutex_unlock(&cal_data[idx]->lock);
966 return topology;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530967}
968
969static int msm_routing_get_adm_topology(int fedai_id, int session_type,
970 int be_id)
971{
972 int topology = NULL_COPP_TOPOLOGY;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530973 int app_type = 0, acdb_dev_id = 0;
974
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530975 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
976 __func__, fedai_id, session_type, be_id);
977
978 if (cal_data == NULL)
979 goto done;
980
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530981 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
982 acdb_dev_id =
983 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -0700984 pr_debug("%s: Check for exact LSM topology\n", __func__);
985 topology = msm_routing_find_topology_on_index(session_type,
986 app_type,
987 acdb_dev_id,
988 ADM_LSM_TOPOLOGY_CAL_TYPE_IDX,
989 true /*exact*/);
990 if (topology < 0) {
991 pr_debug("%s: Check for compatible topology\n", __func__);
992 topology = msm_routing_find_topology_on_index(session_type,
993 app_type,
994 acdb_dev_id,
995 ADM_TOPOLOGY_CAL_TYPE_IDX,
996 false /*exact*/);
997 if (topology < 0)
998 topology = NULL_COPP_TOPOLOGY;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530999 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301000done:
1001 pr_debug("%s: Using topology %d\n", __func__, topology);
1002 return topology;
1003}
1004
1005static uint8_t is_be_dai_extproc(int be_dai)
1006{
1007 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
1008 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
1009 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
1010 return 1;
1011 else
1012 return 0;
1013}
1014
1015static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
1016 int path_type, int perf_mode,
1017 uint32_t passthr_mode)
1018{
1019 int i, port_type, j, num_copps = 0;
1020 struct route_payload payload;
1021
1022 port_type = ((path_type == ADM_PATH_PLAYBACK ||
1023 path_type == ADM_PATH_COMPRESSED_RX) ?
1024 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
1025
1026 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1027 if (!is_be_dai_extproc(i) &&
1028 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1029 (msm_bedais[i].active) &&
1030 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1031 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1032 unsigned long copp =
1033 session_copp_map[fedai_id][sess_type][i];
1034 if (test_bit(j, &copp)) {
1035 payload.port_id[num_copps] =
1036 msm_bedais[i].port_id;
1037 payload.copp_idx[num_copps] = j;
1038 payload.app_type[num_copps] =
1039 fe_dai_app_type_cfg
1040 [fedai_id][sess_type][i]
1041 .app_type;
1042 payload.acdb_dev_id[num_copps] =
1043 fe_dai_app_type_cfg
1044 [fedai_id][sess_type][i]
1045 .acdb_dev_id;
1046 payload.sample_rate[num_copps] =
1047 fe_dai_app_type_cfg
1048 [fedai_id][sess_type][i]
1049 .sample_rate;
1050 num_copps++;
1051 }
1052 }
1053 }
1054 }
1055
1056 if (num_copps) {
1057 payload.num_copps = num_copps;
1058 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1059 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1060 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1061 }
1062}
1063
1064void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1065 int stream_type)
1066{
1067 int i, session_type, path_type, port_type;
1068 u32 mode = 0;
1069
1070 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1071 /* bad ID assigned in machine driver */
1072 pr_err("%s: bad MM ID\n", __func__);
1073 return;
1074 }
1075
1076 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1077 session_type = SESSION_TYPE_RX;
1078 path_type = ADM_PATH_PLAYBACK;
1079 port_type = MSM_AFE_PORT_TYPE_RX;
1080 } else {
1081 session_type = SESSION_TYPE_TX;
1082 path_type = ADM_PATH_LIVE_REC;
1083 port_type = MSM_AFE_PORT_TYPE_TX;
1084 }
1085
1086 mutex_lock(&routing_lock);
1087
1088 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1089 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1090 if (!is_be_dai_extproc(i) &&
1091 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1092 (msm_bedais[i].active) &&
1093 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1094 mode = afe_get_port_type(msm_bedais[i].port_id);
1095 adm_connect_afe_port(mode, dspst_id,
1096 msm_bedais[i].port_id);
1097 break;
1098 }
1099 }
1100 mutex_unlock(&routing_lock);
1101}
1102
1103static bool route_check_fe_id_adm_support(int fe_id)
1104{
1105 bool rc = true;
1106
1107 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1108 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1109 /* fe id is listen while port is set to afe */
1110 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1111 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1112 __func__, fe_id, lsm_port_index);
1113 rc = false;
1114 }
1115 }
1116
1117 return rc;
1118}
1119
1120int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1121 int dspst_id, int stream_type,
1122 uint32_t passthr_mode)
1123{
1124 int i, j, session_type, path_type, port_type, topology;
1125 int num_copps = 0;
1126 struct route_payload payload;
1127 u32 channels, sample_rate;
1128 u16 bit_width = 16;
1129 bool is_lsm;
1130
1131 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1132 __func__, fe_id, perf_mode, dspst_id,
1133 stream_type, passthr_mode);
1134 if (!is_mm_lsm_fe_id(fe_id)) {
1135 /* bad ID assigned in machine driver */
1136 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1137 return -EINVAL;
1138 }
1139
1140 if (!route_check_fe_id_adm_support(fe_id)) {
1141 /* ignore adm open if not supported for fe_id */
1142 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1143 return 0;
1144 }
1145
1146 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1147 session_type = SESSION_TYPE_RX;
1148 if (passthr_mode != LEGACY_PCM)
1149 path_type = ADM_PATH_COMPRESSED_RX;
1150 else
1151 path_type = ADM_PATH_PLAYBACK;
1152 port_type = MSM_AFE_PORT_TYPE_RX;
1153 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1154 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301155 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301156 path_type = ADM_PATH_COMPRESSED_TX;
1157 else
1158 path_type = ADM_PATH_LIVE_REC;
1159 port_type = MSM_AFE_PORT_TYPE_TX;
1160 } else {
1161 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1162 return -EINVAL;
1163 }
1164
1165 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1166 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1167 mutex_lock(&routing_lock);
1168
1169 payload.num_copps = 0; /* only RX needs to use payload */
1170 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1171 /* re-enable EQ if active */
1172 msm_qti_pp_send_eq_values(fe_id);
1173 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1174 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1175 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1176
1177 if (!is_be_dai_extproc(i) &&
1178 (afe_get_port_type(msm_bedais[i].port_id) ==
1179 port_type) &&
1180 (msm_bedais[i].active) &&
1181 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1182 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1183
1184 /*
1185 * check if ADM needs to be configured with different
1186 * channel mapping than backend
1187 */
1188 if (!msm_bedais[i].adm_override_ch)
1189 channels = msm_bedais[i].channel;
1190 else
1191 channels = msm_bedais[i].adm_override_ch;
1192
1193 bit_width = msm_routing_get_bit_width(
1194 msm_bedais[i].format);
1195 app_type =
1196 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1197 if (app_type && is_lsm) {
1198 app_type_idx =
1199 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1200 sample_rate =
1201 fe_dai_app_type_cfg[fe_id][session_type][i]
1202 .sample_rate;
1203 bit_width =
1204 lsm_app_type_cfg[app_type_idx].bit_width;
1205 } else if (app_type) {
1206 app_type_idx =
1207 msm_pcm_routing_get_app_type_idx(
1208 app_type);
1209 sample_rate =
1210 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1211 bit_width =
1212 app_type_cfg[app_type_idx].bit_width;
1213 } else {
1214 sample_rate = msm_bedais[i].sample_rate;
1215 }
1216 acdb_dev_id =
1217 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1218 topology = msm_routing_get_adm_topology(fe_id,
1219 session_type,
1220 i);
1221 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1222 || (passthr_mode ==
1223 COMPRESSED_PASSTHROUGH_GEN))
1224 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1225 pr_debug("%s: Before adm open topology %d\n", __func__,
1226 topology);
1227
1228 copp_idx =
1229 adm_open(msm_bedais[i].port_id,
1230 path_type, sample_rate, channels,
1231 topology, perf_mode, bit_width,
1232 app_type, acdb_dev_id);
1233 if ((copp_idx < 0) ||
1234 (copp_idx >= MAX_COPPS_PER_PORT)) {
1235 pr_err("%s:adm open failed coppid:%d\n",
1236 __func__, copp_idx);
1237 mutex_unlock(&routing_lock);
1238 return -EINVAL;
1239 }
1240 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1241 __func__, fe_id, session_type, i);
1242 set_bit(copp_idx,
1243 &session_copp_map[fe_id][session_type][i]);
1244
1245 if (msm_is_resample_needed(
1246 sample_rate,
1247 msm_bedais[i].sample_rate))
1248 adm_copp_mfc_cfg(
1249 msm_bedais[i].port_id, copp_idx,
1250 msm_bedais[i].sample_rate);
1251
1252 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1253 unsigned long copp =
1254 session_copp_map[fe_id][session_type][i];
1255 if (test_bit(j, &copp)) {
1256 payload.port_id[num_copps] =
1257 msm_bedais[i].port_id;
1258 payload.copp_idx[num_copps] = j;
1259 payload.app_type[num_copps] =
1260 fe_dai_app_type_cfg
1261 [fe_id][session_type][i]
1262 .app_type;
1263 payload.acdb_dev_id[num_copps] =
1264 fe_dai_app_type_cfg
1265 [fe_id][session_type][i]
1266 .acdb_dev_id;
1267 payload.sample_rate[num_copps] =
1268 fe_dai_app_type_cfg
1269 [fe_id][session_type][i]
1270 .sample_rate;
1271 num_copps++;
1272 }
1273 }
1274 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1275 && passthr_mode !=
1276 COMPRESSED_PASSTHROUGH_GEN) {
1277 msm_routing_send_device_pp_params(
1278 msm_bedais[i].port_id,
1279 copp_idx, fe_id);
1280 }
1281 }
1282 }
1283 if (num_copps) {
1284 payload.num_copps = num_copps;
1285 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1286 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1287 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1288 }
1289 mutex_unlock(&routing_lock);
1290 return 0;
1291}
1292
1293static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1294{
1295 u32 session_id;
1296
1297 switch (val) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301298 case MSM_FRONTEND_DAI_QCHAT:
1299 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1300 break;
1301 case MSM_FRONTEND_DAI_VOIP:
1302 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1303 break;
1304 case MSM_FRONTEND_DAI_VOICEMMODE1:
1305 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1306 break;
1307 case MSM_FRONTEND_DAI_VOICEMMODE2:
1308 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1309 break;
1310 default:
1311 session_id = 0;
1312 }
1313
1314 pr_debug("%s session_id 0x%x", __func__, session_id);
1315 return session_id;
1316}
1317
1318static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1319 int dspst_id, int stream_type)
1320{
1321 int copp_idx = 0;
1322 int sess_type = 0;
1323 int i = 0, j = 0, be_id;
1324 int ret = 0;
1325
1326 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1327 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1328 return 0;
1329 }
1330
1331 if (!(channel_mixer[fe_id].enable)) {
1332 pr_debug("%s: channel mixer not enabled for FE %d\n",
1333 __func__, fe_id);
1334 return 0;
1335 }
1336
1337 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1338 sess_type = SESSION_TYPE_RX;
1339 else
1340 sess_type = SESSION_TYPE_TX;
1341
1342 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1343 ++i) {
1344 be_id = channel_input[fe_id][i] - 1;
1345 channel_mixer[fe_id].input_channels[i] =
1346 msm_bedais[be_id].channel;
1347
1348 if ((msm_bedais[be_id].active) &&
1349 test_bit(fe_id,
1350 &msm_bedais[be_id].fe_sessions[0])) {
1351 unsigned long copp =
1352 session_copp_map[fe_id][sess_type][be_id];
1353 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1354 if (test_bit(j, &copp)) {
1355 copp_idx = j;
1356 break;
1357 }
1358 }
1359
1360 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1361 __func__,
1362 fe_id, be_id, msm_bedais[be_id].channel,
1363 copp_idx);
1364 ret = adm_programable_channel_mixer(
1365 msm_bedais[be_id].port_id,
1366 copp_idx, dspst_id, sess_type,
1367 channel_mixer + fe_id, i);
1368 }
1369 }
1370
1371 return ret;
1372}
1373
1374int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1375 int dspst_id, int stream_type)
1376{
1377 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1378 struct route_payload payload;
1379 u32 channels, sample_rate;
1380 uint16_t bits_per_sample = 16;
1381 uint32_t passthr_mode = LEGACY_PCM;
1382 int ret = 0;
1383
1384 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1385 /* bad ID assigned in machine driver */
1386 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1387 return -EINVAL;
1388 }
1389
1390 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1391 session_type = SESSION_TYPE_RX;
1392 path_type = ADM_PATH_PLAYBACK;
1393 port_type = MSM_AFE_PORT_TYPE_RX;
1394 } else {
1395 session_type = SESSION_TYPE_TX;
1396 path_type = ADM_PATH_LIVE_REC;
1397 port_type = MSM_AFE_PORT_TYPE_TX;
1398 }
1399
1400 mutex_lock(&routing_lock);
1401
1402 payload.num_copps = 0; /* only RX needs to use payload */
1403 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1404 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1405
1406 /* re-enable EQ if active */
1407 msm_qti_pp_send_eq_values(fedai_id);
1408 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1409 if (!is_be_dai_extproc(i) &&
1410 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1411 (msm_bedais[i].active) &&
1412 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1413 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1414 /*
1415 * check if ADM needs to be configured with different
1416 * channel mapping than backend
1417 */
1418 if (!msm_bedais[i].adm_override_ch)
1419 channels = msm_bedais[i].channel;
1420 else
1421 channels = msm_bedais[i].adm_override_ch;
1422 msm_bedais[i].passthr_mode[fedai_id] =
1423 LEGACY_PCM;
1424
1425 bits_per_sample = msm_routing_get_bit_width(
1426 msm_bedais[i].format);
1427
1428 app_type =
1429 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1430 if (app_type) {
1431 app_type_idx =
1432 msm_pcm_routing_get_app_type_idx(app_type);
1433 sample_rate =
1434 fe_dai_app_type_cfg[fedai_id][session_type][i]
1435 .sample_rate;
1436 bits_per_sample =
1437 app_type_cfg[app_type_idx].bit_width;
1438 } else
1439 sample_rate = msm_bedais[i].sample_rate;
1440
1441 acdb_dev_id =
1442 fe_dai_app_type_cfg[fedai_id][session_type][i]
1443 .acdb_dev_id;
1444 topology = msm_routing_get_adm_topology(fedai_id,
1445 session_type,
1446 i);
1447 copp_idx = adm_open(msm_bedais[i].port_id, path_type,
1448 sample_rate, channels, topology,
1449 perf_mode, bits_per_sample,
1450 app_type, acdb_dev_id);
1451 if ((copp_idx < 0) ||
1452 (copp_idx >= MAX_COPPS_PER_PORT)) {
1453 pr_err("%s: adm open failed copp_idx:%d\n",
1454 __func__, copp_idx);
1455 mutex_unlock(&routing_lock);
1456 return -EINVAL;
1457 }
1458 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1459 __func__, fedai_id, session_type, i);
1460 set_bit(copp_idx,
1461 &session_copp_map[fedai_id][session_type][i]);
1462
1463 if (msm_is_resample_needed(
1464 sample_rate,
1465 msm_bedais[i].sample_rate))
1466 adm_copp_mfc_cfg(
1467 msm_bedais[i].port_id, copp_idx,
1468 msm_bedais[i].sample_rate);
1469
1470 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1471 unsigned long copp =
1472 session_copp_map[fedai_id][session_type][i];
1473 if (test_bit(j, &copp)) {
1474 payload.port_id[num_copps] =
1475 msm_bedais[i].port_id;
1476 payload.copp_idx[num_copps] = j;
1477 payload.app_type[num_copps] =
1478 fe_dai_app_type_cfg
1479 [fedai_id][session_type]
1480 [i].app_type;
1481 payload.acdb_dev_id[num_copps] =
1482 fe_dai_app_type_cfg
1483 [fedai_id][session_type]
1484 [i].acdb_dev_id;
1485 payload.sample_rate[num_copps] =
1486 fe_dai_app_type_cfg
1487 [fedai_id][session_type]
1488 [i].sample_rate;
1489 num_copps++;
1490 }
1491 }
1492 if ((perf_mode == LEGACY_PCM_MODE) &&
1493 (msm_bedais[i].passthr_mode[fedai_id] ==
1494 LEGACY_PCM))
1495 msm_pcm_routing_cfg_pp(msm_bedais[i].port_id,
1496 copp_idx, topology,
1497 channels);
1498 }
1499 }
1500 if (num_copps) {
1501 payload.num_copps = num_copps;
1502 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1503 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1504 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1505 }
1506
1507 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1508 dspst_id, stream_type);
1509 mutex_unlock(&routing_lock);
1510 return ret;
1511}
1512
1513int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1514 int dspst_id, int stream_type,
1515 struct msm_pcm_routing_evt event_info)
1516{
1517 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1518 stream_type)) {
1519 pr_err("%s: failed to reg phy stream\n", __func__);
1520 return -EINVAL;
1521 }
1522
1523 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1524 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1525 else
1526 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1527 return 0;
1528}
1529
1530void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1531{
1532 int i, port_type, session_type, path_type, topology;
1533 struct msm_pcm_routing_fdai_data *fdai;
1534
1535 if (!is_mm_lsm_fe_id(fedai_id)) {
1536 /* bad ID assigned in machine driver */
1537 pr_err("%s: bad MM ID\n", __func__);
1538 return;
1539 }
1540
1541 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1542 port_type = MSM_AFE_PORT_TYPE_RX;
1543 session_type = SESSION_TYPE_RX;
1544 path_type = ADM_PATH_PLAYBACK;
1545 } else {
1546 port_type = MSM_AFE_PORT_TYPE_TX;
1547 session_type = SESSION_TYPE_TX;
1548 path_type = ADM_PATH_LIVE_REC;
1549 }
1550
1551 mutex_lock(&routing_lock);
1552 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1553 if (!is_be_dai_extproc(i) &&
1554 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1555 (msm_bedais[i].active) &&
1556 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1557 int idx;
1558 unsigned long copp =
1559 session_copp_map[fedai_id][session_type][i];
1560 fdai = &fe_dai_map[fedai_id][session_type];
1561
1562 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1563 if (test_bit(idx, &copp))
1564 break;
1565
1566 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1567 pr_debug("%s: copp idx is invalid, exiting\n",
1568 __func__);
1569 continue;
1570 }
1571 topology = adm_get_topology_for_port_copp_idx(
1572 msm_bedais[i].port_id, idx);
1573 adm_close(msm_bedais[i].port_id, fdai->perf_mode, idx);
1574 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1575 __func__, copp, fedai_id, session_type, i);
1576 clear_bit(idx,
1577 &session_copp_map[fedai_id][session_type][i]);
1578 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1579 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1580 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1581 (msm_bedais[i].passthr_mode[fedai_id] ==
1582 LEGACY_PCM))
1583 msm_pcm_routing_deinit_pp(msm_bedais[i].port_id,
1584 topology);
1585 }
1586 }
1587
1588 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1589 fe_dai_map[fedai_id][session_type].be_srate = 0;
1590 mutex_unlock(&routing_lock);
1591}
1592
1593/* Check if FE/BE route is set */
1594static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1595{
1596 bool rc = false;
1597
1598 if (!is_mm_lsm_fe_id(fe_id)) {
1599 /* recheck FE ID in the mixer control defined in this file */
1600 pr_err("%s: bad MM ID\n", __func__);
1601 return rc;
1602 }
1603
1604 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1605 rc = true;
1606
1607 return rc;
1608}
1609
1610static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1611{
1612 int session_type, path_type, topology;
1613 u32 channels, sample_rate;
1614 uint16_t bits_per_sample = 16;
1615 struct msm_pcm_routing_fdai_data *fdai;
1616 uint32_t passthr_mode;
1617 bool is_lsm;
1618
1619 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1620
1621 if (!is_mm_lsm_fe_id(val)) {
1622 /* recheck FE ID in the mixer control defined in this file */
1623 pr_err("%s: bad MM ID\n", __func__);
1624 return;
1625 }
1626
1627 if (!route_check_fe_id_adm_support(val)) {
1628 /* ignore adm open if not supported for fe_id */
1629 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1630 return;
1631 }
1632
1633 passthr_mode = msm_bedais[reg].passthr_mode[val];
1634 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1635 MSM_AFE_PORT_TYPE_RX) {
1636 session_type = SESSION_TYPE_RX;
1637 if (passthr_mode != LEGACY_PCM)
1638 path_type = ADM_PATH_COMPRESSED_RX;
1639 else
1640 path_type = ADM_PATH_PLAYBACK;
1641 } else {
1642 session_type = SESSION_TYPE_TX;
Haynes Mathew George9a277722018-01-29 17:34:49 -08001643 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301644 path_type = ADM_PATH_COMPRESSED_TX;
1645 else
1646 path_type = ADM_PATH_LIVE_REC;
1647 }
1648 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1649 (val <= MSM_FRONTEND_DAI_LSM8);
1650
1651 mutex_lock(&routing_lock);
1652 if (set) {
1653 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1654 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1655 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1656 voc_start_playback(set, msm_bedais[reg].port_id);
1657
1658 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1659 fdai = &fe_dai_map[val][session_type];
1660 if (msm_bedais[reg].active && fdai->strm_id !=
1661 INVALID_SESSION) {
1662 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1663 /*
1664 * check if ADM needs to be configured with different
1665 * channel mapping than backend
1666 */
1667 if (!msm_bedais[reg].adm_override_ch)
1668 channels = msm_bedais[reg].channel;
1669 else
1670 channels = msm_bedais[reg].adm_override_ch;
1671 if (session_type == SESSION_TYPE_TX &&
1672 fdai->be_srate &&
1673 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1674 pr_debug("%s: flush strm %d diff BE rates\n",
1675 __func__, fdai->strm_id);
1676
1677 if (fdai->event_info.event_func)
1678 fdai->event_info.event_func(
1679 MSM_PCM_RT_EVT_BUF_RECFG,
1680 fdai->event_info.priv_data);
1681 fdai->be_srate = 0; /* might not need it */
1682 }
1683
1684 bits_per_sample = msm_routing_get_bit_width(
1685 msm_bedais[reg].format);
1686
1687 app_type =
1688 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1689 if (app_type && is_lsm) {
1690 app_type_idx =
1691 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1692 sample_rate =
1693 fe_dai_app_type_cfg[val][session_type][reg]
1694 .sample_rate;
1695 bits_per_sample =
1696 lsm_app_type_cfg[app_type_idx].bit_width;
1697 } else if (app_type) {
1698 app_type_idx =
1699 msm_pcm_routing_get_app_type_idx(app_type);
1700 sample_rate =
1701 fe_dai_app_type_cfg[val][session_type][reg]
1702 .sample_rate;
1703 bits_per_sample =
1704 app_type_cfg[app_type_idx].bit_width;
1705 } else
1706 sample_rate = msm_bedais[reg].sample_rate;
1707
1708 topology = msm_routing_get_adm_topology(val,
1709 session_type,
1710 reg);
1711 acdb_dev_id =
1712 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
1713 copp_idx = adm_open(msm_bedais[reg].port_id, path_type,
1714 sample_rate, channels, topology,
1715 fdai->perf_mode, bits_per_sample,
1716 app_type, acdb_dev_id);
1717 if ((copp_idx < 0) ||
1718 (copp_idx >= MAX_COPPS_PER_PORT)) {
1719 pr_err("%s: adm open failed\n", __func__);
1720 mutex_unlock(&routing_lock);
1721 return;
1722 }
1723 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1724 __func__, val, session_type, reg);
1725 set_bit(copp_idx,
1726 &session_copp_map[val][session_type][reg]);
1727
1728 if (msm_is_resample_needed(
1729 sample_rate,
1730 msm_bedais[reg].sample_rate))
1731 adm_copp_mfc_cfg(
1732 msm_bedais[reg].port_id, copp_idx,
1733 msm_bedais[reg].sample_rate);
1734
1735 if (session_type == SESSION_TYPE_RX &&
1736 fdai->event_info.event_func)
1737 fdai->event_info.event_func(
1738 MSM_PCM_RT_EVT_DEVSWITCH,
1739 fdai->event_info.priv_data);
1740
1741 msm_pcm_routing_build_matrix(val, session_type,
1742 path_type,
1743 fdai->perf_mode,
1744 passthr_mode);
1745 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1746 (passthr_mode == LEGACY_PCM))
1747 msm_pcm_routing_cfg_pp(msm_bedais[reg].port_id,
1748 copp_idx, topology,
1749 channels);
1750 }
1751 } else {
1752 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1753 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1754 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1755 voc_start_playback(set, msm_bedais[reg].port_id);
1756 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1757 fdai = &fe_dai_map[val][session_type];
1758 if (msm_bedais[reg].active && fdai->strm_id !=
1759 INVALID_SESSION) {
1760 int idx;
1761 int port_id;
1762 unsigned long copp =
1763 session_copp_map[val][session_type][reg];
1764 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1765 if (test_bit(idx, &copp))
1766 break;
1767
1768 port_id = msm_bedais[reg].port_id;
1769 topology = adm_get_topology_for_port_copp_idx(port_id,
1770 idx);
1771 adm_close(msm_bedais[reg].port_id, fdai->perf_mode,
1772 idx);
1773 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1774 __func__, copp, val, session_type, reg,
1775 topology);
1776 clear_bit(idx,
1777 &session_copp_map[val][session_type][reg]);
1778 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1779 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1780 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1781 (passthr_mode == LEGACY_PCM))
1782 msm_pcm_routing_deinit_pp(
1783 msm_bedais[reg].port_id,
1784 topology);
1785 msm_pcm_routing_build_matrix(val, session_type,
1786 path_type,
1787 fdai->perf_mode,
1788 passthr_mode);
1789 }
1790 }
1791 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1792 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1793 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1794
1795 mutex_unlock(&routing_lock);
1796}
1797
1798static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1799 struct snd_ctl_elem_value *ucontrol)
1800{
1801 struct soc_mixer_control *mc =
1802 (struct soc_mixer_control *)kcontrol->private_value;
1803
1804 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1805 ucontrol->value.integer.value[0] = 1;
1806 else
1807 ucontrol->value.integer.value[0] = 0;
1808
1809 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1810 ucontrol->value.integer.value[0]);
1811
1812 return 0;
1813}
1814
1815static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1816 struct snd_ctl_elem_value *ucontrol)
1817{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301818 struct snd_soc_dapm_widget *widget =
1819 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301820 struct soc_mixer_control *mc =
1821 (struct soc_mixer_control *)kcontrol->private_value;
1822 struct snd_soc_dapm_update *update = NULL;
1823
1824 if (ucontrol->value.integer.value[0] &&
1825 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1826 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1827 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1828 update);
1829 } else if (!ucontrol->value.integer.value[0] &&
1830 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1831 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1832 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1833 update);
1834 }
1835
1836 return 1;
1837}
1838
1839static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1840 struct snd_ctl_elem_value *ucontrol)
1841{
1842 struct soc_mixer_control *mc =
1843 (struct soc_mixer_control *)kcontrol->private_value;
1844
1845 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1846 ucontrol->value.integer.value[0] = 1;
1847 else
1848 ucontrol->value.integer.value[0] = 0;
1849
1850 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1851 ucontrol->value.integer.value[0]);
1852
1853 return 0;
1854}
1855
1856static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1857 struct snd_ctl_elem_value *ucontrol)
1858{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301859 struct snd_soc_dapm_widget *widget =
1860 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301861 struct soc_mixer_control *mc =
1862 (struct soc_mixer_control *)kcontrol->private_value;
1863 struct snd_soc_dapm_update *update = NULL;
1864
1865 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1866 ucontrol->value.integer.value[0]);
1867
1868 if (ucontrol->value.integer.value[0]) {
1869 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1870 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1871 snd_soc_dapm_mixer_update_power(widget->dapm,
1872 kcontrol, 1, update);
1873 } else if (!ucontrol->value.integer.value[0]) {
1874 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1875 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1876 snd_soc_dapm_mixer_update_power(widget->dapm,
1877 kcontrol, 0, update);
1878 }
1879
1880 return 1;
1881}
1882
1883static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1884{
1885 u32 session_id = 0;
1886 u16 path_type;
1887 struct media_format_info voc_be_media_format;
1888
1889 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1890
1891 session_id = msm_pcm_routing_get_voc_sessionid(val);
1892
1893 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1894 __func__, val, session_id);
1895
1896 mutex_lock(&routing_lock);
1897
1898 if (set)
1899 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1900 else
1901 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1902
1903 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1904 afe_get_port_type(msm_bedais[reg].port_id) ==
1905 MSM_AFE_PORT_TYPE_RX) {
1906 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1907 __func__, set, msm_bedais[reg].port_id);
1908 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1909 }
1910
1911 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1912 MSM_AFE_PORT_TYPE_RX)
1913 path_type = RX_PATH;
1914 else
1915 path_type = TX_PATH;
1916
1917 if (set) {
1918 if (msm_bedais[reg].active) {
1919 voc_set_route_flag(session_id, path_type, 1);
1920
1921 memset(&voc_be_media_format, 0,
1922 sizeof(struct media_format_info));
1923
1924 voc_be_media_format.port_id = msm_bedais[reg].port_id;
1925 voc_be_media_format.num_channels =
1926 msm_bedais[reg].channel;
1927 voc_be_media_format.sample_rate =
1928 msm_bedais[reg].sample_rate;
1929 voc_be_media_format.bits_per_sample =
1930 msm_bedais[reg].format;
1931 /* Defaulting this to 1 for voice call usecases */
1932 voc_be_media_format.channel_mapping[0] = 1;
1933
1934 voc_set_device_config(session_id, path_type,
1935 &voc_be_media_format);
1936
1937 if (voc_get_route_flag(session_id, TX_PATH) &&
1938 voc_get_route_flag(session_id, RX_PATH))
1939 voc_enable_device(session_id);
1940 } else {
1941 pr_debug("%s BE is not active\n", __func__);
1942 }
1943 } else {
1944 voc_set_route_flag(session_id, path_type, 0);
1945 voc_disable_device(session_id);
1946 }
1947
1948 mutex_unlock(&routing_lock);
1949
1950}
1951
1952static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
1953 struct snd_ctl_elem_value *ucontrol)
1954{
1955 struct soc_mixer_control *mc =
1956 (struct soc_mixer_control *)kcontrol->private_value;
1957
1958 mutex_lock(&routing_lock);
1959
1960 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1961 ucontrol->value.integer.value[0] = 1;
1962 else
1963 ucontrol->value.integer.value[0] = 0;
1964
1965 mutex_unlock(&routing_lock);
1966
1967 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1968 ucontrol->value.integer.value[0]);
1969
1970 return 0;
1971}
1972
1973static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
1974 struct snd_ctl_elem_value *ucontrol)
1975{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301976 struct snd_soc_dapm_widget *widget =
1977 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301978 struct soc_mixer_control *mc =
1979 (struct soc_mixer_control *)kcontrol->private_value;
1980 struct snd_soc_dapm_update *update = NULL;
1981
1982 if (ucontrol->value.integer.value[0]) {
1983 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
1984 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1985 update);
1986 } else {
1987 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
1988 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1989 update);
1990 }
1991
1992 return 1;
1993}
1994
1995static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1996 struct snd_ctl_elem_value *ucontrol)
1997{
1998 struct soc_mixer_control *mc =
1999 (struct soc_mixer_control *)kcontrol->private_value;
2000
2001 mutex_lock(&routing_lock);
2002
2003 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
2004 ucontrol->value.integer.value[0] = 1;
2005 else
2006 ucontrol->value.integer.value[0] = 0;
2007
2008 mutex_unlock(&routing_lock);
2009
2010 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2011 ucontrol->value.integer.value[0]);
2012
2013 return 0;
2014}
2015
2016static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
2017 struct snd_ctl_elem_value *ucontrol)
2018{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302019 struct snd_soc_dapm_widget *widget =
2020 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302021 struct soc_mixer_control *mc =
2022 (struct soc_mixer_control *)kcontrol->private_value;
2023 struct snd_soc_dapm_update *update = NULL;
2024
2025 if (ucontrol->value.integer.value[0]) {
2026 mutex_lock(&routing_lock);
2027 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2028 mutex_unlock(&routing_lock);
2029
2030 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2031 update);
2032 } else {
2033 mutex_lock(&routing_lock);
2034 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2035 mutex_unlock(&routing_lock);
2036
2037 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2038 update);
2039 }
2040
2041 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2042 ucontrol->value.integer.value[0]);
2043
2044 return 1;
2045}
2046
2047/*
2048 * Return the mapping between port ID and backend ID to enable the AFE callback
2049 * to determine the acdb_dev_id from the port id
2050 */
2051int msm_pcm_get_be_id_from_port_id(int port_id)
2052{
2053 int i;
2054 int be_id = -EINVAL;
2055
2056 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2057 if (msm_bedais[i].port_id == port_id) {
2058 be_id = i;
2059 break;
2060 }
2061 }
2062
2063 return be_id;
2064}
2065
2066/*
2067 * Return the registered dev_acdb_id given a port ID to enable identifying the
2068 * correct AFE calibration information by comparing the header information.
2069 */
2070static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2071{
2072 int acdb_id = -EINVAL;
2073 int i = 0;
2074 int session;
2075 int port_type = afe_get_port_type(port_id);
2076 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2077
2078 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2079 __func__, port_id, be_id, port_type);
2080
2081 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2082 session = SESSION_TYPE_TX;
2083 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2084 session = SESSION_TYPE_RX;
2085 } else {
2086 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2087 acdb_id = -EINVAL;
2088 goto exit;
2089 }
2090
2091 if (be_id < 0) {
2092 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2093 goto exit;
2094 }
2095
2096 mutex_lock(&routing_lock);
2097 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2098 MSM_FRONTEND_DAI_MAX);
2099 if (i < MSM_FRONTEND_DAI_MAX)
2100 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2101
2102 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2103 __func__, i, session, be_id, acdb_id);
2104 mutex_unlock(&routing_lock);
2105exit:
2106 return acdb_id;
2107}
2108
2109static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2110 struct snd_ctl_elem_value *ucontrol)
2111{
2112 ucontrol->value.integer.value[0] = fm_switch_enable;
2113 pr_debug("%s: FM Switch enable %ld\n", __func__,
2114 ucontrol->value.integer.value[0]);
2115 return 0;
2116}
2117
2118static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2119 struct snd_ctl_elem_value *ucontrol)
2120{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302121 struct snd_soc_dapm_widget *widget =
2122 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302123 struct snd_soc_dapm_update *update = NULL;
2124
2125 pr_debug("%s: FM Switch enable %ld\n", __func__,
2126 ucontrol->value.integer.value[0]);
2127 if (ucontrol->value.integer.value[0])
2128 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2129 update);
2130 else
2131 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2132 update);
2133 fm_switch_enable = ucontrol->value.integer.value[0];
2134 return 1;
2135}
2136
2137static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2138 struct snd_ctl_elem_value *ucontrol)
2139{
2140 ucontrol->value.integer.value[0] = hfp_switch_enable;
2141 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2142 ucontrol->value.integer.value[0]);
2143 return 0;
2144}
2145
2146static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2147 struct snd_ctl_elem_value *ucontrol)
2148{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302149 struct snd_soc_dapm_widget *widget =
2150 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302151 struct snd_soc_dapm_update *update = NULL;
2152
2153 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2154 ucontrol->value.integer.value[0]);
2155 if (ucontrol->value.integer.value[0])
2156 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2157 1, update);
2158 else
2159 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2160 0, update);
2161 hfp_switch_enable = ucontrol->value.integer.value[0];
2162 return 1;
2163}
2164
Aniket Kumar Lataf8664712018-02-22 14:46:09 -08002165static int msm_routing_a2dp_switch_mixer_get(struct snd_kcontrol *kcontrol,
2166 struct snd_ctl_elem_value *ucontrol)
2167{
2168 ucontrol->value.integer.value[0] = a2dp_switch_enable;
2169 pr_debug("%s: A2DP Switch enable %ld\n", __func__,
2170 ucontrol->value.integer.value[0]);
2171 return 0;
2172}
2173
2174static int msm_routing_a2dp_switch_mixer_put(struct snd_kcontrol *kcontrol,
2175 struct snd_ctl_elem_value *ucontrol)
2176{
2177 struct snd_soc_dapm_widget *widget =
2178 snd_soc_dapm_kcontrol_widget(kcontrol);
2179 struct snd_soc_dapm_update *update = NULL;
2180
2181 pr_debug("%s: A2DP Switch enable %ld\n", __func__,
2182 ucontrol->value.integer.value[0]);
2183 a2dp_switch_enable = ucontrol->value.integer.value[0];
2184 if (a2dp_switch_enable)
2185 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2186 1, update);
2187 else
2188 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2189 0, update);
2190 return 1;
2191}
2192
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302193static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2194 struct snd_ctl_elem_value *ucontrol)
2195{
2196 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2197 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2198 ucontrol->value.integer.value[0]);
2199 return 0;
2200}
2201
2202static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2203 struct snd_ctl_elem_value *ucontrol)
2204{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302205 struct snd_soc_dapm_widget *widget =
2206 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302207 struct snd_soc_dapm_update *update = NULL;
2208
2209 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2210 ucontrol->value.integer.value[0]);
2211 if (ucontrol->value.integer.value[0])
2212 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2213 update);
2214 else
2215 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2216 update);
2217 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2218 return 1;
2219}
2220
2221static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2222 struct snd_ctl_elem_value *ucontrol)
2223{
2224 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2225 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2226 ucontrol->value.integer.value[0]);
2227 return 0;
2228}
2229
2230static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2231 struct snd_ctl_elem_value *ucontrol)
2232{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302233 struct snd_soc_dapm_widget *widget =
2234 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302235 struct snd_soc_dapm_update *update = NULL;
2236
2237 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2238 ucontrol->value.integer.value[0]);
2239 if (ucontrol->value.integer.value[0])
2240 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2241 update);
2242 else
2243 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2244 update);
2245 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2246 return 1;
2247}
2248
2249static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2250 struct snd_ctl_elem_value *ucontrol)
2251{
2252 ucontrol->value.integer.value[0] = usb_switch_enable;
2253 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2254 ucontrol->value.integer.value[0]);
2255 return 0;
2256}
2257
2258static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2259 struct snd_ctl_elem_value *ucontrol)
2260{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302261 struct snd_soc_dapm_widget *widget =
2262 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302263 struct snd_soc_dapm_update *update = NULL;
2264
2265 pr_debug("%s: USB Switch enable %ld\n", __func__,
2266 ucontrol->value.integer.value[0]);
2267 if (ucontrol->value.integer.value[0])
2268 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2269 1, update);
2270 else
2271 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2272 0, update);
2273 usb_switch_enable = ucontrol->value.integer.value[0];
2274 return 1;
2275}
2276
2277static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2278 struct snd_ctl_elem_value *ucontrol)
2279{
2280 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2281 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2282 ucontrol->value.integer.value[0]);
2283 return 0;
2284}
2285
2286static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2287 struct snd_ctl_elem_value *ucontrol)
2288{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302289 struct snd_soc_dapm_widget *widget =
2290 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302291 struct snd_soc_dapm_update *update = NULL;
2292
2293 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2294 ucontrol->value.integer.value[0]);
2295 if (ucontrol->value.integer.value[0])
2296 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2297 update);
2298 else
2299 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2300 update);
2301 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2302 return 1;
2303}
2304
2305static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2306 struct snd_ctl_elem_value *ucontrol)
2307{
2308 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2309 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2310 ucontrol->value.integer.value[0]);
2311 return 0;
2312}
2313
2314static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2315 struct snd_ctl_elem_value *ucontrol)
2316{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302317 struct snd_soc_dapm_widget *widget =
2318 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302319 struct snd_soc_dapm_update *update = NULL;
2320
2321 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2322 ucontrol->value.integer.value[0]);
2323 if (ucontrol->value.integer.value[0])
2324 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2325 update);
2326 else
2327 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2328 update);
2329 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2330 return 1;
2331}
2332
2333static int msm_routing_get_tert_mi2s_switch_mixer(
2334 struct snd_kcontrol *kcontrol,
2335 struct snd_ctl_elem_value *ucontrol)
2336{
2337 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2338 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2339 ucontrol->value.integer.value[0]);
2340 return 0;
2341}
2342
2343static int msm_routing_put_tert_mi2s_switch_mixer(
2344 struct snd_kcontrol *kcontrol,
2345 struct snd_ctl_elem_value *ucontrol)
2346{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302347 struct snd_soc_dapm_widget *widget =
2348 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302349 struct snd_soc_dapm_update *update = NULL;
2350
2351 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2352 ucontrol->value.integer.value[0]);
2353 if (ucontrol->value.integer.value[0])
2354 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2355 update);
2356 else
2357 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2358 update);
2359 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2360 return 1;
2361}
2362
2363static int msm_routing_get_quat_mi2s_switch_mixer(
2364 struct snd_kcontrol *kcontrol,
2365 struct snd_ctl_elem_value *ucontrol)
2366{
2367 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2368 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2369 ucontrol->value.integer.value[0]);
2370 return 0;
2371}
2372
2373static int msm_routing_put_quat_mi2s_switch_mixer(
2374 struct snd_kcontrol *kcontrol,
2375 struct snd_ctl_elem_value *ucontrol)
2376{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302377 struct snd_soc_dapm_widget *widget =
2378 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302379 struct snd_soc_dapm_update *update = NULL;
2380
2381 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2382 ucontrol->value.integer.value[0]);
2383 if (ucontrol->value.integer.value[0])
2384 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2385 update);
2386 else
2387 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2388 update);
2389 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2390 return 1;
2391}
2392
Rohit Kumara5077932017-09-10 22:05:05 +05302393static int msm_routing_get_quin_mi2s_switch_mixer(
2394 struct snd_kcontrol *kcontrol,
2395 struct snd_ctl_elem_value *ucontrol)
2396{
2397 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2398 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2399 ucontrol->value.integer.value[0]);
2400 return 0;
2401}
2402
2403static int msm_routing_put_quin_mi2s_switch_mixer(
2404 struct snd_kcontrol *kcontrol,
2405 struct snd_ctl_elem_value *ucontrol)
2406{
2407 struct snd_soc_dapm_widget *widget =
2408 snd_soc_dapm_kcontrol_widget(kcontrol);
2409 struct snd_soc_dapm_update *update = NULL;
2410
2411 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2412 ucontrol->value.integer.value[0]);
2413 if (ucontrol->value.integer.value[0])
2414 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2415 update);
2416 else
2417 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2418 update);
2419 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2420 return 1;
2421}
2422
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302423static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2424 struct snd_ctl_elem_value *ucontrol)
2425{
2426 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2427 pr_debug("%s: FM Switch enable %ld\n", __func__,
2428 ucontrol->value.integer.value[0]);
2429 return 0;
2430}
2431
2432static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2433 struct snd_ctl_elem_value *ucontrol)
2434{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302435 struct snd_soc_dapm_widget *widget =
2436 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302437 struct snd_soc_dapm_update *update = NULL;
2438
2439 pr_debug("%s: FM Switch enable %ld\n", __func__,
2440 ucontrol->value.integer.value[0]);
2441 if (ucontrol->value.integer.value[0])
2442 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2443 update);
2444 else
2445 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2446 update);
2447 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2448 return 1;
2449}
2450
2451static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2452 struct snd_ctl_elem_value *ucontrol)
2453{
2454 ucontrol->value.integer.value[0] = lsm_port_index;
2455 return 0;
2456}
2457
2458static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2459 struct snd_ctl_elem_value *ucontrol)
2460{
2461 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2462 int mux = ucontrol->value.enumerated.item[0];
2463 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2464
2465 if (mux >= e->items) {
2466 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2467 return -EINVAL;
2468 }
2469
2470 pr_debug("%s: LSM enable %ld\n", __func__,
2471 ucontrol->value.integer.value[0]);
2472 switch (ucontrol->value.integer.value[0]) {
2473 case 1:
2474 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2475 break;
2476 case 2:
2477 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2478 break;
2479 case 3:
2480 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2481 break;
2482 case 4:
2483 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2484 break;
2485 case 5:
2486 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2487 break;
2488 case 6:
2489 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2490 break;
2491 case 7:
2492 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2493 break;
2494 case 8:
2495 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2496 break;
2497 case 9:
2498 lsm_port = ADM_LSM_PORT_ID;
2499 break;
2500 case 10:
Revathi Uddarajue990e322018-07-04 15:30:19 +05302501 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
Ashish Jain01b10322018-05-12 15:37:44 +05302502 break;
2503 case 11:
Revathi Uddarajue990e322018-07-04 15:30:19 +05302504 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_2;
Ashish Jain01b10322018-05-12 15:37:44 +05302505 break;
2506 case 12:
Revathi Uddarajue990e322018-07-04 15:30:19 +05302507 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_3;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302508 break;
2509 default:
2510 pr_err("Default lsm port");
2511 break;
2512 }
2513 set_lsm_port(lsm_port);
2514 lsm_port_index = ucontrol->value.integer.value[0];
2515
2516 return 0;
2517}
2518
2519static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2520 struct snd_ctl_elem_value *ucontrol)
2521{
2522 int i;
2523 u16 port_id;
2524 enum afe_mad_type mad_type;
2525
2526 pr_debug("%s: enter\n", __func__);
2527 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2528 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2529 strlen(lsm_port_text[i])))
2530 break;
2531
2532 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2533 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2534 return -EINVAL;
2535 }
2536
2537 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2538
2539 /*Check for Tertiary/Quaternary/INT3 TX port*/
2540 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2541 strlen(lsm_port_text[7])))
2542 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2543
2544 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2545 strlen(lsm_port_text[8])))
2546 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2547
2548 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2549 strlen(lsm_port_text[10])))
2550 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2551
2552 mad_type = afe_port_get_mad_type(port_id);
2553 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2554 mad_type);
2555 switch (mad_type) {
2556 case MAD_HW_NONE:
2557 ucontrol->value.integer.value[0] = MADNONE;
2558 break;
2559 case MAD_HW_AUDIO:
2560 ucontrol->value.integer.value[0] = MADAUDIO;
2561 break;
2562 case MAD_HW_BEACON:
2563 ucontrol->value.integer.value[0] = MADBEACON;
2564 break;
2565 case MAD_HW_ULTRASOUND:
2566 ucontrol->value.integer.value[0] = MADULTRASOUND;
2567 break;
2568 case MAD_SW_AUDIO:
2569 ucontrol->value.integer.value[0] = MADSWAUDIO;
2570 break;
2571 default:
2572 WARN(1, "Unknown\n");
2573 return -EINVAL;
2574 }
2575 return 0;
2576}
2577
2578static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2579 struct snd_ctl_elem_value *ucontrol)
2580{
2581 int i;
2582 u16 port_id;
2583 enum afe_mad_type mad_type;
2584
2585 pr_debug("%s: enter\n", __func__);
2586 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2587 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2588 strlen(lsm_port_text[i])))
2589 break;
2590
2591 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2592 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2593 return -EINVAL;
2594 }
2595
2596 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2597 switch (ucontrol->value.integer.value[0]) {
2598 case MADNONE:
2599 mad_type = MAD_HW_NONE;
2600 break;
2601 case MADAUDIO:
2602 mad_type = MAD_HW_AUDIO;
2603 break;
2604 case MADBEACON:
2605 mad_type = MAD_HW_BEACON;
2606 break;
2607 case MADULTRASOUND:
2608 mad_type = MAD_HW_ULTRASOUND;
2609 break;
2610 case MADSWAUDIO:
2611 mad_type = MAD_SW_AUDIO;
2612 break;
2613 default:
2614 WARN(1, "Unknown\n");
2615 return -EINVAL;
2616 }
2617
2618 /*Check for Tertiary/Quaternary/INT3 TX port*/
2619 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2620 strlen(lsm_port_text[7])))
2621 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2622
2623 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2624 strlen(lsm_port_text[8])))
2625 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2626
2627 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2628 strlen(lsm_port_text[10])))
2629 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2630
2631 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2632 mad_type);
2633 return afe_port_set_mad_type(port_id, mad_type);
2634}
2635
2636static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2637
2638static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2639 adm_override_chs_text);
2640
2641static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2642{
2643 int backend_id;
2644
2645 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2646 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2647 } else {
2648 pr_err("%s: unsupported backend id: %s",
2649 __func__, kcontrol->id.name);
2650 return -EINVAL;
2651 }
2652
2653 return backend_id;
2654}
2655static int msm_routing_adm_channel_config_get(
2656 struct snd_kcontrol *kcontrol,
2657 struct snd_ctl_elem_value *ucontrol)
2658{
2659 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2660
2661 if (backend_id >= 0) {
2662 mutex_lock(&routing_lock);
2663 ucontrol->value.integer.value[0] =
2664 msm_bedais[backend_id].adm_override_ch;
2665 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2666 ucontrol->value.integer.value[0], backend_id);
2667 mutex_unlock(&routing_lock);
2668 }
2669
2670 return 0;
2671}
2672
2673static int msm_routing_adm_channel_config_put(
2674 struct snd_kcontrol *kcontrol,
2675 struct snd_ctl_elem_value *ucontrol)
2676{
2677 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2678
2679 if (backend_id >= 0) {
2680 mutex_lock(&routing_lock);
2681 msm_bedais[backend_id].adm_override_ch =
2682 ucontrol->value.integer.value[0];
2683 pr_debug("%s:updating BE :%d adm channels: %d\n",
2684 __func__, backend_id,
2685 msm_bedais[backend_id].adm_override_ch);
2686 mutex_unlock(&routing_lock);
2687 }
2688
2689 return 0;
2690}
2691
2692static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2693 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2694 msm_routing_adm_channel_config_get,
2695 msm_routing_adm_channel_config_put),
2696};
2697
2698static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2699 struct snd_ctl_elem_value *ucontrol)
2700{
2701
2702 mutex_lock(&routing_lock);
2703 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2704 mutex_unlock(&routing_lock);
2705 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2706 ucontrol->value.integer.value[0]);
2707 return 0;
2708};
2709
2710static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2711 struct snd_ctl_elem_value *ucontrol)
2712{
2713 struct aanc_data aanc_info;
2714
2715 mutex_lock(&routing_lock);
2716 memset(&aanc_info, 0x00, sizeof(aanc_info));
2717 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2718 ucontrol->value.integer.value[0]);
2719 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2720 if (ucontrol->value.integer.value[0] == 0) {
2721 aanc_info.aanc_active = false;
2722 aanc_info.aanc_tx_port = 0;
2723 aanc_info.aanc_rx_port = 0;
2724 } else {
2725 aanc_info.aanc_active = true;
2726 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2727 aanc_info.aanc_tx_port =
2728 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2729 }
2730 afe_set_aanc_info(&aanc_info);
2731 mutex_unlock(&routing_lock);
2732 return 0;
2733};
2734static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2735 struct snd_ctl_elem_value *ucontrol)
2736{
2737 int idx = 0, shift = 0;
2738 struct soc_mixer_control *mc =
2739 (struct soc_mixer_control *)kcontrol->private_value;
2740
2741 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2742 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2743
2744 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2745 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2746 return -EINVAL;
2747 }
2748
2749 if (test_bit(shift,
2750 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2751 ucontrol->value.integer.value[0] = 1;
2752 else
2753 ucontrol->value.integer.value[0] = 0;
2754
2755 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2756 ucontrol->value.integer.value[0]);
2757
2758 return 0;
2759}
2760
2761static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2762 struct snd_ctl_elem_value *ucontrol)
2763{
2764 int idx = 0, shift = 0;
2765 struct soc_mixer_control *mc =
2766 (struct soc_mixer_control *)kcontrol->private_value;
2767
2768 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2769 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2770
2771 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2772 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2773 return -EINVAL;
2774 }
2775
2776 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2777 __func__, mc->reg, mc->shift,
2778 ucontrol->value.integer.value[0], idx, shift);
2779
2780 if (ucontrol->value.integer.value[0]) {
2781 afe_loopback(1, msm_bedais[mc->reg].port_id,
2782 msm_bedais[mc->shift].port_id);
2783 set_bit(shift,
2784 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2785 } else {
2786 afe_loopback(0, msm_bedais[mc->reg].port_id,
2787 msm_bedais[mc->shift].port_id);
2788 clear_bit(shift,
2789 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2790 }
2791
2792 return 1;
2793}
2794
2795static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2796 struct snd_ctl_elem_value *ucontrol)
2797{
2798 u16 fe_id = 0;
2799
2800 fe_id = ((struct soc_mixer_control *)
2801 kcontrol->private_value)->shift;
2802 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2803 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2804 return -EINVAL;
2805 }
2806
2807 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2808
2809 return 0;
2810}
2811
2812static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2813 struct snd_ctl_elem_value *ucontrol)
2814{
2815 u16 fe_id = 0;
2816
2817 fe_id = ((struct soc_mixer_control *)
2818 kcontrol->private_value)->shift;
2819 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2820 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2821 return -EINVAL;
2822 }
2823
2824 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2825
2826 return 1;
2827}
2828
2829static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2830 struct snd_ctl_elem_value *ucontrol)
2831{
2832 u16 fe_id = 0;
2833
2834 fe_id = ((struct soc_multi_mixer_control *)
2835 kcontrol->private_value)->shift;
2836 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2837 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2838 return -EINVAL;
2839 }
2840
2841 ucontrol->value.integer.value[0] =
2842 channel_mixer[fe_id].output_channel;
2843 return 0;
2844}
2845
2846static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2847 struct snd_ctl_elem_value *ucontrol)
2848{
2849 u16 fe_id = 0;
2850
2851 fe_id = ((struct soc_multi_mixer_control *)
2852 kcontrol->private_value)->shift;
2853 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2854 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2855 return -EINVAL;
2856 }
2857
2858 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2859 fe_id,
2860 (unsigned int)(ucontrol->value.integer.value[0]));
2861 channel_mixer[fe_id].output_channel =
2862 (unsigned int)(ucontrol->value.integer.value[0]);
2863
2864 return 1;
2865}
2866
2867static const char *const ch_mixer[] = {"Disable", "Enable"};
2868
2869/* If new backend is added, need update this array */
2870static const char *const be_name[] = {
2871"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2872"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2873"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2874"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2875"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2876"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2877"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2878"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2879"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2880"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2881"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2882"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2883"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2884"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2885"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2886"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2887"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2888"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2889"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2890"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2891"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2892"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2893"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2894"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2895"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2896"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2897"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2898"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2899"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2900"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302901"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2902"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2903"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2904"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302905"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2906"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302907"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302908"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2909"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2910"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2911"INT6_MI2S_RX", "INT6_MI2S_TX"
2912};
2913
2914static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2915 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2916static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2917 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2918static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2919 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2920static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2921 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2922
2923static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
2924 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
2925static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
2926 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
2927static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
2928 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
2929static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
2930 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
2931static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
2932 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
2933static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
2934 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
2935static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
2936 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
2937static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
2938 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
2939
2940static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
2941 unsigned int channels,
2942 unsigned int items, const char *const names[])
2943{
2944 if (uinfo->value.enumerated.item >= items)
2945 uinfo->value.enumerated.item = items - 1;
2946
2947 WARN(strlen(names[uinfo->value.enumerated.item]) >=
2948 sizeof(uinfo->value.enumerated.name),
2949 "ALSA: too long item name '%s'\n",
2950 names[uinfo->value.enumerated.item]);
2951 strlcpy(uinfo->value.enumerated.name,
2952 names[uinfo->value.enumerated.item],
2953 sizeof(uinfo->value.enumerated.name));
2954 return 0;
2955}
2956
2957static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
2958 struct snd_ctl_elem_info *uinfo)
2959{
2960 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2961
2962 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2963 uinfo->count = 1;
2964
2965 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
2966 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2967
2968 return 0;
2969}
2970static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
2971 struct snd_ctl_elem_value *ucontrol)
2972{
2973 u16 fe_id = 0;
2974
2975 fe_id = ((struct soc_enum *)
2976 kcontrol->private_value)->shift_l;
2977 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2978 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2979 return -EINVAL;
2980 }
2981
2982 pr_debug("%s: FE %d %s\n", __func__,
2983 fe_id,
2984 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
2985 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
2986 return 0;
2987}
2988
2989static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
2990 struct snd_ctl_elem_value *ucontrol)
2991{
2992 u16 fe_id = 0;
2993
2994 fe_id = ((struct soc_enum *)
2995 kcontrol->private_value)->shift_l;
2996 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2997 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2998 return -EINVAL;
2999 }
3000
3001 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
3002 pr_debug("%s: %s FE %d\n", __func__,
3003 channel_mixer[fe_id].enable ? "Enable" : "Disable",
3004 fe_id);
3005 return 0;
3006}
3007
3008static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
3009 struct snd_ctl_elem_info *uinfo)
3010{
3011 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3012
3013 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
3014 uinfo->count = 1;
3015
3016 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
3017 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
3018
3019 return 0;
3020}
3021
3022static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
3023 struct snd_ctl_elem_value *ucontrol)
3024{
3025 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3026 u16 fe_id = 0, in_ch = 0;
3027
3028 fe_id = e->shift_l;
3029 in_ch = e->shift_r;
3030 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3031 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3032 return -EINVAL;
3033 }
3034 if (in_ch >= ADM_MAX_CHANNELS) {
3035 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3036 return -EINVAL;
3037 }
3038
3039 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
3040 return 1;
3041}
3042
3043static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
3044 struct snd_ctl_elem_value *ucontrol)
3045{
3046 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3047 u16 fe_id = 0, in_ch = 0;
3048
3049 fe_id = e->shift_l;
3050 in_ch = e->shift_r;
3051 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3052 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3053 return -EINVAL;
3054 }
3055 if (in_ch >= ADM_MAX_CHANNELS) {
3056 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3057 return -EINVAL;
3058 }
3059
3060 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
3061 return 1;
3062}
3063
3064
3065static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
3066 struct snd_ctl_elem_info *uinfo)
3067{
3068 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3069 uinfo->count = ADM_MAX_CHANNELS;
3070 uinfo->value.integer.min = 0;
3071 uinfo->value.integer.max = WEIGHT_0_DB;
3072
3073 return 0;
3074}
3075
3076static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3077 struct snd_ctl_elem_value *ucontrol)
3078{
3079 u16 fe_id = 0, out_ch = 0;
3080 int i, weight;
3081
3082 fe_id = ((struct soc_multi_mixer_control *)
3083 kcontrol->private_value)->shift;
3084 out_ch = ((struct soc_multi_mixer_control *)
3085 kcontrol->private_value)->rshift;
3086 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3087 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3088 return -EINVAL;
3089 }
3090 if (out_ch >= ADM_MAX_CHANNELS) {
3091 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3092 return -EINVAL;
3093 }
3094
3095 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3096 __func__, fe_id,
3097 ucontrol->value.integer.value[0],
3098 ucontrol->value.integer.value[1],
3099 ucontrol->value.integer.value[2],
3100 ucontrol->value.integer.value[3],
3101 ucontrol->value.integer.value[4],
3102 ucontrol->value.integer.value[5],
3103 ucontrol->value.integer.value[6],
3104 ucontrol->value.integer.value[7]);
3105
3106 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3107 weight = ucontrol->value.integer.value[i];
3108 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3109 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3110 __func__, fe_id, out_ch, i,
3111 channel_mixer[fe_id].channel_weight[out_ch][i]);
3112 }
3113
3114 return 0;
3115}
3116
3117static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3118 struct snd_ctl_elem_value *ucontrol)
3119{
3120 u16 fe_id = 0, out_ch = 0;
3121 int i;
3122
3123 fe_id = ((struct soc_multi_mixer_control *)
3124 kcontrol->private_value)->shift;
3125 out_ch = ((struct soc_multi_mixer_control *)
3126 kcontrol->private_value)->rshift;
3127 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3128 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3129 return -EINVAL;
3130 }
3131 if (out_ch >= ADM_MAX_CHANNELS) {
3132 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3133 return -EINVAL;
3134 }
3135
3136 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3137 ucontrol->value.integer.value[i] =
3138 channel_mixer[fe_id].channel_weight[out_ch][i];
3139
3140 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3141 __func__, fe_id,
3142 ucontrol->value.integer.value[0],
3143 ucontrol->value.integer.value[1],
3144 ucontrol->value.integer.value[2],
3145 ucontrol->value.integer.value[3],
3146 ucontrol->value.integer.value[4],
3147 ucontrol->value.integer.value[5],
3148 ucontrol->value.integer.value[6],
3149 ucontrol->value.integer.value[7]);
3150
3151 return 0;
3152}
3153
3154static const struct snd_kcontrol_new channel_mixer_controls[] = {
3155 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3156 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3157 msm_pcm_get_channel_rule_index,
3158 msm_pcm_put_channel_rule_index),
3159 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3160 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3161 msm_pcm_get_channel_rule_index,
3162 msm_pcm_put_channel_rule_index),
3163 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3164 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3165 msm_pcm_get_channel_rule_index,
3166 msm_pcm_put_channel_rule_index),
3167 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3168 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3169 msm_pcm_get_channel_rule_index,
3170 msm_pcm_put_channel_rule_index),
3171 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3172 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3173 msm_pcm_get_channel_rule_index,
3174 msm_pcm_put_channel_rule_index),
3175 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3176 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3177 msm_pcm_get_channel_rule_index,
3178 msm_pcm_put_channel_rule_index),
3179
3180 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3181 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3182 msm_pcm_get_out_chs,
3183 msm_pcm_put_out_chs),
3184 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3185 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3186 msm_pcm_get_out_chs,
3187 msm_pcm_put_out_chs),
3188 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3189 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3190 msm_pcm_get_out_chs,
3191 msm_pcm_put_out_chs),
3192 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3193 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3194 msm_pcm_get_out_chs,
3195 msm_pcm_put_out_chs),
3196 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3197 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3198 msm_pcm_get_out_chs,
3199 msm_pcm_put_out_chs),
3200 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3201 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3202 msm_pcm_get_out_chs,
3203 msm_pcm_put_out_chs),
3204 {
3205 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3206 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3207 .name = "MultiMedia1 Channel Mixer",
3208 .info = msm_pcm_channel_mixer_info,
3209 .get = msm_pcm_channel_mixer_get,
3210 .put = msm_pcm_channel_mixer_put,
3211 .private_value = (unsigned long)&(mm1_channel_mux)
3212 },
3213 {
3214 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3215 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3216 .name = "MultiMedia2 Channel Mixer",
3217 .info = msm_pcm_channel_mixer_info,
3218 .get = msm_pcm_channel_mixer_get,
3219 .put = msm_pcm_channel_mixer_put,
3220 .private_value = (unsigned long)&(mm2_channel_mux)
3221 },
3222 {
3223 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3224 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3225 .name = "MultiMedia3 Channel Mixer",
3226 .info = msm_pcm_channel_mixer_info,
3227 .get = msm_pcm_channel_mixer_get,
3228 .put = msm_pcm_channel_mixer_put,
3229 .private_value = (unsigned long)&(mm3_channel_mux)
3230 },
3231 {
3232 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3233 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3234 .name = "MultiMedia4 Channel Mixer",
3235 .info = msm_pcm_channel_mixer_info,
3236 .get = msm_pcm_channel_mixer_get,
3237 .put = msm_pcm_channel_mixer_put,
3238 .private_value = (unsigned long)&(mm4_channel_mux)
3239 },
3240 {
3241 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3242 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3243 .name = "MultiMedia1 Output Channel1",
3244 .info = msm_pcm_channel_weight_info,
3245 .get = msm_pcm_channel_weight_get,
3246 .put = msm_pcm_channel_weight_put,
3247 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3248 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 0,}
3249 },
3250 {
3251 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3252 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3253 .name = "MultiMedia1 Output Channel2",
3254 .info = msm_pcm_channel_weight_info,
3255 .get = msm_pcm_channel_weight_get,
3256 .put = msm_pcm_channel_weight_put,
3257 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3258 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3259 },
3260 {
3261 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3262 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3263 .name = "MultiMedia1 Output Channel3",
3264 .info = msm_pcm_channel_weight_info,
3265 .get = msm_pcm_channel_weight_get,
3266 .put = msm_pcm_channel_weight_put,
3267 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3268 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3269 },
3270 {
3271 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3272 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3273 .name = "MultiMedia1 Output Channel4",
3274 .info = msm_pcm_channel_weight_info,
3275 .get = msm_pcm_channel_weight_get,
3276 .put = msm_pcm_channel_weight_put,
3277 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3278 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3279 },
3280 {
3281 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3282 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3283 .name = "MultiMedia1 Output Channel5",
3284 .info = msm_pcm_channel_weight_info,
3285 .get = msm_pcm_channel_weight_get,
3286 .put = msm_pcm_channel_weight_put,
3287 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3288 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3289 },
3290 {
3291 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3292 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3293 .name = "MultiMedia1 Output Channel6",
3294 .info = msm_pcm_channel_weight_info,
3295 .get = msm_pcm_channel_weight_get,
3296 .put = msm_pcm_channel_weight_put,
3297 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3298 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3299 },
3300 {
3301 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3302 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3303 .name = "MultiMedia1 Output Channel7",
3304 .info = msm_pcm_channel_weight_info,
3305 .get = msm_pcm_channel_weight_get,
3306 .put = msm_pcm_channel_weight_put,
3307 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3308 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3309 },
3310 {
3311 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3312 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3313 .name = "MultiMedia1 Output Channel8",
3314 .info = msm_pcm_channel_weight_info,
3315 .get = msm_pcm_channel_weight_get,
3316 .put = msm_pcm_channel_weight_put,
3317 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3318 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3319 },
3320 {
3321 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3322 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3323 .name = "MultiMedia2 Output Channel1",
3324 .info = msm_pcm_channel_weight_info,
3325 .get = msm_pcm_channel_weight_get,
3326 .put = msm_pcm_channel_weight_put,
3327 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3328 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3329 },
3330 {
3331 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3332 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3333 .name = "MultiMedia2 Output Channel2",
3334 .info = msm_pcm_channel_weight_info,
3335 .get = msm_pcm_channel_weight_get,
3336 .put = msm_pcm_channel_weight_put,
3337 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3338 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3339 },
3340 {
3341 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3342 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3343 .name = "MultiMedia2 Output Channel3",
3344 .info = msm_pcm_channel_weight_info,
3345 .get = msm_pcm_channel_weight_get,
3346 .put = msm_pcm_channel_weight_put,
3347 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3348 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3349 },
3350 {
3351 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3352 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3353 .name = "MultiMedia3 Output Channel1",
3354 .info = msm_pcm_channel_weight_info,
3355 .get = msm_pcm_channel_weight_get,
3356 .put = msm_pcm_channel_weight_put,
3357 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3358 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3359 },
3360 {
3361 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3362 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3363 .name = "MultiMedia3 Output Channel2",
3364 .info = msm_pcm_channel_weight_info,
3365 .get = msm_pcm_channel_weight_get,
3366 .put = msm_pcm_channel_weight_put,
3367 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3368 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3369 },
3370 {
3371 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3372 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3373 .name = "MultiMedia1 Channel1",
3374 .info = msm_pcm_channel_input_be_info,
3375 .get = msm_pcm_channel_input_be_get,
3376 .put = msm_pcm_channel_input_be_put,
3377 .private_value = (unsigned long)&(mm1_ch1_enum)
3378 },
3379 {
3380 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3381 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3382 .name = "MultiMedia1 Channel2",
3383 .info = msm_pcm_channel_input_be_info,
3384 .get = msm_pcm_channel_input_be_get,
3385 .put = msm_pcm_channel_input_be_put,
3386 .private_value = (unsigned long)&(mm1_ch2_enum)
3387 },
3388 {
3389 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3390 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3391 .name = "MultiMedia1 Channel3",
3392 .info = msm_pcm_channel_input_be_info,
3393 .get = msm_pcm_channel_input_be_get,
3394 .put = msm_pcm_channel_input_be_put,
3395 .private_value = (unsigned long)&(mm1_ch3_enum)
3396 },
3397 {
3398 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3399 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3400 .name = "MultiMedia1 Channel4",
3401 .info = msm_pcm_channel_input_be_info,
3402 .get = msm_pcm_channel_input_be_get,
3403 .put = msm_pcm_channel_input_be_put,
3404 .private_value = (unsigned long)&(mm1_ch4_enum)
3405 },
3406 {
3407 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3408 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3409 .name = "MultiMedia1 Channel5",
3410 .info = msm_pcm_channel_input_be_info,
3411 .get = msm_pcm_channel_input_be_get,
3412 .put = msm_pcm_channel_input_be_put,
3413 .private_value = (unsigned long)&(mm1_ch5_enum)
3414 },
3415 {
3416 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3417 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3418 .name = "MultiMedia1 Channel6",
3419 .info = msm_pcm_channel_input_be_info,
3420 .get = msm_pcm_channel_input_be_get,
3421 .put = msm_pcm_channel_input_be_put,
3422 .private_value = (unsigned long)&(mm1_ch6_enum)
3423 },
3424 {
3425 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3426 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3427 .name = "MultiMedia1 Channel7",
3428 .info = msm_pcm_channel_input_be_info,
3429 .get = msm_pcm_channel_input_be_get,
3430 .put = msm_pcm_channel_input_be_put,
3431 .private_value = (unsigned long)&(mm1_ch7_enum)
3432 },
3433 {
3434 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3435 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3436 .name = "MultiMedia1 Channel8",
3437 .info = msm_pcm_channel_input_be_info,
3438 .get = msm_pcm_channel_input_be_get,
3439 .put = msm_pcm_channel_input_be_put,
3440 .private_value = (unsigned long)&(mm1_ch8_enum)
3441 },
3442};
3443static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3444 struct snd_ctl_elem_value *ucontrol)
3445{
3446 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3447 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3448 ucontrol->value.integer.value[0]);
3449 return 0;
3450}
3451
3452static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3453 struct snd_ctl_elem_value *ucontrol)
3454{
3455 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3456 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3457 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3458 return 0;
3459}
3460
3461static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3462 "Four", "Five", "Six", "Seven", "Eight"};
3463
3464static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3465 struct snd_ctl_elem_value *ucontrol)
3466{
3467 switch (msm_ec_ref_bit_format) {
3468 case SNDRV_PCM_FORMAT_S24_LE:
3469 ucontrol->value.integer.value[0] = 2;
3470 break;
3471 case SNDRV_PCM_FORMAT_S16_LE:
3472 ucontrol->value.integer.value[0] = 1;
3473 break;
3474 default:
3475 ucontrol->value.integer.value[0] = 0;
3476 break;
3477 }
3478 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3479 __func__, ucontrol->value.integer.value[0]);
3480 return 0;
3481}
3482
3483static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3484 struct snd_ctl_elem_value *ucontrol)
3485{
3486 u16 bit_width = 0;
3487
3488 switch (ucontrol->value.integer.value[0]) {
3489 case 2:
3490 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3491 break;
3492 case 1:
3493 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3494 break;
3495 default:
3496 msm_ec_ref_bit_format = 0;
3497 break;
3498 }
3499
3500 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3501 bit_width = 16;
3502 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3503 bit_width = 24;
3504
3505 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3506 __func__, msm_ec_ref_bit_format);
3507 adm_ec_ref_rx_bit_width(bit_width);
3508 return 0;
3509}
3510
3511static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3512
3513static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3514 struct snd_ctl_elem_value *ucontrol)
3515{
3516 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3517 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3518 __func__, ucontrol->value.integer.value[0]);
3519 return 0;
3520}
3521
3522static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3523 struct snd_ctl_elem_value *ucontrol)
3524{
3525 switch (ucontrol->value.integer.value[0]) {
3526 case 0:
3527 msm_ec_ref_sampling_rate = 0;
3528 break;
3529 case 1:
3530 msm_ec_ref_sampling_rate = 8000;
3531 break;
3532 case 2:
3533 msm_ec_ref_sampling_rate = 16000;
3534 break;
3535 case 3:
3536 msm_ec_ref_sampling_rate = 32000;
3537 break;
3538 case 4:
3539 msm_ec_ref_sampling_rate = 44100;
3540 break;
3541 case 5:
3542 msm_ec_ref_sampling_rate = 48000;
3543 break;
3544 case 6:
3545 msm_ec_ref_sampling_rate = 96000;
3546 break;
3547 case 7:
3548 msm_ec_ref_sampling_rate = 192000;
3549 break;
3550 case 8:
3551 msm_ec_ref_sampling_rate = 384000;
3552 break;
3553 default:
3554 msm_ec_ref_sampling_rate = 48000;
3555 break;
3556 }
3557 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3558 __func__, msm_ec_ref_sampling_rate);
3559 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3560 return 0;
3561}
3562
3563static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3564 "32000", "44100", "48000", "96000", "192000", "384000"};
3565
3566static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3567 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3568 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3569 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3570};
3571
3572static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3573 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3574 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3575 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3576 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3577 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3578 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3579};
3580
3581static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3582 struct snd_ctl_elem_value *ucontrol)
3583{
3584 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3585 mutex_lock(&routing_lock);
3586 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3587 mutex_unlock(&routing_lock);
3588 return 0;
3589}
3590
3591static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3592 struct snd_ctl_elem_value *ucontrol)
3593{
3594 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303595 struct snd_soc_dapm_widget *widget =
3596 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303597 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3598 struct snd_soc_dapm_update *update = NULL;
3599
3600
3601 mutex_lock(&routing_lock);
3602 switch (ucontrol->value.integer.value[0]) {
3603 case 0:
3604 msm_route_ec_ref_rx = 0;
3605 ec_ref_port_id = AFE_PORT_INVALID;
3606 break;
3607 case 1:
3608 msm_route_ec_ref_rx = 1;
3609 ec_ref_port_id = SLIMBUS_0_RX;
3610 break;
3611 case 2:
3612 msm_route_ec_ref_rx = 2;
3613 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3614 break;
3615 case 3:
3616 msm_route_ec_ref_rx = 3;
3617 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3618 break;
3619 case 4:
3620 msm_route_ec_ref_rx = 4;
3621 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3622 break;
3623 case 5:
3624 msm_route_ec_ref_rx = 5;
3625 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3626 break;
3627 case 6:
3628 msm_route_ec_ref_rx = 6;
3629 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3630 break;
3631 case 7:
3632 msm_route_ec_ref_rx = 7;
3633 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3634 break;
3635 case 9:
3636 msm_route_ec_ref_rx = 9;
3637 ec_ref_port_id = SLIMBUS_5_RX;
3638 break;
3639 case 10:
3640 msm_route_ec_ref_rx = 10;
3641 ec_ref_port_id = SLIMBUS_1_TX;
3642 break;
3643 case 11:
3644 msm_route_ec_ref_rx = 11;
3645 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3646 break;
3647 case 12:
3648 msm_route_ec_ref_rx = 12;
3649 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3650 break;
3651 case 13:
3652 msm_route_ec_ref_rx = 13;
3653 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3654 break;
3655 case 14:
3656 msm_route_ec_ref_rx = 14;
3657 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3658 break;
3659 case 15:
3660 msm_route_ec_ref_rx = 15;
3661 ec_ref_port_id = SLIMBUS_6_RX;
3662 break;
3663 case 16:
3664 msm_route_ec_ref_rx = 16;
3665 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3666 break;
3667 case 17:
3668 msm_route_ec_ref_rx = 17;
3669 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3670 break;
3671 case 18:
3672 msm_route_ec_ref_rx = 18;
3673 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3674 break;
3675 case 19:
3676 msm_route_ec_ref_rx = 19;
3677 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3678 break;
3679 case 20:
3680 msm_route_ec_ref_rx = 20;
3681 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3682 break;
3683 case 21:
3684 msm_route_ec_ref_rx = 21;
3685 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3686 break;
3687 case 22:
3688 msm_route_ec_ref_rx = 22;
3689 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3690 break;
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003691 case 23:
3692 msm_route_ec_ref_rx = 23;
3693 ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
3694 break;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303695 default:
3696 msm_route_ec_ref_rx = 0; /* NONE */
3697 pr_err("%s EC ref rx %ld not valid\n",
3698 __func__, ucontrol->value.integer.value[0]);
3699 ec_ref_port_id = AFE_PORT_INVALID;
3700 break;
3701 }
3702 adm_ec_ref_rx_id(ec_ref_port_id);
3703 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3704 __func__, msm_route_ec_ref_rx);
3705 mutex_unlock(&routing_lock);
3706 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3707 msm_route_ec_ref_rx, e, update);
3708 return 0;
3709}
3710
3711static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3712 "PRI_MI2S_TX", "SEC_MI2S_TX",
3713 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3714 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3715 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3716 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003717 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT"};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303718
3719static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3720 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3721};
3722
3723static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3724 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3725 msm_route_ec_ref_rx_enum[0],
3726 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3727
3728static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3729 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3730 msm_route_ec_ref_rx_enum[0],
3731 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3732
3733static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3734 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3735 msm_route_ec_ref_rx_enum[0],
3736 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3737
3738static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3739 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3740 msm_route_ec_ref_rx_enum[0],
3741 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3742
3743static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3744 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3745 msm_route_ec_ref_rx_enum[0],
3746 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3747
3748static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3749 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3750 msm_route_ec_ref_rx_enum[0],
3751 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3752
3753static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3754 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3755 msm_route_ec_ref_rx_enum[0],
3756 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3757
3758static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3759 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3760 msm_route_ec_ref_rx_enum[0],
3761 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3762
Asish Bhattacharya34504582017-08-08 12:55:01 +05303763static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3764 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3765 msm_route_ec_ref_rx_enum[0],
3766 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3767
Laxminath Kasam38070be2017-08-17 18:21:59 +05303768static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3769 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3770 msm_route_ec_ref_rx_enum[0],
3771 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3772
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303773static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3774 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3775 msm_route_ec_ref_rx_enum[0],
3776 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3777
3778static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3779 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3780 msm_route_ec_ref_rx_enum[0],
3781 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3782
3783static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3784 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3785 msm_route_ec_ref_rx_enum[0],
3786 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3787
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303788static const struct snd_kcontrol_new ext_ec_ref_mux_ul28 =
3789 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL28 MUX Mux",
3790 msm_route_ec_ref_rx_enum[0],
3791 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3792
3793static const struct snd_kcontrol_new ext_ec_ref_mux_ul29 =
3794 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL29 MUX Mux",
3795 msm_route_ec_ref_rx_enum[0],
3796 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3797
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303798static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3799 struct snd_ctl_elem_value *ucontrol)
3800{
3801 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3802
3803 mutex_lock(&routing_lock);
3804 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3805 mutex_unlock(&routing_lock);
3806 return 0;
3807}
3808
3809static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3810 struct snd_ctl_elem_value *ucontrol)
3811{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303812 struct snd_soc_dapm_widget *widget =
3813 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303814 int mux = ucontrol->value.enumerated.item[0];
3815 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3816 int ret = 1;
3817 bool state = true;
3818 uint16_t ext_ec_ref_port_id;
3819 struct snd_soc_dapm_update *update = NULL;
3820
3821 if (mux >= e->items) {
3822 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3823 return -EINVAL;
3824 }
3825
3826 mutex_lock(&routing_lock);
3827 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3828
3829 switch (msm_route_ext_ec_ref) {
3830 case EXT_EC_REF_PRI_MI2S_TX:
3831 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3832 break;
3833 case EXT_EC_REF_SEC_MI2S_TX:
3834 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3835 break;
3836 case EXT_EC_REF_TERT_MI2S_TX:
3837 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3838 break;
3839 case EXT_EC_REF_QUAT_MI2S_TX:
3840 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3841 break;
3842 case EXT_EC_REF_QUIN_MI2S_TX:
3843 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3844 break;
3845 case EXT_EC_REF_SLIM_1_TX:
3846 ext_ec_ref_port_id = SLIMBUS_1_TX;
3847 break;
3848 case EXT_EC_REF_NONE:
3849 default:
3850 ext_ec_ref_port_id = AFE_PORT_INVALID;
3851 state = false;
3852 break;
3853 }
3854
3855 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3856 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3857
3858 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3859 mutex_unlock(&routing_lock);
3860 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3861 update);
3862 } else {
3863 ret = -EINVAL;
3864 mutex_unlock(&routing_lock);
3865 }
3866 return ret;
3867}
3868
3869static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3870 "SEC_MI2S_TX", "TERT_MI2S_TX",
3871 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3872 "SLIM_1_TX"};
3873
3874static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3875 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3876};
3877
3878static const struct snd_kcontrol_new voc_ext_ec_mux =
3879 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3880 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3881
3882
3883static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3884 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3885 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3886 msm_routing_put_audio_mixer),
3887 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3888 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3889 msm_routing_put_audio_mixer),
3890 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3891 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3892 msm_routing_put_audio_mixer),
3893 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3894 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3895 msm_routing_put_audio_mixer),
3896 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3897 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3898 msm_routing_put_audio_mixer),
3899 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3900 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3901 msm_routing_put_audio_mixer),
3902 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3903 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3904 msm_routing_put_audio_mixer),
3905 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3906 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3907 msm_routing_put_audio_mixer),
3908 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3909 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3910 msm_routing_put_audio_mixer),
3911 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3912 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3913 msm_routing_put_audio_mixer),
3914 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3915 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3916 msm_routing_put_audio_mixer),
3917 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
3918 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3919 msm_routing_put_audio_mixer),
3920 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
3921 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3922 msm_routing_put_audio_mixer),
3923 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
3924 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3925 msm_routing_put_audio_mixer),
3926 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
3927 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3928 msm_routing_put_audio_mixer),
3929 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
3930 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3931 msm_routing_put_audio_mixer),
3932 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
3933 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3934 msm_routing_put_audio_mixer),
3935 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
3936 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3937 msm_routing_put_audio_mixer),
3938 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
3939 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3940 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303941 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_I2S_RX,
3942 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
3943 msm_routing_put_audio_mixer),
3944 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_I2S_RX,
3945 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
3946 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303947};
3948
3949static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
3950 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
3951 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3952 msm_routing_put_audio_mixer),
3953 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
3954 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3955 msm_routing_put_audio_mixer),
3956 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
3957 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3958 msm_routing_put_audio_mixer),
3959 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
3960 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3961 msm_routing_put_audio_mixer),
3962 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
3963 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3964 msm_routing_put_audio_mixer),
3965 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
3966 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3967 msm_routing_put_audio_mixer),
3968 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
3969 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3970 msm_routing_put_audio_mixer),
3971 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
3972 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3973 msm_routing_put_audio_mixer),
3974 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
3975 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3976 msm_routing_put_audio_mixer),
3977 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
3978 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3979 msm_routing_put_audio_mixer),
3980 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
3981 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3982 msm_routing_put_audio_mixer),
3983 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
3984 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3985 msm_routing_put_audio_mixer),
3986 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
3987 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3988 msm_routing_put_audio_mixer),
3989 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
3990 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3991 msm_routing_put_audio_mixer),
3992 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
3993 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3994 msm_routing_put_audio_mixer),
3995 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
3996 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3997 msm_routing_put_audio_mixer),
3998 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
3999 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4000 msm_routing_put_audio_mixer),
4001 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
4002 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4003 msm_routing_put_audio_mixer),
4004 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
4005 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4006 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304007 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_I2S_RX,
4008 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4009 msm_routing_put_audio_mixer),
4010 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_I2S_RX,
4011 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4012 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304013};
4014
4015static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
4016 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
4017 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4018 msm_routing_put_audio_mixer),
4019 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
4020 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4021 msm_routing_put_audio_mixer),
4022 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
4023 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4024 msm_routing_put_audio_mixer),
4025 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
4026 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4027 msm_routing_put_audio_mixer),
4028 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
4029 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4030 msm_routing_put_audio_mixer),
4031 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
4032 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4033 msm_routing_put_audio_mixer),
4034 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
4035 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4036 msm_routing_put_audio_mixer),
4037 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
4038 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4039 msm_routing_put_audio_mixer),
4040 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
4041 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4042 msm_routing_put_audio_mixer),
4043 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
4044 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4045 msm_routing_put_audio_mixer),
4046 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
4047 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4048 msm_routing_put_audio_mixer),
4049 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
4050 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4051 msm_routing_put_audio_mixer),
4052 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
4053 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4054 msm_routing_put_audio_mixer),
4055 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
4056 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4057 msm_routing_put_audio_mixer),
4058 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
4059 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4060 msm_routing_put_audio_mixer),
4061 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
4062 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4063 msm_routing_put_audio_mixer),
4064 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
4065 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4066 msm_routing_put_audio_mixer),
4067 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
4068 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4069 msm_routing_put_audio_mixer),
4070 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
4071 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4072 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304073 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SPDIF_RX,
4074 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4075 msm_routing_put_audio_mixer),
4076 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SPDIF_RX,
4077 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4078 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304079};
4080
4081static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
4082 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4083 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4084 msm_routing_put_audio_mixer),
4085 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4086 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4087 msm_routing_put_audio_mixer),
4088 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4089 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4090 msm_routing_put_audio_mixer),
4091 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4092 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4093 msm_routing_put_audio_mixer),
4094 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4095 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4096 msm_routing_put_audio_mixer),
4097 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4098 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4099 msm_routing_put_audio_mixer),
4100 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4101 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4102 msm_routing_put_audio_mixer),
4103 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4104 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4105 msm_routing_put_audio_mixer),
4106 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4107 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4108 msm_routing_put_audio_mixer),
4109 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4110 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4111 msm_routing_put_audio_mixer),
4112 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4113 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4114 msm_routing_put_audio_mixer),
4115 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4116 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4117 msm_routing_put_audio_mixer),
4118 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4119 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4120 msm_routing_put_audio_mixer),
4121 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4122 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4123 msm_routing_put_audio_mixer),
4124 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4125 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4126 msm_routing_put_audio_mixer),
4127 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4128 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4129 msm_routing_put_audio_mixer),
4130};
4131
4132static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4133 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4134 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4135 msm_routing_put_audio_mixer),
4136 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4137 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4138 msm_routing_put_audio_mixer),
4139 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4140 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4141 msm_routing_put_audio_mixer),
4142 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4143 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4144 msm_routing_put_audio_mixer),
4145 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4146 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4147 msm_routing_put_audio_mixer),
4148 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4149 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4150 msm_routing_put_audio_mixer),
4151 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4152 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4153 msm_routing_put_audio_mixer),
4154 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4155 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4156 msm_routing_put_audio_mixer),
4157 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4158 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4159 msm_routing_put_audio_mixer),
4160 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4161 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4162 msm_routing_put_audio_mixer),
4163 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4164 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4165 msm_routing_put_audio_mixer),
4166 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4167 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4168 msm_routing_put_audio_mixer),
4169 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4170 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4171 msm_routing_put_audio_mixer),
4172 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4173 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4174 msm_routing_put_audio_mixer),
4175 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4176 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4177 msm_routing_put_audio_mixer),
4178 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4179 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4180 msm_routing_put_audio_mixer),
4181 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4182 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4183 msm_routing_put_audio_mixer),
4184 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4185 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4186 msm_routing_put_audio_mixer),
4187 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4188 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4189 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304190 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4191 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4192 msm_routing_put_audio_mixer),
4193 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4194 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4195 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304196};
4197
4198static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4199 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4200 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4201 msm_routing_put_audio_mixer),
4202 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4203 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4204 msm_routing_put_audio_mixer),
4205 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4206 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4207 msm_routing_put_audio_mixer),
4208 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4209 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4210 msm_routing_put_audio_mixer),
4211 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4212 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4213 msm_routing_put_audio_mixer),
4214 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4215 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4216 msm_routing_put_audio_mixer),
4217 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4218 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4219 msm_routing_put_audio_mixer),
4220 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4221 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4222 msm_routing_put_audio_mixer),
4223 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4224 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4225 msm_routing_put_audio_mixer),
4226 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4227 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4228 msm_routing_put_audio_mixer),
4229 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4230 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4231 msm_routing_put_audio_mixer),
4232 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4233 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4234 msm_routing_put_audio_mixer),
4235 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4236 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4237 msm_routing_put_audio_mixer),
4238 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4239 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4240 msm_routing_put_audio_mixer),
4241 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4242 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4243 msm_routing_put_audio_mixer),
4244 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4245 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4246 msm_routing_put_audio_mixer),
4247 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4248 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4249 msm_routing_put_audio_mixer),
4250 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4251 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4252 msm_routing_put_audio_mixer),
4253 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4254 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4255 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304256 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4257 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4258 msm_routing_put_audio_mixer),
4259 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4260 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4261 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304262};
4263
4264static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4265 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4266 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4267 msm_routing_put_audio_mixer),
4268 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4269 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4270 msm_routing_put_audio_mixer),
4271 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4272 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4273 msm_routing_put_audio_mixer),
4274 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4275 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4276 msm_routing_put_audio_mixer),
4277 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4278 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4279 msm_routing_put_audio_mixer),
4280 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4281 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4282 msm_routing_put_audio_mixer),
4283 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4284 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4285 msm_routing_put_audio_mixer),
4286 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4287 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4288 msm_routing_put_audio_mixer),
4289 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4290 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4291 msm_routing_put_audio_mixer),
4292 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4293 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4294 msm_routing_put_audio_mixer),
4295 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4296 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4297 msm_routing_put_audio_mixer),
4298 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4299 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4300 msm_routing_put_audio_mixer),
4301 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4302 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4303 msm_routing_put_audio_mixer),
4304 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4305 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4306 msm_routing_put_audio_mixer),
4307 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4308 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4309 msm_routing_put_audio_mixer),
4310 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4311 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4312 msm_routing_put_audio_mixer),
4313 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4314 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4315 msm_routing_put_audio_mixer),
4316 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4317 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4318 msm_routing_put_audio_mixer),
4319 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4320 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4321 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304322 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_MI2S_RX,
4323 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4324 msm_routing_put_audio_mixer),
4325 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_MI2S_RX,
4326 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4327 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304328};
4329
4330static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4331 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4332 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4333 msm_routing_put_audio_mixer),
4334 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4335 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4336 msm_routing_put_audio_mixer),
4337 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4338 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4339 msm_routing_put_audio_mixer),
4340 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4341 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4342 msm_routing_put_audio_mixer),
4343 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4344 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4345 msm_routing_put_audio_mixer),
4346 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4347 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4348 msm_routing_put_audio_mixer),
4349 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4350 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4351 msm_routing_put_audio_mixer),
4352 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4353 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4354 msm_routing_put_audio_mixer),
4355 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4356 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4357 msm_routing_put_audio_mixer),
4358 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4359 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4360 msm_routing_put_audio_mixer),
4361 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4362 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4363 msm_routing_put_audio_mixer),
4364 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4365 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4366 msm_routing_put_audio_mixer),
4367 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4368 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4369 msm_routing_put_audio_mixer),
4370 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4371 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4372 msm_routing_put_audio_mixer),
4373 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4374 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4375 msm_routing_put_audio_mixer),
4376 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4377 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4378 msm_routing_put_audio_mixer),
4379 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4380 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4381 msm_routing_put_audio_mixer),
4382 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4383 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4384 msm_routing_put_audio_mixer),
4385 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4386 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4387 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304388 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4389 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4390 msm_routing_put_audio_mixer),
4391 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4392 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4393 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304394};
4395
4396static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4397 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4398 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4399 msm_routing_put_audio_mixer),
4400 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4401 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4402 msm_routing_put_audio_mixer),
4403 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4404 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4405 msm_routing_put_audio_mixer),
4406 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4407 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4408 msm_routing_put_audio_mixer),
4409 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4410 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4411 msm_routing_put_audio_mixer),
4412 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4413 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4414 msm_routing_put_audio_mixer),
4415 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4416 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4417 msm_routing_put_audio_mixer),
4418 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4419 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4420 msm_routing_put_audio_mixer),
4421 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4422 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4423 msm_routing_put_audio_mixer),
4424 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4425 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4426 msm_routing_put_audio_mixer),
4427 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4428 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4429 msm_routing_put_audio_mixer),
4430 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4431 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4432 msm_routing_put_audio_mixer),
4433 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4434 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4435 msm_routing_put_audio_mixer),
4436 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4437 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4438 msm_routing_put_audio_mixer),
4439 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4440 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4441 msm_routing_put_audio_mixer),
4442 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4443 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4444 msm_routing_put_audio_mixer),
4445 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4446 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4447 msm_routing_put_audio_mixer),
4448 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4449 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4450 msm_routing_put_audio_mixer),
4451 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4452 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4453 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304454 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4455 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4456 msm_routing_put_audio_mixer),
4457 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4458 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4459 msm_routing_put_audio_mixer),
4460
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304461};
4462
4463static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4464 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4465 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4466 msm_routing_put_audio_mixer),
4467 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4468 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4469 msm_routing_put_audio_mixer),
4470 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4471 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4472 msm_routing_put_audio_mixer),
4473 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4474 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4475 msm_routing_put_audio_mixer),
4476 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4477 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4478 msm_routing_put_audio_mixer),
4479 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4480 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4481 msm_routing_put_audio_mixer),
4482 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4483 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4484 msm_routing_put_audio_mixer),
4485 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4486 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4487 msm_routing_put_audio_mixer),
4488 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4489 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4490 msm_routing_put_audio_mixer),
4491 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4492 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4493 msm_routing_put_audio_mixer),
4494 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4495 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4496 msm_routing_put_audio_mixer),
4497 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4498 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4499 msm_routing_put_audio_mixer),
4500 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4501 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4502 msm_routing_put_audio_mixer),
4503 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4504 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4505 msm_routing_put_audio_mixer),
4506 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4507 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4508 msm_routing_put_audio_mixer),
4509 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4510 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4511 msm_routing_put_audio_mixer),
4512 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4513 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4514 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304515 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4516 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4517 msm_routing_put_audio_mixer),
4518 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4519 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4520 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304521};
4522
4523static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4524 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4525 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4526 msm_routing_put_audio_mixer),
4527};
4528
4529static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4530 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4531 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4532 msm_routing_put_audio_mixer),
4533 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4534 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4535 msm_routing_put_audio_mixer),
4536 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4537 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4538 msm_routing_put_audio_mixer),
4539 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4540 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4541 msm_routing_put_audio_mixer),
4542 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4543 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4544 msm_routing_put_audio_mixer),
4545 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4546 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4547 msm_routing_put_audio_mixer),
4548 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4549 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4550 msm_routing_put_audio_mixer),
4551 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4552 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4553 msm_routing_put_audio_mixer),
4554 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4555 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4556 msm_routing_put_audio_mixer),
4557 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4558 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4559 msm_routing_put_audio_mixer),
4560 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4561 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4562 msm_routing_put_audio_mixer),
4563 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4564 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4565 msm_routing_put_audio_mixer),
4566 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4567 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4568 msm_routing_put_audio_mixer),
4569 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4570 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4571 msm_routing_put_audio_mixer),
4572 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4573 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4574 msm_routing_put_audio_mixer),
4575 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4576 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4577 msm_routing_put_audio_mixer),
4578 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4579 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4580 msm_routing_put_audio_mixer),
4581 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4582 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4583 msm_routing_put_audio_mixer),
4584 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4585 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4586 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304587 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4588 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4589 msm_routing_put_audio_mixer),
4590 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4591 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4592 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304593};
4594
4595static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4596 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4597 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4598 msm_routing_put_audio_mixer),
4599 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4600 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4601 msm_routing_put_audio_mixer),
4602 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4603 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4604 msm_routing_put_audio_mixer),
4605 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4606 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4607 msm_routing_put_audio_mixer),
4608 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4609 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4610 msm_routing_put_audio_mixer),
4611 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4612 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4613 msm_routing_put_audio_mixer),
4614 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4615 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4616 msm_routing_put_audio_mixer),
4617 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4618 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4619 msm_routing_put_audio_mixer),
4620 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4621 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4622 msm_routing_put_audio_mixer),
4623 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4624 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4625 msm_routing_put_audio_mixer),
4626 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4627 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4628 msm_routing_put_audio_mixer),
4629 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4630 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4631 msm_routing_put_audio_mixer),
4632 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4633 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4634 msm_routing_put_audio_mixer),
4635 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4636 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4637 msm_routing_put_audio_mixer),
4638 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4639 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4640 msm_routing_put_audio_mixer),
4641 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4642 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4643 msm_routing_put_audio_mixer),
4644 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4645 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4646 msm_routing_put_audio_mixer),
4647 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4648 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4649 msm_routing_put_audio_mixer),
4650 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4651 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4652 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304653 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_MI2S_RX,
4654 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4655 msm_routing_put_audio_mixer),
4656 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_MI2S_RX,
4657 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4658 msm_routing_put_audio_mixer),
4659
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304660};
4661
4662static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4663 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4664 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4665 msm_routing_put_audio_mixer),
4666 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4667 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4668 msm_routing_put_audio_mixer),
4669 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4670 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4671 msm_routing_put_audio_mixer),
4672 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4673 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4674 msm_routing_put_audio_mixer),
4675 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4676 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4677 msm_routing_put_audio_mixer),
4678 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4679 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4680 msm_routing_put_audio_mixer),
4681 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4682 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4683 msm_routing_put_audio_mixer),
4684 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4685 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4686 msm_routing_put_audio_mixer),
4687 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4688 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4689 msm_routing_put_audio_mixer),
4690 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4691 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4692 msm_routing_put_audio_mixer),
4693 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4694 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4695 msm_routing_put_audio_mixer),
4696 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4697 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4698 msm_routing_put_audio_mixer),
4699 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4700 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4701 msm_routing_put_audio_mixer),
4702 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4703 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4704 msm_routing_put_audio_mixer),
4705 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4706 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4707 msm_routing_put_audio_mixer),
4708 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4709 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4710 msm_routing_put_audio_mixer),
4711};
4712
4713static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4714 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4715 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4716 msm_routing_put_audio_mixer),
4717 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4718 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4719 msm_routing_put_audio_mixer),
4720 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4721 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4722 msm_routing_put_audio_mixer),
4723 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4724 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4725 msm_routing_put_audio_mixer),
4726 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4727 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4728 msm_routing_put_audio_mixer),
4729 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4730 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4731 msm_routing_put_audio_mixer),
4732 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4733 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4734 msm_routing_put_audio_mixer),
4735 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4736 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4737 msm_routing_put_audio_mixer),
4738 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4739 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4740 msm_routing_put_audio_mixer),
4741 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4742 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4743 msm_routing_put_audio_mixer),
4744 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4745 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4746 msm_routing_put_audio_mixer),
4747 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4748 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4749 msm_routing_put_audio_mixer),
4750 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4751 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4752 msm_routing_put_audio_mixer),
4753 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4754 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4755 msm_routing_put_audio_mixer),
4756 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4757 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4758 msm_routing_put_audio_mixer),
4759 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4760 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4761 msm_routing_put_audio_mixer),
4762};
4763
4764static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4765 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4766 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4767 msm_routing_put_audio_mixer),
4768 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4769 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4770 msm_routing_put_audio_mixer),
4771 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4772 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4773 msm_routing_put_audio_mixer),
4774 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4775 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4776 msm_routing_put_audio_mixer),
4777 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4778 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4779 msm_routing_put_audio_mixer),
4780 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4781 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4782 msm_routing_put_audio_mixer),
4783 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4784 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4785 msm_routing_put_audio_mixer),
4786 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4787 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4788 msm_routing_put_audio_mixer),
4789 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4790 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4791 msm_routing_put_audio_mixer),
4792 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4793 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4794 msm_routing_put_audio_mixer),
4795 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4796 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4797 msm_routing_put_audio_mixer),
4798 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4799 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4800 msm_routing_put_audio_mixer),
4801 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4802 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4803 msm_routing_put_audio_mixer),
4804 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4805 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4806 msm_routing_put_audio_mixer),
4807 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4808 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4809 msm_routing_put_audio_mixer),
4810 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4811 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4812 msm_routing_put_audio_mixer),
4813 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4814 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4815 msm_routing_put_audio_mixer),
4816 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4817 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4818 msm_routing_put_audio_mixer),
4819 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4820 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4821 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304822 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_HDMI_RX,
4823 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4824 msm_routing_put_audio_mixer),
4825 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_HDMI_RX,
4826 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4827 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304828};
4829
4830static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4831 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4832 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4833 msm_routing_put_audio_mixer),
4834 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4835 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4836 msm_routing_put_audio_mixer),
4837 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4838 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4839 msm_routing_put_audio_mixer),
4840 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4841 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4842 msm_routing_put_audio_mixer),
4843 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4844 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4845 msm_routing_put_audio_mixer),
4846 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4847 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4848 msm_routing_put_audio_mixer),
4849 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4850 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4851 msm_routing_put_audio_mixer),
4852 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4853 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4854 msm_routing_put_audio_mixer),
4855 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4856 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4857 msm_routing_put_audio_mixer),
4858 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4859 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4860 msm_routing_put_audio_mixer),
4861 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4862 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4863 msm_routing_put_audio_mixer),
4864 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4865 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4866 msm_routing_put_audio_mixer),
4867 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4868 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4869 msm_routing_put_audio_mixer),
4870 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4871 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4872 msm_routing_put_audio_mixer),
4873 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4874 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4875 msm_routing_put_audio_mixer),
4876 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4877 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4878 msm_routing_put_audio_mixer),
4879};
4880
4881 /* incall music delivery mixer */
4882static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4883 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4884 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4885 msm_routing_put_audio_mixer),
4886 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4887 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4888 msm_routing_put_audio_mixer),
4889 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4890 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4891 msm_routing_put_audio_mixer),
4892 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4893 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4894 msm_routing_put_audio_mixer),
4895};
4896
4897static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4898 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4899 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4900 msm_routing_put_audio_mixer),
4901 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4902 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4903 msm_routing_put_audio_mixer),
4904 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4905 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4906 msm_routing_put_audio_mixer),
4907 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4908 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4909 msm_routing_put_audio_mixer),
4910};
4911
4912static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4913 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4914 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4915 msm_routing_put_audio_mixer),
4916 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4917 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4918 msm_routing_put_audio_mixer),
4919 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4920 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4921 msm_routing_put_audio_mixer),
4922 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4923 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4924 msm_routing_put_audio_mixer),
4925};
4926
4927static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
4928 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4929 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4930 msm_routing_put_audio_mixer),
4931 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4932 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4933 msm_routing_put_audio_mixer),
4934 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4935 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4936 msm_routing_put_audio_mixer),
4937 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4938 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4939 msm_routing_put_audio_mixer),
4940 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4941 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4942 msm_routing_put_audio_mixer),
4943 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4944 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4945 msm_routing_put_audio_mixer),
4946 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4947 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4948 msm_routing_put_audio_mixer),
4949 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4950 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4951 msm_routing_put_audio_mixer),
4952 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4953 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4954 msm_routing_put_audio_mixer),
4955 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4956 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4957 msm_routing_put_audio_mixer),
4958 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4959 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4960 msm_routing_put_audio_mixer),
4961 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4962 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4963 msm_routing_put_audio_mixer),
4964 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4965 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4966 msm_routing_put_audio_mixer),
4967 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4968 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4969 msm_routing_put_audio_mixer),
4970 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4971 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4972 msm_routing_put_audio_mixer),
4973 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4974 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4975 msm_routing_put_audio_mixer),
4976};
4977
4978static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
4979 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4980 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4981 msm_routing_put_audio_mixer),
4982 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4983 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4984 msm_routing_put_audio_mixer),
4985 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4986 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4987 msm_routing_put_audio_mixer),
4988 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4989 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4990 msm_routing_put_audio_mixer),
4991 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4992 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4993 msm_routing_put_audio_mixer),
4994 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4995 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4996 msm_routing_put_audio_mixer),
4997 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4998 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4999 msm_routing_put_audio_mixer),
5000 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5001 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5002 msm_routing_put_audio_mixer),
5003 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5004 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5005 msm_routing_put_audio_mixer),
5006 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5007 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5008 msm_routing_put_audio_mixer),
5009 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5010 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5011 msm_routing_put_audio_mixer),
5012 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5013 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5014 msm_routing_put_audio_mixer),
5015 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5016 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5017 msm_routing_put_audio_mixer),
5018 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5019 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5020 msm_routing_put_audio_mixer),
5021 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5022 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5023 msm_routing_put_audio_mixer),
5024 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5025 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5026 msm_routing_put_audio_mixer),
5027};
5028
5029static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
5030 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
5031 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5032 msm_routing_put_audio_mixer),
5033 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
5034 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5035 msm_routing_put_audio_mixer),
5036 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
5037 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5038 msm_routing_put_audio_mixer),
5039 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
5040 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5041 msm_routing_put_audio_mixer),
5042 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
5043 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5044 msm_routing_put_audio_mixer),
5045 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
5046 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5047 msm_routing_put_audio_mixer),
5048 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
5049 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5050 msm_routing_put_audio_mixer),
5051 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
5052 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5053 msm_routing_put_audio_mixer),
5054 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
5055 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5056 msm_routing_put_audio_mixer),
5057 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
5058 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5059 msm_routing_put_audio_mixer),
5060 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
5061 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5062 msm_routing_put_audio_mixer),
5063 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
5064 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5065 msm_routing_put_audio_mixer),
5066 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
5067 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5068 msm_routing_put_audio_mixer),
5069 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
5070 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5071 msm_routing_put_audio_mixer),
5072 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
5073 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5074 msm_routing_put_audio_mixer),
5075 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
5076 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5077 msm_routing_put_audio_mixer),
5078};
5079
5080static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
5081 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5082 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5083 msm_routing_put_audio_mixer),
5084 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5085 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5086 msm_routing_put_audio_mixer),
5087 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5088 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5089 msm_routing_put_audio_mixer),
5090 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5091 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5092 msm_routing_put_audio_mixer),
5093 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5094 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5095 msm_routing_put_audio_mixer),
5096 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5097 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5098 msm_routing_put_audio_mixer),
5099 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5100 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5101 msm_routing_put_audio_mixer),
5102 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5103 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5104 msm_routing_put_audio_mixer),
5105 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5106 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5107 msm_routing_put_audio_mixer),
5108 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5109 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5110 msm_routing_put_audio_mixer),
5111 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5112 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5113 msm_routing_put_audio_mixer),
5114 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5115 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5116 msm_routing_put_audio_mixer),
5117 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5118 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5119 msm_routing_put_audio_mixer),
5120 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5121 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5122 msm_routing_put_audio_mixer),
5123 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5124 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5125 msm_routing_put_audio_mixer),
5126 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5127 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5128 msm_routing_put_audio_mixer),
5129 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5130 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5131 msm_routing_put_audio_mixer),
5132 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5133 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5134 msm_routing_put_audio_mixer),
5135 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5136 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5137 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305138 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5139 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5140 msm_routing_put_audio_mixer),
5141 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5142 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5143 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305144};
5145
5146static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
5147 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5148 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5149 msm_routing_put_audio_mixer),
5150 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5151 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5152 msm_routing_put_audio_mixer),
5153 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5154 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5155 msm_routing_put_audio_mixer),
5156 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5157 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5158 msm_routing_put_audio_mixer),
5159 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5160 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5161 msm_routing_put_audio_mixer),
5162 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5163 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5164 msm_routing_put_audio_mixer),
5165 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5166 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5167 msm_routing_put_audio_mixer),
5168 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5169 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5170 msm_routing_put_audio_mixer),
5171 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5172 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5173 msm_routing_put_audio_mixer),
5174 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5175 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5176 msm_routing_put_audio_mixer),
5177 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5178 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5179 msm_routing_put_audio_mixer),
5180 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5181 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5182 msm_routing_put_audio_mixer),
5183 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5184 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5185 msm_routing_put_audio_mixer),
5186 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5187 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5188 msm_routing_put_audio_mixer),
5189 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5190 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5191 msm_routing_put_audio_mixer),
5192 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5193 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5194 msm_routing_put_audio_mixer),
5195};
5196
5197static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5198 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5199 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5200 msm_routing_put_audio_mixer),
5201 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5202 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5203 msm_routing_put_audio_mixer),
5204 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5205 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5206 msm_routing_put_audio_mixer),
5207 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5208 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5209 msm_routing_put_audio_mixer),
5210 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5211 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5212 msm_routing_put_audio_mixer),
5213 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5214 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5215 msm_routing_put_audio_mixer),
5216 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5217 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5218 msm_routing_put_audio_mixer),
5219 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5220 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5221 msm_routing_put_audio_mixer),
5222 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5223 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5224 msm_routing_put_audio_mixer),
5225 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5226 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5227 msm_routing_put_audio_mixer),
5228 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5229 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5230 msm_routing_put_audio_mixer),
5231 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5232 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5233 msm_routing_put_audio_mixer),
5234 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5235 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5236 msm_routing_put_audio_mixer),
5237 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5238 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5239 msm_routing_put_audio_mixer),
5240 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5241 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5242 msm_routing_put_audio_mixer),
5243 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5244 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5245 msm_routing_put_audio_mixer),
5246 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5247 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5248 msm_routing_put_audio_mixer),
5249 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5250 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5251 msm_routing_put_audio_mixer),
5252 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5253 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5254 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305255 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_FM_RX,
5256 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5257 msm_routing_put_audio_mixer),
5258 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_FM_RX,
5259 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5260 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305261};
5262
5263static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5264 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5265 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5266 msm_routing_put_audio_mixer),
5267 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5268 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5269 msm_routing_put_audio_mixer),
5270 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5271 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5272 msm_routing_put_audio_mixer),
5273 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5274 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5275 msm_routing_put_audio_mixer),
5276 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5277 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5278 msm_routing_put_audio_mixer),
5279 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5280 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5281 msm_routing_put_audio_mixer),
5282 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5283 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5284 msm_routing_put_audio_mixer),
5285 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5286 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5287 msm_routing_put_audio_mixer),
5288 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5289 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5290 msm_routing_put_audio_mixer),
5291 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5292 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5293 msm_routing_put_audio_mixer),
5294 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5295 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5296 msm_routing_put_audio_mixer),
5297 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5298 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5299 msm_routing_put_audio_mixer),
5300 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5301 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5302 msm_routing_put_audio_mixer),
5303 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5304 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5305 msm_routing_put_audio_mixer),
5306 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5307 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5308 msm_routing_put_audio_mixer),
5309 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5310 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5311 msm_routing_put_audio_mixer),
5312 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5313 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5314 msm_routing_put_audio_mixer),
5315 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5316 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5317 msm_routing_put_audio_mixer),
5318 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5319 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5320 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305321 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AFE_PCM_RX,
5322 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5323 msm_routing_put_audio_mixer),
5324 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AFE_PCM_RX,
5325 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5326 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305327};
5328
5329static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5330 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5331 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5332 msm_routing_put_audio_mixer),
5333 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5334 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5335 msm_routing_put_audio_mixer),
5336 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5337 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5338 msm_routing_put_audio_mixer),
5339 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5340 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5341 msm_routing_put_audio_mixer),
5342 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5343 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5344 msm_routing_put_audio_mixer),
5345 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5346 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5347 msm_routing_put_audio_mixer),
5348 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5349 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5350 msm_routing_put_audio_mixer),
5351 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5352 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5353 msm_routing_put_audio_mixer),
5354 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5355 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5356 msm_routing_put_audio_mixer),
5357 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5358 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5359 msm_routing_put_audio_mixer),
5360 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5361 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5362 msm_routing_put_audio_mixer),
5363 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5364 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5365 msm_routing_put_audio_mixer),
5366 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5367 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5368 msm_routing_put_audio_mixer),
5369 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5370 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5371 msm_routing_put_audio_mixer),
5372 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5373 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5374 msm_routing_put_audio_mixer),
5375 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5376 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5377 msm_routing_put_audio_mixer),
5378 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5379 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5380 msm_routing_put_audio_mixer),
5381 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5382 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5383 msm_routing_put_audio_mixer),
5384 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5385 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5386 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305387 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AUXPCM_RX,
5388 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5389 msm_routing_put_audio_mixer),
5390 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AUXPCM_RX,
5391 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5392 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305393};
5394
5395static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5396 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5397 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5398 msm_routing_put_audio_mixer),
5399 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5400 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5401 msm_routing_put_audio_mixer),
5402 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5403 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5404 msm_routing_put_audio_mixer),
5405 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5406 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5407 msm_routing_put_audio_mixer),
5408 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5409 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5410 msm_routing_put_audio_mixer),
5411 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5412 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5413 msm_routing_put_audio_mixer),
5414 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5415 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5416 msm_routing_put_audio_mixer),
5417 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5418 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5419 msm_routing_put_audio_mixer),
5420 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5421 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5422 msm_routing_put_audio_mixer),
5423 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5424 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5425 msm_routing_put_audio_mixer),
5426 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5427 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5428 msm_routing_put_audio_mixer),
5429 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5430 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5431 msm_routing_put_audio_mixer),
5432 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5433 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5434 msm_routing_put_audio_mixer),
5435 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5436 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5437 msm_routing_put_audio_mixer),
5438 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5439 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5440 msm_routing_put_audio_mixer),
5441 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5442 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5443 msm_routing_put_audio_mixer),
5444 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5445 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5446 msm_routing_put_audio_mixer),
5447 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5448 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5449 msm_routing_put_audio_mixer),
5450 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5451 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5452 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305453 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5454 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5455 msm_routing_put_audio_mixer),
5456 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5457 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5458 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305459};
5460
5461static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5462 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5463 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5464 msm_routing_put_audio_mixer),
5465 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5466 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5467 msm_routing_put_audio_mixer),
5468 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5469 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5470 msm_routing_put_audio_mixer),
5471 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5472 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5473 msm_routing_put_audio_mixer),
5474 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5475 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5476 msm_routing_put_audio_mixer),
5477 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5478 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5479 msm_routing_put_audio_mixer),
5480 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5481 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5482 msm_routing_put_audio_mixer),
5483 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5484 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5485 msm_routing_put_audio_mixer),
5486 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5487 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5488 msm_routing_put_audio_mixer),
5489 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5490 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5491 msm_routing_put_audio_mixer),
5492 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5493 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5494 msm_routing_put_audio_mixer),
5495 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5496 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5497 msm_routing_put_audio_mixer),
5498 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5499 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5500 msm_routing_put_audio_mixer),
5501 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5502 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5503 msm_routing_put_audio_mixer),
5504 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5505 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5506 msm_routing_put_audio_mixer),
5507 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5508 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5509 msm_routing_put_audio_mixer),
5510};
5511
5512static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5513 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5514 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5515 msm_routing_put_audio_mixer),
5516 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5517 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5518 msm_routing_put_audio_mixer),
5519 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5520 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5521 msm_routing_put_audio_mixer),
5522 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5523 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5524 msm_routing_put_audio_mixer),
5525 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5526 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5527 msm_routing_put_audio_mixer),
5528 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5529 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5530 msm_routing_put_audio_mixer),
5531 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5532 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5533 msm_routing_put_audio_mixer),
5534 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5535 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5536 msm_routing_put_audio_mixer),
5537 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5538 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5539 msm_routing_put_audio_mixer),
5540 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5541 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5542 msm_routing_put_audio_mixer),
5543 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5544 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5545 msm_routing_put_audio_mixer),
5546 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5547 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5548 msm_routing_put_audio_mixer),
5549 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5550 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5551 msm_routing_put_audio_mixer),
5552 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5553 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5554 msm_routing_put_audio_mixer),
5555 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5556 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5557 msm_routing_put_audio_mixer),
5558 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5559 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5560 msm_routing_put_audio_mixer),
5561};
5562
Rohit Kumara5077932017-09-10 22:05:05 +05305563static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5564 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5565 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5566 msm_routing_put_audio_mixer),
5567 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5568 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5569 msm_routing_put_audio_mixer),
5570 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5571 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5572 msm_routing_put_audio_mixer),
5573 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5574 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5575 msm_routing_put_audio_mixer),
5576 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5577 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5578 msm_routing_put_audio_mixer),
5579 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5580 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5581 msm_routing_put_audio_mixer),
5582 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5583 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5584 msm_routing_put_audio_mixer),
5585 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5586 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5587 msm_routing_put_audio_mixer),
5588 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5589 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5590 msm_routing_put_audio_mixer),
5591 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5592 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5593 msm_routing_put_audio_mixer),
5594 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5595 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5596 msm_routing_put_audio_mixer),
5597 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5598 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5599 msm_routing_put_audio_mixer),
5600 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5601 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5602 msm_routing_put_audio_mixer),
5603 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5604 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5605 msm_routing_put_audio_mixer),
5606 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5607 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5608 msm_routing_put_audio_mixer),
5609 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5610 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5611 msm_routing_put_audio_mixer),
5612};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305613static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5614 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5615 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5616 msm_routing_put_audio_mixer),
5617 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5618 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5619 msm_routing_put_audio_mixer),
5620 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5621 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5622 msm_routing_put_audio_mixer),
5623 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5624 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5625 msm_routing_put_audio_mixer),
5626 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5627 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5628 msm_routing_put_audio_mixer),
5629 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5630 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5631 msm_routing_put_audio_mixer),
5632 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5633 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5634 msm_routing_put_audio_mixer),
5635 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5636 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5637 msm_routing_put_audio_mixer),
5638 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5639 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5640 msm_routing_put_audio_mixer),
5641 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5642 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5643 msm_routing_put_audio_mixer),
5644 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5645 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5646 msm_routing_put_audio_mixer),
5647 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5648 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5649 msm_routing_put_audio_mixer),
5650 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5651 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5652 msm_routing_put_audio_mixer),
5653 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5654 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5655 msm_routing_put_audio_mixer),
5656 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5657 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5658 msm_routing_put_audio_mixer),
5659 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5660 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5661 msm_routing_put_audio_mixer),
5662};
5663
5664static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5665 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5666 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5667 msm_routing_put_audio_mixer),
5668 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5669 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5670 msm_routing_put_audio_mixer),
5671 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5672 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5673 msm_routing_put_audio_mixer),
5674 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5675 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5676 msm_routing_put_audio_mixer),
5677 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5678 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5679 msm_routing_put_audio_mixer),
5680 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5681 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5682 msm_routing_put_audio_mixer),
5683 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5684 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5685 msm_routing_put_audio_mixer),
5686 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5687 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5688 msm_routing_put_audio_mixer),
5689 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5690 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5691 msm_routing_put_audio_mixer),
5692 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5693 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5694 msm_routing_put_audio_mixer),
5695 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5696 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5697 msm_routing_put_audio_mixer),
5698 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5699 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5700 msm_routing_put_audio_mixer),
5701 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5702 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5703 msm_routing_put_audio_mixer),
5704 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5705 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5706 msm_routing_put_audio_mixer),
5707 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5708 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5709 msm_routing_put_audio_mixer),
5710 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5711 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5712 msm_routing_put_audio_mixer),
5713};
5714
5715static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5716 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5717 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5718 msm_routing_put_audio_mixer),
5719 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5720 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5721 msm_routing_put_audio_mixer),
5722 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5723 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5724 msm_routing_put_audio_mixer),
5725 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5726 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5727 msm_routing_put_audio_mixer),
5728 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5729 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5730 msm_routing_put_audio_mixer),
5731 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5732 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5733 msm_routing_put_audio_mixer),
5734 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5735 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5736 msm_routing_put_audio_mixer),
5737 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5738 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5739 msm_routing_put_audio_mixer),
5740 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5741 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5742 msm_routing_put_audio_mixer),
5743 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5744 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5745 msm_routing_put_audio_mixer),
5746 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5747 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5748 msm_routing_put_audio_mixer),
5749 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5750 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5751 msm_routing_put_audio_mixer),
5752 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5753 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5754 msm_routing_put_audio_mixer),
5755 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5756 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5757 msm_routing_put_audio_mixer),
5758 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5759 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5760 msm_routing_put_audio_mixer),
5761 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5762 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5763 msm_routing_put_audio_mixer),
5764};
5765
5766static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5767 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5768 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5769 msm_routing_put_audio_mixer),
5770 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5771 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5772 msm_routing_put_audio_mixer),
5773 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5774 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5775 msm_routing_put_audio_mixer),
5776 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5777 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5778 msm_routing_put_audio_mixer),
5779 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5780 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5781 msm_routing_put_audio_mixer),
5782 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5783 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5784 msm_routing_put_audio_mixer),
5785 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5786 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5787 msm_routing_put_audio_mixer),
5788 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5789 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5790 msm_routing_put_audio_mixer),
5791 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5792 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5793 msm_routing_put_audio_mixer),
5794 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5795 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5796 msm_routing_put_audio_mixer),
5797 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5798 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5799 msm_routing_put_audio_mixer),
5800 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5801 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5802 msm_routing_put_audio_mixer),
5803 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5804 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5805 msm_routing_put_audio_mixer),
5806 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5807 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5808 msm_routing_put_audio_mixer),
5809 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5810 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5811 msm_routing_put_audio_mixer),
5812 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5813 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5814 msm_routing_put_audio_mixer),
5815};
5816
5817static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5818 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5819 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5820 msm_routing_put_audio_mixer),
5821 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5822 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5823 msm_routing_put_audio_mixer),
5824 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5825 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5826 msm_routing_put_audio_mixer),
5827 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5828 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5829 msm_routing_put_audio_mixer),
5830 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5831 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5832 msm_routing_put_audio_mixer),
5833 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5834 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5835 msm_routing_put_audio_mixer),
5836 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5837 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5838 msm_routing_put_audio_mixer),
5839 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5840 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5841 msm_routing_put_audio_mixer),
5842 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5843 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5844 msm_routing_put_audio_mixer),
5845 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5846 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5847 msm_routing_put_audio_mixer),
5848 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5849 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5850 msm_routing_put_audio_mixer),
5851 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5852 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5853 msm_routing_put_audio_mixer),
5854 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5855 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5856 msm_routing_put_audio_mixer),
5857 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5858 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5859 msm_routing_put_audio_mixer),
5860 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5861 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5862 msm_routing_put_audio_mixer),
5863 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5864 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5865 msm_routing_put_audio_mixer),
5866};
5867
5868static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5869 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5870 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5871 msm_routing_put_audio_mixer),
5872 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5873 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5874 msm_routing_put_audio_mixer),
5875 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5876 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5877 msm_routing_put_audio_mixer),
5878 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5879 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5880 msm_routing_put_audio_mixer),
5881 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5882 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5883 msm_routing_put_audio_mixer),
5884 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5885 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5886 msm_routing_put_audio_mixer),
5887 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5888 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5889 msm_routing_put_audio_mixer),
5890 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5891 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5892 msm_routing_put_audio_mixer),
5893 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5894 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5895 msm_routing_put_audio_mixer),
5896 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5897 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5898 msm_routing_put_audio_mixer),
5899 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5900 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5901 msm_routing_put_audio_mixer),
5902 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5903 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5904 msm_routing_put_audio_mixer),
5905 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5906 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5907 msm_routing_put_audio_mixer),
5908 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5909 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5910 msm_routing_put_audio_mixer),
5911 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5912 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5913 msm_routing_put_audio_mixer),
5914 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5915 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5916 msm_routing_put_audio_mixer),
5917};
5918
5919static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
5920 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5921 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5922 msm_routing_put_audio_mixer),
5923 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5924 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5925 msm_routing_put_audio_mixer),
5926 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5927 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5928 msm_routing_put_audio_mixer),
5929 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5930 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5931 msm_routing_put_audio_mixer),
5932 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5933 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5934 msm_routing_put_audio_mixer),
5935 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5936 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5937 msm_routing_put_audio_mixer),
5938 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5939 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5940 msm_routing_put_audio_mixer),
5941 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5942 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5943 msm_routing_put_audio_mixer),
5944 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5945 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5946 msm_routing_put_audio_mixer),
5947 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5948 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5949 msm_routing_put_audio_mixer),
5950 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5951 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5952 msm_routing_put_audio_mixer),
5953 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5954 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5955 msm_routing_put_audio_mixer),
5956 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5957 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5958 msm_routing_put_audio_mixer),
5959 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5960 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5961 msm_routing_put_audio_mixer),
5962 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5963 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5964 msm_routing_put_audio_mixer),
5965 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5966 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5967 msm_routing_put_audio_mixer),
5968};
5969
5970static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
5971 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5972 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5973 msm_routing_put_audio_mixer),
5974 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5975 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5976 msm_routing_put_audio_mixer),
5977 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5978 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5979 msm_routing_put_audio_mixer),
5980 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5981 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5982 msm_routing_put_audio_mixer),
5983 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5984 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5985 msm_routing_put_audio_mixer),
5986 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5987 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5988 msm_routing_put_audio_mixer),
5989 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5990 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5991 msm_routing_put_audio_mixer),
5992 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5993 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5994 msm_routing_put_audio_mixer),
5995 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5996 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5997 msm_routing_put_audio_mixer),
5998 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5999 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6000 msm_routing_put_audio_mixer),
6001 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6002 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6003 msm_routing_put_audio_mixer),
6004 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6005 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6006 msm_routing_put_audio_mixer),
6007 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6008 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6009 msm_routing_put_audio_mixer),
6010 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6011 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6012 msm_routing_put_audio_mixer),
6013 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6014 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6015 msm_routing_put_audio_mixer),
6016 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6017 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6018 msm_routing_put_audio_mixer),
6019};
6020
6021static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
6022 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6023 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6024 msm_routing_put_audio_mixer),
6025 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6026 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6027 msm_routing_put_audio_mixer),
6028 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6029 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6030 msm_routing_put_audio_mixer),
6031 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6032 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6033 msm_routing_put_audio_mixer),
6034 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6035 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6036 msm_routing_put_audio_mixer),
6037 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6038 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6039 msm_routing_put_audio_mixer),
6040 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6041 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6042 msm_routing_put_audio_mixer),
6043 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6044 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6045 msm_routing_put_audio_mixer),
6046 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6047 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6048 msm_routing_put_audio_mixer),
6049 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6050 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6051 msm_routing_put_audio_mixer),
6052 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6053 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6054 msm_routing_put_audio_mixer),
6055 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6056 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6057 msm_routing_put_audio_mixer),
6058 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6059 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6060 msm_routing_put_audio_mixer),
6061 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6062 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6063 msm_routing_put_audio_mixer),
6064 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6065 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6066 msm_routing_put_audio_mixer),
6067 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6068 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6069 msm_routing_put_audio_mixer),
6070};
6071
6072static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
6073 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6074 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6075 msm_routing_put_audio_mixer),
6076 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6077 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6078 msm_routing_put_audio_mixer),
6079 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6080 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6081 msm_routing_put_audio_mixer),
6082 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6083 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6084 msm_routing_put_audio_mixer),
6085 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6086 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6087 msm_routing_put_audio_mixer),
6088 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6089 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6090 msm_routing_put_audio_mixer),
6091 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6092 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6093 msm_routing_put_audio_mixer),
6094 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6095 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6096 msm_routing_put_audio_mixer),
6097 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6098 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6099 msm_routing_put_audio_mixer),
6100 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6101 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6102 msm_routing_put_audio_mixer),
6103 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6104 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6105 msm_routing_put_audio_mixer),
6106 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6107 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6108 msm_routing_put_audio_mixer),
6109 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6110 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6111 msm_routing_put_audio_mixer),
6112 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6113 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6114 msm_routing_put_audio_mixer),
6115 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6116 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6117 msm_routing_put_audio_mixer),
6118 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6119 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6120 msm_routing_put_audio_mixer),
6121};
6122
6123static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
6124 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6125 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6126 msm_routing_put_audio_mixer),
6127 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6128 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6129 msm_routing_put_audio_mixer),
6130 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6131 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6132 msm_routing_put_audio_mixer),
6133 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6134 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6135 msm_routing_put_audio_mixer),
6136 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6137 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6138 msm_routing_put_audio_mixer),
6139 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6140 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6141 msm_routing_put_audio_mixer),
6142 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6143 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6144 msm_routing_put_audio_mixer),
6145 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6146 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6147 msm_routing_put_audio_mixer),
6148 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6149 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6150 msm_routing_put_audio_mixer),
6151 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6152 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6153 msm_routing_put_audio_mixer),
6154 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6155 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6156 msm_routing_put_audio_mixer),
6157 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6158 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6159 msm_routing_put_audio_mixer),
6160 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6161 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6162 msm_routing_put_audio_mixer),
6163 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6164 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6165 msm_routing_put_audio_mixer),
6166 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6167 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6168 msm_routing_put_audio_mixer),
6169 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6170 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6171 msm_routing_put_audio_mixer),
6172};
6173
6174static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
6175 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6176 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6177 msm_routing_put_audio_mixer),
6178 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6179 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6180 msm_routing_put_audio_mixer),
6181 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6182 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6183 msm_routing_put_audio_mixer),
6184 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6185 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6186 msm_routing_put_audio_mixer),
6187 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6188 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6189 msm_routing_put_audio_mixer),
6190 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6191 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6192 msm_routing_put_audio_mixer),
6193 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6194 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6195 msm_routing_put_audio_mixer),
6196 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6197 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6198 msm_routing_put_audio_mixer),
6199 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6200 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6201 msm_routing_put_audio_mixer),
6202 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6203 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6204 msm_routing_put_audio_mixer),
6205 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6206 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6207 msm_routing_put_audio_mixer),
6208 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6209 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6210 msm_routing_put_audio_mixer),
6211 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6212 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6213 msm_routing_put_audio_mixer),
6214 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6215 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6216 msm_routing_put_audio_mixer),
6217 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6218 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6219 msm_routing_put_audio_mixer),
6220 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6221 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6222 msm_routing_put_audio_mixer),
6223};
6224
6225static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
6226 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6227 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6228 msm_routing_put_audio_mixer),
6229 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6230 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6231 msm_routing_put_audio_mixer),
6232 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6233 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6234 msm_routing_put_audio_mixer),
6235 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6236 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6237 msm_routing_put_audio_mixer),
6238 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6239 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6240 msm_routing_put_audio_mixer),
6241 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6242 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6243 msm_routing_put_audio_mixer),
6244 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6245 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6246 msm_routing_put_audio_mixer),
6247 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6248 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6249 msm_routing_put_audio_mixer),
6250 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6251 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6252 msm_routing_put_audio_mixer),
6253 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6254 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6255 msm_routing_put_audio_mixer),
6256 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6257 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6258 msm_routing_put_audio_mixer),
6259 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6260 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6261 msm_routing_put_audio_mixer),
6262 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6263 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6264 msm_routing_put_audio_mixer),
6265 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6266 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6267 msm_routing_put_audio_mixer),
6268 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6269 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6270 msm_routing_put_audio_mixer),
6271 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6272 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6273 msm_routing_put_audio_mixer),
6274};
6275
6276static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
6277 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6278 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6279 msm_routing_put_audio_mixer),
6280 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6281 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6282 msm_routing_put_audio_mixer),
6283 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6284 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6285 msm_routing_put_audio_mixer),
6286 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6287 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6288 msm_routing_put_audio_mixer),
6289 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6290 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6291 msm_routing_put_audio_mixer),
6292 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6293 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6294 msm_routing_put_audio_mixer),
6295 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6296 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6297 msm_routing_put_audio_mixer),
6298 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6299 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6300 msm_routing_put_audio_mixer),
6301 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6302 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6303 msm_routing_put_audio_mixer),
6304 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6305 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6306 msm_routing_put_audio_mixer),
6307 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6308 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6309 msm_routing_put_audio_mixer),
6310 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6311 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6312 msm_routing_put_audio_mixer),
6313 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6314 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6315 msm_routing_put_audio_mixer),
6316 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6317 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6318 msm_routing_put_audio_mixer),
6319 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6320 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6321 msm_routing_put_audio_mixer),
6322 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6323 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6324 msm_routing_put_audio_mixer),
6325};
6326
6327static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6328 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6329 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6330 msm_routing_put_audio_mixer),
6331 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6332 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6333 msm_routing_put_audio_mixer),
6334 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6335 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6336 msm_routing_put_audio_mixer),
6337 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6338 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6339 msm_routing_put_audio_mixer),
6340 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6341 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6342 msm_routing_put_audio_mixer),
6343 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6344 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6345 msm_routing_put_audio_mixer),
6346 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6347 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6348 msm_routing_put_audio_mixer),
6349 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6350 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6351 msm_routing_put_audio_mixer),
6352 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6353 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6354 msm_routing_put_audio_mixer),
6355 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6356 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6357 msm_routing_put_audio_mixer),
6358 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6359 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6360 msm_routing_put_audio_mixer),
6361 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6362 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6363 msm_routing_put_audio_mixer),
6364 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6365 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6366 msm_routing_put_audio_mixer),
6367 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6368 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6369 msm_routing_put_audio_mixer),
6370 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6371 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6372 msm_routing_put_audio_mixer),
6373 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6374 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6375 msm_routing_put_audio_mixer),
6376};
6377
6378static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6379 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6380 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6381 msm_routing_put_audio_mixer),
6382 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6383 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6384 msm_routing_put_audio_mixer),
6385 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6386 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6387 msm_routing_put_audio_mixer),
6388 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6389 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6390 msm_routing_put_audio_mixer),
6391 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6392 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6393 msm_routing_put_audio_mixer),
6394 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6395 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6396 msm_routing_put_audio_mixer),
6397 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6398 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6399 msm_routing_put_audio_mixer),
6400 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6401 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6402 msm_routing_put_audio_mixer),
6403 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6404 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6405 msm_routing_put_audio_mixer),
6406 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6407 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6408 msm_routing_put_audio_mixer),
6409 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6410 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6411 msm_routing_put_audio_mixer),
6412 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6413 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6414 msm_routing_put_audio_mixer),
6415 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6416 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6417 msm_routing_put_audio_mixer),
6418 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6419 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6420 msm_routing_put_audio_mixer),
6421 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6422 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6423 msm_routing_put_audio_mixer),
6424 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6425 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6426 msm_routing_put_audio_mixer),
6427};
6428
6429static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6430 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6431 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6432 msm_routing_put_audio_mixer),
6433 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6434 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6435 msm_routing_put_audio_mixer),
6436 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6437 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6438 msm_routing_put_audio_mixer),
6439 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6440 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6441 msm_routing_put_audio_mixer),
6442 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6443 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6444 msm_routing_put_audio_mixer),
6445 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6446 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6447 msm_routing_put_audio_mixer),
6448 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6449 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6450 msm_routing_put_audio_mixer),
6451 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6452 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6453 msm_routing_put_audio_mixer),
6454 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6455 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6456 msm_routing_put_audio_mixer),
6457 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6458 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6459 msm_routing_put_audio_mixer),
6460 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6461 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6462 msm_routing_put_audio_mixer),
6463 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6464 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6465 msm_routing_put_audio_mixer),
6466 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6467 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6468 msm_routing_put_audio_mixer),
6469 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6470 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6471 msm_routing_put_audio_mixer),
6472 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6473 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6474 msm_routing_put_audio_mixer),
6475 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6476 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6477 msm_routing_put_audio_mixer),
6478 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6479 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6480 msm_routing_put_audio_mixer),
6481};
6482
6483static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6484 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6485 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6486 msm_routing_put_audio_mixer),
6487 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6488 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6489 msm_routing_put_audio_mixer),
6490 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6491 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6492 msm_routing_put_audio_mixer),
6493 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6494 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6495 msm_routing_put_audio_mixer),
6496 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6497 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6498 msm_routing_put_audio_mixer),
6499 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6500 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6501 msm_routing_put_audio_mixer),
6502 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6503 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6504 msm_routing_put_audio_mixer),
6505 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6506 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6507 msm_routing_put_audio_mixer),
6508 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6509 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6510 msm_routing_put_audio_mixer),
6511 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6512 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6513 msm_routing_put_audio_mixer),
6514 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6515 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6516 msm_routing_put_audio_mixer),
6517 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6518 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6519 msm_routing_put_audio_mixer),
6520 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6521 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6522 msm_routing_put_audio_mixer),
6523 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6524 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6525 msm_routing_put_audio_mixer),
6526 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6527 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6528 msm_routing_put_audio_mixer),
6529 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6530 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6531 msm_routing_put_audio_mixer),
6532};
6533
6534static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6535 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6536 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6537 msm_routing_put_audio_mixer),
6538 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6539 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6540 msm_routing_put_audio_mixer),
6541 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6542 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6543 msm_routing_put_audio_mixer),
6544 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6545 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6546 msm_routing_put_audio_mixer),
6547 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6548 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6549 msm_routing_put_audio_mixer),
6550 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6551 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6552 msm_routing_put_audio_mixer),
6553 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6554 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6555 msm_routing_put_audio_mixer),
6556 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6557 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6558 msm_routing_put_audio_mixer),
6559 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6560 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6561 msm_routing_put_audio_mixer),
6562 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6563 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6564 msm_routing_put_audio_mixer),
6565 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6566 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6567 msm_routing_put_audio_mixer),
6568 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6569 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6570 msm_routing_put_audio_mixer),
6571 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6572 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6573 msm_routing_put_audio_mixer),
6574 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6575 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6576 msm_routing_put_audio_mixer),
6577 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6578 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6579 msm_routing_put_audio_mixer),
6580 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6581 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6582 msm_routing_put_audio_mixer),
6583 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6584 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6585 msm_routing_put_audio_mixer),
6586};
6587
6588static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6589 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6590 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6591 msm_routing_put_audio_mixer),
6592 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6593 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6594 msm_routing_put_audio_mixer),
6595 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6596 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6597 msm_routing_put_audio_mixer),
6598 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6599 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6600 msm_routing_put_audio_mixer),
6601 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6602 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6603 msm_routing_put_audio_mixer),
6604 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6605 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6606 msm_routing_put_audio_mixer),
6607 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6608 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6609 msm_routing_put_audio_mixer),
6610 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6611 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6612 msm_routing_put_audio_mixer),
6613 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6614 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6615 msm_routing_put_audio_mixer),
6616 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6617 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6618 msm_routing_put_audio_mixer),
6619 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6620 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6621 msm_routing_put_audio_mixer),
6622 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6623 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6624 msm_routing_put_audio_mixer),
6625 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6626 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6627 msm_routing_put_audio_mixer),
6628 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6629 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6630 msm_routing_put_audio_mixer),
6631 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6632 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6633 msm_routing_put_audio_mixer),
6634 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6635 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6636 msm_routing_put_audio_mixer),
6637 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6638 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6639 msm_routing_put_audio_mixer),
6640};
6641
6642static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6643 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6644 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6645 msm_routing_put_audio_mixer),
6646 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6647 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6648 msm_routing_put_audio_mixer),
6649 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6650 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6651 msm_routing_put_audio_mixer),
6652 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6653 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6654 msm_routing_put_audio_mixer),
6655 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6656 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6657 msm_routing_put_audio_mixer),
6658 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6659 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6660 msm_routing_put_audio_mixer),
6661 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6662 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6663 msm_routing_put_audio_mixer),
6664 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6665 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6666 msm_routing_put_audio_mixer),
6667 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6668 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6669 msm_routing_put_audio_mixer),
6670 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6671 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6672 msm_routing_put_audio_mixer),
6673 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6674 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6675 msm_routing_put_audio_mixer),
6676 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6677 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6678 msm_routing_put_audio_mixer),
6679 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6680 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6681 msm_routing_put_audio_mixer),
6682 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6683 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6684 msm_routing_put_audio_mixer),
6685 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6686 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6687 msm_routing_put_audio_mixer),
6688 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6689 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6690 msm_routing_put_audio_mixer),
6691 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6692 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6693 msm_routing_put_audio_mixer),
6694};
6695
Rohit Kumara5077932017-09-10 22:05:05 +05306696static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6697 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6698 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6699 msm_routing_put_audio_mixer),
6700 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6701 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6702 msm_routing_put_audio_mixer),
6703 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6704 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6705 msm_routing_put_audio_mixer),
6706 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6707 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6708 msm_routing_put_audio_mixer),
6709 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6710 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6711 msm_routing_put_audio_mixer),
6712 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6713 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6714 msm_routing_put_audio_mixer),
6715 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6716 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6717 msm_routing_put_audio_mixer),
6718 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6719 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6720 msm_routing_put_audio_mixer),
6721 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6722 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6723 msm_routing_put_audio_mixer),
6724 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6725 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6726 msm_routing_put_audio_mixer),
6727 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6728 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6729 msm_routing_put_audio_mixer),
6730 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6731 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6732 msm_routing_put_audio_mixer),
6733 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6734 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6735 msm_routing_put_audio_mixer),
6736 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6737 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6738 msm_routing_put_audio_mixer),
6739 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6740 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6741 msm_routing_put_audio_mixer),
6742 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6743 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6744 msm_routing_put_audio_mixer),
6745 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6746 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6747 msm_routing_put_audio_mixer),
6748};
6749
6750static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6751 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6752 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6753 msm_routing_put_audio_mixer),
6754 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6755 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6756 msm_routing_put_audio_mixer),
6757 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6758 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6759 msm_routing_put_audio_mixer),
6760 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6761 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6762 msm_routing_put_audio_mixer),
6763 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6764 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6765 msm_routing_put_audio_mixer),
6766 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6767 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6768 msm_routing_put_audio_mixer),
6769 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6770 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6771 msm_routing_put_audio_mixer),
6772 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6773 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6774 msm_routing_put_audio_mixer),
6775 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6776 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6777 msm_routing_put_audio_mixer),
6778 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6779 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6780 msm_routing_put_audio_mixer),
6781 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6782 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6783 msm_routing_put_audio_mixer),
6784 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6785 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6786 msm_routing_put_audio_mixer),
6787 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6788 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6789 msm_routing_put_audio_mixer),
6790 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6791 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6792 msm_routing_put_audio_mixer),
6793 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6794 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6795 msm_routing_put_audio_mixer),
6796 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6797 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6798 msm_routing_put_audio_mixer),
6799};
6800
6801static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6802 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6803 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6804 msm_routing_put_audio_mixer),
6805 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6806 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6807 msm_routing_put_audio_mixer),
6808 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6809 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6810 msm_routing_put_audio_mixer),
6811 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6812 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6813 msm_routing_put_audio_mixer),
6814 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6815 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6816 msm_routing_put_audio_mixer),
6817 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6818 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6819 msm_routing_put_audio_mixer),
6820 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6821 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6822 msm_routing_put_audio_mixer),
6823 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6824 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6825 msm_routing_put_audio_mixer),
6826 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6827 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6828 msm_routing_put_audio_mixer),
6829 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6830 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6831 msm_routing_put_audio_mixer),
6832 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6833 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6834 msm_routing_put_audio_mixer),
6835 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6836 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6837 msm_routing_put_audio_mixer),
6838 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6839 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6840 msm_routing_put_audio_mixer),
6841 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6842 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6843 msm_routing_put_audio_mixer),
6844 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6845 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6846 msm_routing_put_audio_mixer),
6847 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6848 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6849 msm_routing_put_audio_mixer),
6850 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6851 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6852 msm_routing_put_audio_mixer),
6853};
6854
6855static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6856 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6857 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6858 msm_routing_put_audio_mixer),
6859 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6860 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6861 msm_routing_put_audio_mixer),
6862 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6863 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6864 msm_routing_put_audio_mixer),
6865 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6866 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6867 msm_routing_put_audio_mixer),
6868 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6869 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6870 msm_routing_put_audio_mixer),
6871 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6872 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6873 msm_routing_put_audio_mixer),
6874 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6875 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6876 msm_routing_put_audio_mixer),
6877 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6878 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6879 msm_routing_put_audio_mixer),
6880 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6881 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6882 msm_routing_put_audio_mixer),
6883 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6884 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6885 msm_routing_put_audio_mixer),
6886 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6887 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6888 msm_routing_put_audio_mixer),
6889 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6890 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6891 msm_routing_put_audio_mixer),
6892 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6893 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6894 msm_routing_put_audio_mixer),
6895 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6896 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6897 msm_routing_put_audio_mixer),
6898 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6899 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6900 msm_routing_put_audio_mixer),
6901 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6902 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6903 msm_routing_put_audio_mixer),
6904 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6905 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6906 msm_routing_put_audio_mixer),
6907};
6908
6909static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
6910 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6911 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6912 msm_routing_put_audio_mixer),
6913 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6914 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6915 msm_routing_put_audio_mixer),
6916 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6917 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6918 msm_routing_put_audio_mixer),
6919 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6920 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6921 msm_routing_put_audio_mixer),
6922 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6923 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6924 msm_routing_put_audio_mixer),
6925 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6926 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6927 msm_routing_put_audio_mixer),
6928 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6929 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6930 msm_routing_put_audio_mixer),
6931 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6932 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6933 msm_routing_put_audio_mixer),
6934 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6935 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6936 msm_routing_put_audio_mixer),
6937 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6938 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6939 msm_routing_put_audio_mixer),
6940 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6941 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6942 msm_routing_put_audio_mixer),
6943 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6944 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6945 msm_routing_put_audio_mixer),
6946 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6947 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6948 msm_routing_put_audio_mixer),
6949 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6950 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6951 msm_routing_put_audio_mixer),
6952 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6953 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6954 msm_routing_put_audio_mixer),
6955 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6956 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6957 msm_routing_put_audio_mixer),
6958 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6959 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6960 msm_routing_put_audio_mixer),
6961};
6962
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306963static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
6964 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
6965 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6966 msm_routing_put_audio_mixer),
6967 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6968 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6969 msm_routing_put_audio_mixer),
6970 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6971 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6972 msm_routing_put_audio_mixer),
6973 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6974 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6975 msm_routing_put_audio_mixer),
6976 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6977 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6978 msm_routing_put_audio_mixer),
6979 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6980 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6981 msm_routing_put_audio_mixer),
6982 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6983 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6984 msm_routing_put_audio_mixer),
6985 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6986 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6987 msm_routing_put_audio_mixer),
6988 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6989 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6990 msm_routing_put_audio_mixer),
6991 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6992 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6993 msm_routing_put_audio_mixer),
6994 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6995 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6996 msm_routing_put_audio_mixer),
6997 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6998 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6999 msm_routing_put_audio_mixer),
7000 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7001 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7002 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307003 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7004 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7005 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307006 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7007 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7008 msm_routing_put_audio_mixer),
7009 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7010 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7011 msm_routing_put_audio_mixer),
7012 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7013 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7014 msm_routing_put_audio_mixer),
7015 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7016 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7017 msm_routing_put_audio_mixer),
7018 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7019 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7020 msm_routing_put_audio_mixer),
7021 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
7022 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7023 msm_routing_put_audio_mixer),
7024 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7025 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7026 msm_routing_put_audio_mixer),
7027 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7028 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7029 msm_routing_put_audio_mixer),
7030 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7031 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7032 msm_routing_put_audio_mixer),
7033 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7034 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7035 msm_routing_put_audio_mixer),
7036 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7037 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7038 msm_routing_put_audio_mixer),
7039 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7040 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7041 msm_routing_put_audio_mixer),
7042 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7043 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7044 msm_routing_put_audio_mixer),
7045 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7046 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7047 msm_routing_put_audio_mixer),
7048 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7049 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7050 msm_routing_put_audio_mixer),
7051 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7052 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7053 msm_routing_put_audio_mixer),
7054 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7055 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7056 msm_routing_put_audio_mixer),
7057 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7058 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7059 msm_routing_put_audio_mixer),
7060 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7061 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7062 msm_routing_put_audio_mixer),
7063 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7064 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7065 msm_routing_put_audio_mixer),
7066 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7067 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7068 msm_routing_put_audio_mixer),
7069 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7070 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7071 msm_routing_put_audio_mixer),
7072 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7073 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7074 msm_routing_put_audio_mixer),
7075 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7076 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7077 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307078 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7079 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7080 msm_routing_put_audio_mixer),
7081 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7082 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7083 msm_routing_put_audio_mixer),
7084 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7085 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7086 msm_routing_put_audio_mixer),
7087 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7088 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7089 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307090 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7091 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7092 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307093 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7094 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7095 msm_routing_put_audio_mixer),
7096 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7097 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7098 msm_routing_put_audio_mixer),
7099 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7100 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7101 msm_routing_put_audio_mixer),
7102};
7103
7104static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
7105 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7106 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7107 msm_routing_put_audio_mixer),
7108 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7109 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7110 msm_routing_put_audio_mixer),
7111 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7112 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7113 msm_routing_put_audio_mixer),
7114 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7115 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7116 msm_routing_put_audio_mixer),
7117 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7118 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7119 msm_routing_put_audio_mixer),
7120 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7121 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7122 msm_routing_put_audio_mixer),
7123 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7124 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7125 msm_routing_put_audio_mixer),
7126 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7127 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7128 msm_routing_put_audio_mixer),
7129 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7130 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7131 msm_routing_put_audio_mixer),
7132 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7133 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7134 msm_routing_put_audio_mixer),
7135 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
7136 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7137 msm_routing_put_audio_mixer),
7138 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7139 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7140 msm_routing_put_audio_mixer),
7141 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7142 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7143 msm_routing_put_audio_mixer),
7144 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7145 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7146 msm_routing_put_audio_mixer),
7147 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7148 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7149 msm_routing_put_audio_mixer),
7150 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7151 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7152 msm_routing_put_audio_mixer),
7153 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7154 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7155 msm_routing_put_audio_mixer),
7156 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7157 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7158 msm_routing_put_audio_mixer),
7159 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7160 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7161 msm_routing_put_audio_mixer),
7162 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7163 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7164 msm_routing_put_audio_mixer),
7165 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7166 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7167 msm_routing_put_audio_mixer),
7168 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7169 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7170 msm_routing_put_audio_mixer),
7171 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7172 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7173 msm_routing_put_audio_mixer),
7174 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7175 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7176 msm_routing_put_audio_mixer),
7177 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7178 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7179 msm_routing_put_audio_mixer),
7180 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7181 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7182 msm_routing_put_audio_mixer),
7183 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7184 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7185 msm_routing_put_audio_mixer),
7186 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7187 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7188 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307189 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7190 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7191 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307192 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7193 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7194 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307195 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7196 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7197 msm_routing_put_audio_mixer),
7198 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7199 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7200 msm_routing_put_audio_mixer),
7201 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7202 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7203 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307204 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7205 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7206 msm_routing_put_audio_mixer),
7207 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7208 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7209 msm_routing_put_audio_mixer),
7210};
7211
7212static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7213 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7214 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7215 msm_routing_put_audio_mixer),
7216 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7217 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7218 msm_routing_put_audio_mixer),
7219 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7220 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7221 msm_routing_put_audio_mixer),
7222 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7223 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7224 msm_routing_put_audio_mixer),
7225 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7226 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7227 msm_routing_put_audio_mixer),
7228 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7229 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7230 msm_routing_put_audio_mixer),
7231 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7232 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7233 msm_routing_put_audio_mixer),
7234 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7235 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7236 msm_routing_put_audio_mixer),
7237 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7238 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7239 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307240 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7241 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7242 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307243 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7244 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7245 msm_routing_put_audio_mixer),
7246 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7247 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7248 msm_routing_put_audio_mixer),
7249 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7250 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7251 msm_routing_put_audio_mixer),
7252 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7253 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7254 msm_routing_put_audio_mixer),
7255 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7256 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7257 msm_routing_put_audio_mixer),
7258 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7259 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7260 msm_routing_put_audio_mixer),
7261 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7262 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7263 msm_routing_put_audio_mixer),
7264 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7265 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7266 msm_routing_put_audio_mixer),
7267 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7268 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7269 msm_routing_put_audio_mixer),
7270 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7271 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7272 msm_routing_put_audio_mixer),
7273 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7274 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7275 msm_routing_put_audio_mixer),
7276 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7277 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7278 msm_routing_put_audio_mixer),
7279 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7280 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7281 msm_routing_put_audio_mixer),
7282 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7283 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7284 msm_routing_put_audio_mixer),
7285 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7286 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7287 msm_routing_put_audio_mixer),
7288 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7289 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7290 msm_routing_put_audio_mixer),
7291 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7292 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7293 msm_routing_put_audio_mixer),
7294 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7295 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7296 msm_routing_put_audio_mixer),
7297 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7298 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7299 msm_routing_put_audio_mixer),
7300 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7301 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7302 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307303 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7304 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7305 msm_routing_put_audio_mixer),
7306 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7307 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7308 msm_routing_put_audio_mixer),
7309 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7310 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7311 msm_routing_put_audio_mixer),
7312 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7313 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7314 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307315 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7316 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7317 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307318};
7319
7320static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7321 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7322 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7323 msm_routing_put_audio_mixer),
7324 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7325 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7326 msm_routing_put_audio_mixer),
7327 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7328 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7329 msm_routing_put_audio_mixer),
7330 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7331 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7332 msm_routing_put_audio_mixer),
7333 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7334 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7335 msm_routing_put_audio_mixer),
7336 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7337 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7338 msm_routing_put_audio_mixer),
7339 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7340 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7341 msm_routing_put_audio_mixer),
7342 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7343 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7344 msm_routing_put_audio_mixer),
7345 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7346 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7347 msm_routing_put_audio_mixer),
7348 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7349 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7350 msm_routing_put_audio_mixer),
7351 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7352 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7353 msm_routing_put_audio_mixer),
7354 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7355 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7356 msm_routing_put_audio_mixer),
7357 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7358 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7359 msm_routing_put_audio_mixer),
7360 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7361 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7362 msm_routing_put_audio_mixer),
7363 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7364 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7365 msm_routing_put_audio_mixer),
7366 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7367 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7368 msm_routing_put_audio_mixer),
7369 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7370 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7371 msm_routing_put_audio_mixer),
7372 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7373 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7374 msm_routing_put_audio_mixer),
7375 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7376 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7377 msm_routing_put_audio_mixer),
7378 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7379 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7380 msm_routing_put_audio_mixer),
7381 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7382 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7383 msm_routing_put_audio_mixer),
7384 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7385 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7386 msm_routing_put_audio_mixer),
7387 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7388 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7389 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307390 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7391 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7392 msm_routing_put_audio_mixer),
7393 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7394 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7395 msm_routing_put_audio_mixer),
7396 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7397 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7398 msm_routing_put_audio_mixer),
7399 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7400 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7401 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307402 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7403 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7404 msm_routing_put_audio_mixer),
7405 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7406 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7407 msm_routing_put_audio_mixer),
7408 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7409 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7410 msm_routing_put_audio_mixer),
7411 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7412 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7413 msm_routing_put_audio_mixer),
7414 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7415 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7416 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307417 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7418 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7419 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307420 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7421 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7422 msm_routing_put_audio_mixer),
7423};
7424
7425static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7426 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7427 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7428 msm_routing_put_audio_mixer),
7429 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7430 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7431 msm_routing_put_audio_mixer),
7432 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7433 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7434 msm_routing_put_audio_mixer),
7435 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7436 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7437 msm_routing_put_audio_mixer),
7438 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7439 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7440 msm_routing_put_audio_mixer),
7441 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7442 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7443 msm_routing_put_audio_mixer),
7444 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7445 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7446 msm_routing_put_audio_mixer),
7447 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7448 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7449 msm_routing_put_audio_mixer),
7450 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7451 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7452 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307453 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7454 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7455 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307456 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7457 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7458 msm_routing_put_audio_mixer),
7459 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7460 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7461 msm_routing_put_audio_mixer),
7462 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7463 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7464 msm_routing_put_audio_mixer),
7465 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7466 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7467 msm_routing_put_audio_mixer),
7468 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7469 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7470 msm_routing_put_audio_mixer),
7471 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7472 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7473 msm_routing_put_audio_mixer),
7474 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7475 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7476 msm_routing_put_audio_mixer),
7477 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7478 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7479 msm_routing_put_audio_mixer),
7480 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7481 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7482 msm_routing_put_audio_mixer),
7483 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7484 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7485 msm_routing_put_audio_mixer),
7486 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7487 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7488 msm_routing_put_audio_mixer),
7489 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7490 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7491 msm_routing_put_audio_mixer),
7492 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7493 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7494 msm_routing_put_audio_mixer),
7495 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7496 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7497 msm_routing_put_audio_mixer),
7498 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7499 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7500 msm_routing_put_audio_mixer),
7501 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7502 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7503 msm_routing_put_audio_mixer),
7504 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7505 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7506 msm_routing_put_audio_mixer),
7507 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7508 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7509 msm_routing_put_audio_mixer),
7510 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7511 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7512 msm_routing_put_audio_mixer),
7513 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7514 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7515 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307516 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7517 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7518 msm_routing_put_audio_mixer),
7519 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7520 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7521 msm_routing_put_audio_mixer),
7522 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7523 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7524 msm_routing_put_audio_mixer),
7525 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7526 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7527 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307528 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7529 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7530 msm_routing_put_audio_mixer),
7531 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7532 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7533 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307534 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7535 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7536 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307537 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7538 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7539 msm_routing_put_audio_mixer),
7540 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7541 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7542 msm_routing_put_audio_mixer),
7543 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7544 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7545 msm_routing_put_audio_mixer),
7546};
7547
7548static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7549 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7550 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7551 msm_routing_put_audio_mixer),
7552 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7553 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7554 msm_routing_put_audio_mixer),
7555 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7556 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7557 msm_routing_put_audio_mixer),
7558 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7559 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7560 msm_routing_put_audio_mixer),
7561 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7562 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7563 msm_routing_put_audio_mixer),
7564 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7565 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7566 msm_routing_put_audio_mixer),
7567 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7568 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7569 msm_routing_put_audio_mixer),
7570 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7571 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7572 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307573 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7574 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7575 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307576 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7577 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7578 msm_routing_put_audio_mixer),
7579 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7580 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7581 msm_routing_put_audio_mixer),
7582 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7583 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7584 msm_routing_put_audio_mixer),
7585 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7586 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7587 msm_routing_put_audio_mixer),
7588 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7589 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7590 msm_routing_put_audio_mixer),
7591 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7592 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7593 msm_routing_put_audio_mixer),
7594 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7595 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7596 msm_routing_put_audio_mixer),
7597 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7598 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7599 msm_routing_put_audio_mixer),
7600 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7601 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7602 msm_routing_put_audio_mixer),
7603 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7604 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7605 msm_routing_put_audio_mixer),
7606 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7607 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7608 msm_routing_put_audio_mixer),
7609 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7610 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7611 msm_routing_put_audio_mixer),
7612 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7613 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7614 msm_routing_put_audio_mixer),
7615 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7616 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7617 msm_routing_put_audio_mixer),
7618 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7619 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7620 msm_routing_put_audio_mixer),
7621 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7622 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7623 msm_routing_put_audio_mixer),
7624 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7625 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7626 msm_routing_put_audio_mixer),
7627 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7628 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7629 msm_routing_put_audio_mixer),
7630 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7631 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7632 msm_routing_put_audio_mixer),
7633 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7634 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7635 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307636 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7637 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7638 msm_routing_put_audio_mixer),
7639 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7640 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7641 msm_routing_put_audio_mixer),
7642 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7643 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7644 msm_routing_put_audio_mixer),
7645 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7646 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7647 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307648 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7649 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7650 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307651 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7652 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7653 msm_routing_put_audio_mixer),
7654};
7655
7656static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7657 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7658 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7659 msm_routing_put_audio_mixer),
7660 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7661 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7662 msm_routing_put_audio_mixer),
7663 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7664 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7665 msm_routing_put_audio_mixer),
7666 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7667 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7668 msm_routing_put_audio_mixer),
7669 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7670 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7671 msm_routing_put_audio_mixer),
7672 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7673 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7674 msm_routing_put_audio_mixer),
7675 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7676 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7677 msm_routing_put_audio_mixer),
7678 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7679 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7680 msm_routing_put_audio_mixer),
7681 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7682 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7683 msm_routing_put_audio_mixer),
7684 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7685 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7686 msm_routing_put_audio_mixer),
7687 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7688 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7689 msm_routing_put_audio_mixer),
7690 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7691 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7692 msm_routing_put_audio_mixer),
7693 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7694 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7695 msm_routing_put_audio_mixer),
7696 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7697 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7698 msm_routing_put_audio_mixer),
7699 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7700 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7701 msm_routing_put_audio_mixer),
7702 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7703 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7704 msm_routing_put_audio_mixer),
7705 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7706 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7707 msm_routing_put_audio_mixer),
7708 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7709 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7710 msm_routing_put_audio_mixer),
7711 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7712 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7713 msm_routing_put_audio_mixer),
7714 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7715 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7716 msm_routing_put_audio_mixer),
7717 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7718 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7719 msm_routing_put_audio_mixer),
7720 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7721 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7722 msm_routing_put_audio_mixer),
7723 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7724 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7725 msm_routing_put_audio_mixer),
7726 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7727 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7728 msm_routing_put_audio_mixer),
7729 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7730 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7731 msm_routing_put_audio_mixer),
7732 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7733 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7734 msm_routing_put_audio_mixer),
7735 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7736 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7737 msm_routing_put_audio_mixer),
7738 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7739 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7740 msm_routing_put_audio_mixer),
7741 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7742 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7743 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307744 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7745 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7746 msm_routing_put_audio_mixer),
7747 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7748 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7749 msm_routing_put_audio_mixer),
7750 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7751 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7752 msm_routing_put_audio_mixer),
7753 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7754 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7755 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307756 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7757 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7758 msm_routing_put_audio_mixer),
7759 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7760 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7761 msm_routing_put_audio_mixer),
7762};
7763
Asish Bhattacharya34504582017-08-08 12:55:01 +05307764static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7765 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7766 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7767 msm_routing_put_audio_mixer),
7768 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7769 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7770 msm_routing_put_audio_mixer),
7771 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7772 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7773 msm_routing_put_audio_mixer),
7774 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7775 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7776 msm_routing_put_audio_mixer),
7777 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7778 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7779 msm_routing_put_audio_mixer),
7780 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7781 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7782 msm_routing_put_audio_mixer),
7783 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7784 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7785 msm_routing_put_audio_mixer),
7786 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7787 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7788 msm_routing_put_audio_mixer),
7789 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7790 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7791 msm_routing_put_audio_mixer),
7792 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7793 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7794 msm_routing_put_audio_mixer),
7795 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7796 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7797 msm_routing_put_audio_mixer),
7798 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7799 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7800 msm_routing_put_audio_mixer),
7801 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7802 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7803 msm_routing_put_audio_mixer),
7804 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7805 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7806 msm_routing_put_audio_mixer),
7807 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7808 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7809 msm_routing_put_audio_mixer),
7810 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7811 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7812 msm_routing_put_audio_mixer),
7813 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7814 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7815 msm_routing_put_audio_mixer),
7816 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7817 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7818 msm_routing_put_audio_mixer),
7819 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7820 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7821 msm_routing_put_audio_mixer),
7822 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7823 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7824 msm_routing_put_audio_mixer),
7825 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7826 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7827 msm_routing_put_audio_mixer),
7828 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7829 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7830 msm_routing_put_audio_mixer),
7831 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7832 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7833 msm_routing_put_audio_mixer),
7834 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7835 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7836 msm_routing_put_audio_mixer),
7837 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7838 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7839 msm_routing_put_audio_mixer),
7840 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7841 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7842 msm_routing_put_audio_mixer),
7843 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7844 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7845 msm_routing_put_audio_mixer),
7846 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7847 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7848 msm_routing_put_audio_mixer),
7849 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7850 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7851 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307852 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7853 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7854 msm_routing_put_audio_mixer),
Asish Bhattacharya34504582017-08-08 12:55:01 +05307855 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7856 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7857 msm_routing_put_audio_mixer),
7858 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7859 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7860 msm_routing_put_audio_mixer),
7861 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7862 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7863 msm_routing_put_audio_mixer),
7864 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7865 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7866 msm_routing_put_audio_mixer),
7867 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7868 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7869 msm_routing_put_audio_mixer),
7870 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7871 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7872 msm_routing_put_audio_mixer),
7873};
7874
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307875static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7876 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7877 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7878 msm_routing_put_audio_mixer),
7879 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7880 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7881 msm_routing_put_audio_mixer),
7882 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7883 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7884 msm_routing_put_audio_mixer),
7885 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7886 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7887 msm_routing_put_audio_mixer),
7888 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7889 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7890 msm_routing_put_audio_mixer),
7891 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7892 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7893 msm_routing_put_audio_mixer),
7894 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7895 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7896 msm_routing_put_audio_mixer),
7897 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7898 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7899 msm_routing_put_audio_mixer),
7900 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7901 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7902 msm_routing_put_audio_mixer),
7903 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7904 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7905 msm_routing_put_audio_mixer),
7906 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7907 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7908 msm_routing_put_audio_mixer),
7909 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7910 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7911 msm_routing_put_audio_mixer),
7912 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7913 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7914 msm_routing_put_audio_mixer),
7915 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7916 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7917 msm_routing_put_audio_mixer),
7918 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7919 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7920 msm_routing_put_audio_mixer),
7921 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7922 MSM_FRONTEND_DAI_MULTIMEDIA9, 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_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7925 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7926 msm_routing_put_audio_mixer),
7927 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7928 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7929 msm_routing_put_audio_mixer),
7930 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7931 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7932 msm_routing_put_audio_mixer),
7933 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7934 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7935 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307936};
7937
Laxminath Kasam38070be2017-08-17 18:21:59 +05307938static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
7939 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7940 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7941 msm_routing_put_audio_mixer),
7942 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7943 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7944 msm_routing_put_audio_mixer),
7945 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7946 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7947 msm_routing_put_audio_mixer),
7948 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7949 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7950 msm_routing_put_audio_mixer),
7951 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7952 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7953 msm_routing_put_audio_mixer),
7954 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7955 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7956 msm_routing_put_audio_mixer),
7957 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7958 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7959 msm_routing_put_audio_mixer),
7960 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7961 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7962 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07007963 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7964 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7965 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307966 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7967 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7968 msm_routing_put_audio_mixer),
7969 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7970 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7971 msm_routing_put_audio_mixer),
7972 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7973 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7974 msm_routing_put_audio_mixer),
7975 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7976 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7977 msm_routing_put_audio_mixer),
7978 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7979 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7980 msm_routing_put_audio_mixer),
7981 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7982 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7983 msm_routing_put_audio_mixer),
7984 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7985 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7986 msm_routing_put_audio_mixer),
7987 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7988 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7989 msm_routing_put_audio_mixer),
7990 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7991 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7992 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007993 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7994 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7995 msm_routing_put_audio_mixer),
7996 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
Raja Mallik425e1d32018-05-20 19:21:10 +05307997 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7998 msm_routing_put_audio_mixer),
7999 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
Vikram Panduranga016c49f2017-09-11 15:15:56 -07008000 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8001 msm_routing_put_audio_mixer),
8002 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8003 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8004 msm_routing_put_audio_mixer),
8005 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8006 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8007 msm_routing_put_audio_mixer),
8008 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8009 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8010 msm_routing_put_audio_mixer),
8011 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8012 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8013 msm_routing_put_audio_mixer),
8014 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
8015 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8016 msm_routing_put_audio_mixer),
8017 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8018 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8019 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05308020};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308021static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
8022 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8023 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8024 msm_routing_put_audio_mixer),
8025 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8026 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8027 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308028 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8029 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8030 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308031 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8032 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8033 msm_routing_put_audio_mixer),
8034 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8035 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8036 msm_routing_put_audio_mixer),
8037 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8038 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8039 msm_routing_put_audio_mixer),
8040 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8041 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8042 msm_routing_put_audio_mixer),
8043 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8044 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8045 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008046 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8047 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8048 msm_routing_put_audio_mixer),
8049 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8050 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8051 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308052};
8053
8054static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
8055 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8056 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8057 msm_routing_put_audio_mixer),
8058 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8059 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8060 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308061 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8062 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8063 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008064 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8065 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8066 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308067 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8068 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8069 msm_routing_put_audio_mixer),
8070 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8071 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8072 msm_routing_put_audio_mixer),
8073 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8074 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8075 msm_routing_put_audio_mixer),
8076 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8077 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8078 msm_routing_put_audio_mixer),
8079 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8080 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8081 msm_routing_put_audio_mixer),
8082 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8083 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8084 msm_routing_put_audio_mixer),
8085};
8086
8087static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
8088 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8089 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8090 msm_routing_put_audio_mixer),
8091 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8092 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8093 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308094 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8095 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8096 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308097 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8098 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8099 msm_routing_put_audio_mixer),
8100 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8101 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8102 msm_routing_put_audio_mixer),
8103 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8104 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8105 msm_routing_put_audio_mixer),
8106 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8107 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8108 msm_routing_put_audio_mixer),
8109 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8110 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8111 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008112 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8113 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8114 msm_routing_put_audio_mixer),
8115 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8116 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8117 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308118};
8119
8120static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
8121 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8122 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8123 msm_routing_put_audio_mixer),
8124 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
8125 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8126 msm_routing_put_audio_mixer),
8127 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8128 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8129 msm_routing_put_audio_mixer),
8130 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8131 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8132 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308133 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
8134 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8135 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308136 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
8137 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8138 msm_routing_put_audio_mixer),
8139 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
8140 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8141 msm_routing_put_audio_mixer),
8142 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
8143 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8144 msm_routing_put_audio_mixer),
8145 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
8146 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8147 msm_routing_put_audio_mixer),
8148 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
8149 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8150 msm_routing_put_audio_mixer),
8151 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
8152 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8153 msm_routing_put_audio_mixer),
8154 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
8155 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8156 msm_routing_put_audio_mixer),
8157 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
8158 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8159 msm_routing_put_audio_mixer),
8160 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
8161 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8162 msm_routing_put_audio_mixer),
8163 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
8164 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8165 msm_routing_put_audio_mixer),
8166 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
8167 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8168 msm_routing_put_audio_mixer),
8169 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
8170 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8171 msm_routing_put_audio_mixer),
8172 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
8173 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8174 msm_routing_put_audio_mixer),
8175 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
8176 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8177 msm_routing_put_audio_mixer),
8178 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
8179 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8180 msm_routing_put_audio_mixer),
8181 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
8182 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8183 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308184 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
8185 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8186 msm_routing_put_audio_mixer),
8187 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
8188 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8189 msm_routing_put_audio_mixer),
8190 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
8191 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8192 msm_routing_put_audio_mixer),
8193 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
8194 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8195 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308196};
8197
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308198static const struct snd_kcontrol_new mmul28_mixer_controls[] = {
8199 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8200 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8201 msm_routing_put_audio_mixer),
8202 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8203 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8204 msm_routing_put_audio_mixer),
8205 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8206 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8207 msm_routing_put_audio_mixer),
8208 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8209 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8210 msm_routing_put_audio_mixer),
8211 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8212 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8213 msm_routing_put_audio_mixer),
8214 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8215 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8216 msm_routing_put_audio_mixer),
8217 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8218 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8219 msm_routing_put_audio_mixer),
8220 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8221 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8222 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008223 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8224 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8225 msm_routing_put_audio_mixer),
8226 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8227 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8228 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308229};
8230
8231static const struct snd_kcontrol_new mmul29_mixer_controls[] = {
8232 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8233 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8234 msm_routing_put_audio_mixer),
8235 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8236 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8237 msm_routing_put_audio_mixer),
8238 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8239 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8240 msm_routing_put_audio_mixer),
8241 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8242 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8243 msm_routing_put_audio_mixer),
8244 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8245 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8246 msm_routing_put_audio_mixer),
8247 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8248 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8249 msm_routing_put_audio_mixer),
8250 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8251 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8252 msm_routing_put_audio_mixer),
8253 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8254 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8255 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008256 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8257 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8258 msm_routing_put_audio_mixer),
8259 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8260 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8261 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308262};
8263
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308264static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308265 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
8266 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8267 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308268 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
8269 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8270 msm_routing_put_voice_mixer),
8271 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
8272 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8273 msm_routing_put_voice_mixer),
8274 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
8275 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8276 msm_routing_put_voice_mixer),
8277 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
8278 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8279 msm_routing_put_voice_mixer),
8280};
8281
8282static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308283 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
8284 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8285 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308286 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
8287 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8288 msm_routing_put_voice_mixer),
8289 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
8290 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8291 msm_routing_put_voice_mixer),
8292};
8293
8294static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308295 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8296 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8297 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308298 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8299 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8300 msm_routing_put_voice_mixer),
8301 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8302 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8303 msm_routing_put_voice_mixer),
8304 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8305 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8306 msm_routing_put_voice_mixer),
8307 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8308 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8309 msm_routing_put_voice_mixer),
8310};
8311
8312static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308313 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8314 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8315 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308316 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8317 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8318 msm_routing_put_voice_mixer),
8319 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8320 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8321 msm_routing_put_voice_mixer),
8322 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8323 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8324 msm_routing_put_voice_mixer),
8325 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8326 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8327 msm_routing_put_voice_mixer),
8328};
8329
8330static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308331 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8332 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8333 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308334 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8335 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8336 msm_routing_put_voice_mixer),
8337 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8338 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8339 msm_routing_put_voice_mixer),
8340 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8341 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8342 msm_routing_put_voice_mixer),
8343 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8344 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8345 msm_routing_put_voice_mixer),
8346};
8347
8348static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308349 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8350 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8351 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308352 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8353 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8354 msm_routing_put_voice_mixer),
8355 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8356 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8357 msm_routing_put_voice_mixer),
8358 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8359 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8360 msm_routing_put_voice_mixer),
8361 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8362 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8363 msm_routing_put_voice_mixer),
8364};
8365
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008366static const struct snd_kcontrol_new display_port_rx_voice_mixer_controls[] = {
8367 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8368 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8369 msm_routing_put_voice_mixer),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008370 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8371 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8372 msm_routing_put_voice_mixer),
8373 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8374 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8375 msm_routing_put_voice_mixer),
8376 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8377 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8378 msm_routing_put_voice_mixer),
8379 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8380 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8381 msm_routing_put_voice_mixer),
8382};
8383
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308384static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308385 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8386 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8387 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308388 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8389 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8390 msm_routing_put_voice_mixer),
8391 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8392 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8393 msm_routing_put_voice_mixer),
8394 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8395 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8396 msm_routing_put_voice_mixer),
8397 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8398 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8399 msm_routing_put_voice_mixer),
8400};
8401
8402static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308403 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8404 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8405 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308406 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8407 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8408 msm_routing_put_voice_mixer),
8409 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8410 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8411 msm_routing_put_voice_mixer),
8412 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8413 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8414 msm_routing_put_voice_mixer),
8415 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8416 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8417 msm_routing_put_voice_mixer),
8418};
8419
8420static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308421 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8422 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8423 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308424 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8425 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8426 msm_routing_put_voice_mixer),
8427 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8428 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8429 msm_routing_put_voice_mixer),
8430 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8431 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8432 msm_routing_put_voice_mixer),
8433 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8434 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8435 msm_routing_put_voice_mixer),
8436};
8437
8438static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8439 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8440 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8441 msm_routing_put_voice_mixer),
8442 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8443 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8444 msm_routing_put_voice_mixer),
8445 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8446 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8447 msm_routing_put_voice_mixer),
8448 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8449 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8450 msm_routing_put_voice_mixer),
8451 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8452 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8453 msm_routing_put_voice_mixer),
8454};
8455
8456static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8457 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8458 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8459 msm_routing_put_voice_mixer),
8460 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8461 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8462 msm_routing_put_voice_mixer),
8463 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8464 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8465 msm_routing_put_voice_mixer),
8466 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8467 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8468 msm_routing_put_voice_mixer),
8469 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8470 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8471 msm_routing_put_voice_mixer),
8472};
8473
8474static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308475 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8476 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8477 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308478 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8479 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8480 msm_routing_put_voice_mixer),
8481 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8482 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8483 msm_routing_put_voice_mixer),
8484 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8485 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8486 msm_routing_put_voice_mixer),
8487 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8488 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8489 msm_routing_put_voice_mixer),
8490};
8491
8492static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308493 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8494 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8495 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308496 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8497 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8498 msm_routing_put_voice_mixer),
8499 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8500 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8501 msm_routing_put_voice_mixer),
8502 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8503 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8504 msm_routing_put_voice_mixer),
8505 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8506 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8507 msm_routing_put_voice_mixer),
8508};
8509
8510static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308511 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8512 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8513 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308514 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8515 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8516 msm_routing_put_voice_mixer),
8517 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8518 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8519 msm_routing_put_voice_mixer),
8520 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8521 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8522 msm_routing_put_voice_mixer),
8523 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8524 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8525 msm_routing_put_voice_mixer),
8526};
8527
8528static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308529 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8530 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8531 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308532 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8533 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8534 msm_routing_put_voice_mixer),
8535 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8536 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8537 msm_routing_put_voice_mixer),
8538 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8539 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8540 msm_routing_put_voice_mixer),
8541 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8542 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8543 msm_routing_put_voice_mixer),
8544};
8545
8546static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308547 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8548 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8549 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308550 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8551 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8552 msm_routing_put_voice_mixer),
8553 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8554 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8555 msm_routing_put_voice_mixer),
8556 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8557 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8558 msm_routing_put_voice_mixer),
8559 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8560 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8561 msm_routing_put_voice_mixer),
8562};
8563
8564static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308565 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8566 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8567 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308568 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8569 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8570 msm_routing_put_voice_mixer),
8571 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8572 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8573 msm_routing_put_voice_mixer),
8574 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8575 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8576 msm_routing_put_voice_mixer),
8577 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8578 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8579 msm_routing_put_voice_mixer),
8580};
8581
8582static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308583 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8584 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8585 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308586 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8587 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8588 msm_routing_put_voice_mixer),
8589 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8590 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8591 msm_routing_put_voice_mixer),
8592 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8593 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8594 msm_routing_put_voice_mixer),
8595 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8596 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8597 msm_routing_put_voice_mixer),
8598};
8599
8600static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308601 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8602 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8603 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308604 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8605 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8606 msm_routing_put_voice_mixer),
8607 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8608 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8609 msm_routing_put_voice_mixer),
8610 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8611 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8612 msm_routing_put_voice_mixer),
8613 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8614 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8615 msm_routing_put_voice_mixer),
8616};
8617
Rohit Kumara5077932017-09-10 22:05:05 +05308618static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Rohit Kumara5077932017-09-10 22:05:05 +05308619 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8620 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8621 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308622 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8623 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8624 msm_routing_put_voice_mixer),
8625 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8626 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8627 msm_routing_put_voice_mixer),
8628 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8629 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8630 msm_routing_put_voice_mixer),
8631 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8632 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8633 msm_routing_put_voice_mixer),
8634};
8635
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308636static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308637 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8638 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8639 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308640 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8641 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8642 msm_routing_put_voice_mixer),
8643 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8644 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8645 msm_routing_put_voice_mixer),
8646 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8647 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8648 msm_routing_put_voice_mixer),
8649 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8650 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8651 msm_routing_put_voice_mixer),
8652};
8653
Raja Mallik321d5712018-05-04 17:22:11 +05308654static const struct snd_kcontrol_new pri_tdm_rx_0_voice_mixer_controls[] = {
8655 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8656 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8657 msm_routing_put_voice_mixer),
8658 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8659 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8660 msm_routing_put_voice_stub_mixer),
8661 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8662 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8663 msm_routing_put_voice_stub_mixer),
8664 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8665 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8666 msm_routing_put_voice_mixer),
8667 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8668 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8669 msm_routing_put_voice_mixer),
8670 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8671 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8672 msm_routing_put_voice_mixer),
8673 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8674 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8675 msm_routing_put_voice_mixer),
8676 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8677 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8678 msm_routing_put_voice_mixer),
8679};
8680
8681static const struct snd_kcontrol_new pri_tdm_rx_1_voice_mixer_controls[] = {
8682 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8683 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8684 msm_routing_put_voice_mixer),
8685 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8686 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8687 msm_routing_put_voice_stub_mixer),
8688 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8689 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8690 msm_routing_put_voice_stub_mixer),
8691 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8692 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8693 msm_routing_put_voice_mixer),
8694 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8695 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8696 msm_routing_put_voice_mixer),
8697 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8698 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8699 msm_routing_put_voice_mixer),
8700 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8701 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8702 msm_routing_put_voice_mixer),
8703 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8704 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8705 msm_routing_put_voice_mixer),
8706};
8707
8708static const struct snd_kcontrol_new pri_tdm_rx_2_voice_mixer_controls[] = {
8709 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8710 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8711 msm_routing_put_voice_mixer),
8712 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8713 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8714 msm_routing_put_voice_stub_mixer),
8715 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8716 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8717 msm_routing_put_voice_stub_mixer),
8718 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8719 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8720 msm_routing_put_voice_mixer),
8721 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8722 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8723 msm_routing_put_voice_mixer),
8724 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8725 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8726 msm_routing_put_voice_mixer),
8727 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8728 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8729 msm_routing_put_voice_mixer),
8730 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8731 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8732 msm_routing_put_voice_mixer),
8733};
8734
8735static const struct snd_kcontrol_new pri_tdm_rx_3_voice_mixer_controls[] = {
8736 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8737 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8738 msm_routing_put_voice_mixer),
8739 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8740 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8741 msm_routing_put_voice_stub_mixer),
8742 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8743 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8744 msm_routing_put_voice_stub_mixer),
8745 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8746 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8747 msm_routing_put_voice_mixer),
8748 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8749 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8750 msm_routing_put_voice_mixer),
8751 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8752 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8753 msm_routing_put_voice_mixer),
8754 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8755 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8756 msm_routing_put_voice_mixer),
8757 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8758 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8759 msm_routing_put_voice_mixer),
8760};
8761
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308762static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308763 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8764 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8765 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308766 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8767 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8768 msm_routing_put_voice_mixer),
8769 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8770 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8771 msm_routing_put_voice_mixer),
8772 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8773 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8774 msm_routing_put_voice_mixer),
8775 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8776 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8777 msm_routing_put_voice_mixer),
8778};
8779
8780static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308781 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8782 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8783 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308784 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8785 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8786 msm_routing_put_voice_mixer),
8787 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8788 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8789 msm_routing_put_voice_mixer),
8790 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8791 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8792 msm_routing_put_voice_mixer),
8793 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8794 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8795 msm_routing_put_voice_mixer),
8796};
8797
8798static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8799 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8800 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8801 msm_routing_put_voice_mixer),
8802};
8803
8804static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008805 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_EXTPROC_RX,
8806 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8807 msm_routing_put_voice_mixer),
8808 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_EXTPROC_RX,
8809 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8810 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308811};
8812
8813static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008814 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8815 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8816 msm_routing_put_voice_mixer),
8817 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8818 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8819 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308820};
8821
8822static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008823 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8824 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8825 msm_routing_put_voice_mixer),
8826 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8827 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8828 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308829};
8830
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308831static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8832 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8833 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8834 msm_routing_put_voice_mixer),
8835 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8836 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8837 msm_routing_put_voice_mixer),
8838 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8839 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8840 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8841 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8842 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8843 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8844 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8845 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8846 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8847 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8848 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8849 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8850 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8851 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8852 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8853 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8854 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8855 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8856 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8857 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8858 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308859 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
8860 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8861 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308862 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8863 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8864 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8865 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8866 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8867 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8868 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8869 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8870 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8871 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8872 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8873 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8874 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8875 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8876 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8877 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8878 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8879 msm_routing_put_voice_mixer),
8880 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8881 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8882 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05308883 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode1",
8884 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE1,
8885 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308886 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode1",
8887 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8888 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8889 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode1",
8890 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8891 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308892};
8893
8894static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8895 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8896 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8897 msm_routing_put_voice_mixer),
8898 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8899 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8900 msm_routing_put_voice_mixer),
8901 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8902 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8903 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8904 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
8905 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8906 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8907 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
8908 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8909 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8910 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
8911 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8912 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8913 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
8914 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8915 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8916 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
8917 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8918 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8919 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
8920 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8921 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308922 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
8923 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8924 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308925 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
8926 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8927 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8928 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
8929 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8930 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05308931 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode2",
8932 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE2,
8933 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308934 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
8935 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8936 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8937 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
8938 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8939 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8940 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
8941 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8942 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8943 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
8944 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8945 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308946 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode2",
8947 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8948 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8949 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode2",
8950 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8951 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308952};
8953
8954static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
8955 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
8956 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8957 msm_routing_put_voice_mixer),
8958 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
8959 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8960 msm_routing_put_voice_mixer),
8961 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8962 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8963 msm_routing_put_voice_mixer),
8964 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8965 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8966 msm_routing_put_voice_mixer),
8967 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
8968 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8969 msm_routing_put_voice_mixer),
8970 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
8971 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8972 msm_routing_put_voice_mixer),
8973 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8974 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8975 msm_routing_put_voice_mixer),
8976 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8977 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8978 msm_routing_put_voice_mixer),
8979 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8980 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8981 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308982 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8983 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8984 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308985 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
8986 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8987 msm_routing_put_voice_mixer),
8988 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8989 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8990 msm_routing_put_voice_mixer),
8991 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
8992 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8993 msm_routing_put_voice_mixer),
8994 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8995 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8996 msm_routing_put_voice_mixer),
8997 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8998 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8999 msm_routing_put_voice_mixer),
9000 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
9001 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9002 msm_routing_put_voice_mixer),
Bala Kishore Pati38de3862018-06-15 17:38:40 +05309003 SOC_SINGLE_EXT("PRI_TDM_TX_3_Voip", MSM_BACKEND_DAI_PRI_TDM_TX_3,
9004 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9005 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309006};
9007
9008static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
9009 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9010 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9011 msm_routing_put_voice_stub_mixer),
9012 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
9013 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9014 msm_routing_put_voice_stub_mixer),
9015 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9016 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9017 msm_routing_put_voice_stub_mixer),
9018 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9019 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9020 msm_routing_put_voice_stub_mixer),
9021 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
9022 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9023 msm_routing_put_voice_stub_mixer),
9024 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9025 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9026 msm_routing_put_voice_stub_mixer),
9027 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9028 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9029 msm_routing_put_voice_stub_mixer),
9030 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
9031 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9032 msm_routing_put_voice_stub_mixer),
9033 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9034 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9035 msm_routing_put_voice_stub_mixer),
9036 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9037 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9038 msm_routing_put_voice_stub_mixer),
9039 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9040 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9041 msm_routing_put_voice_stub_mixer),
9042 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9043 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9044 msm_routing_put_voice_stub_mixer),
9045 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9046 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9047 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309048 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9049 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9050 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309051 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9052 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9053 msm_routing_put_voice_stub_mixer),
9054 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9055 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9056 msm_routing_put_voice_stub_mixer),
9057 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9058 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9059 msm_routing_put_voice_stub_mixer),
9060 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9061 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9062 msm_routing_put_voice_stub_mixer),
9063 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9064 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9065 msm_routing_put_voice_stub_mixer),
9066};
9067
9068static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
9069 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9070 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9071 msm_routing_put_voice_stub_mixer),
9072 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9073 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9074 msm_routing_put_voice_stub_mixer),
9075 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9076 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9077 msm_routing_put_voice_stub_mixer),
9078 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9079 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9080 msm_routing_put_voice_stub_mixer),
9081 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9082 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9083 msm_routing_put_voice_stub_mixer),
9084 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9085 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9086 msm_routing_put_voice_stub_mixer),
9087 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9088 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9089 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309090 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9091 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9092 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309093 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9094 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9095 msm_routing_put_voice_stub_mixer),
9096 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9097 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9098 msm_routing_put_voice_stub_mixer),
9099 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9100 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9101 msm_routing_put_voice_stub_mixer),
9102 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9103 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9104 msm_routing_put_voice_stub_mixer),
9105 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9106 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9107 msm_routing_put_voice_stub_mixer),
9108 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9109 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9110 msm_routing_put_voice_stub_mixer),
9111 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9112 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9113 msm_routing_put_voice_stub_mixer),
9114};
9115
9116static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
9117 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9118 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9119 msm_routing_put_voice_stub_mixer),
9120 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9121 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9122 msm_routing_put_voice_stub_mixer),
9123 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9124 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9125 msm_routing_put_voice_stub_mixer),
9126 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9127 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9128 msm_routing_put_voice_stub_mixer),
9129 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9130 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9131 msm_routing_put_voice_stub_mixer),
9132 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9133 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9134 msm_routing_put_voice_stub_mixer),
9135 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9136 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9137 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309138 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9139 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9140 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309141 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9142 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9143 msm_routing_put_voice_stub_mixer),
9144 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9145 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9146 msm_routing_put_voice_stub_mixer),
9147 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9148 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9149 msm_routing_put_voice_stub_mixer),
9150 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9151 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9152 msm_routing_put_voice_stub_mixer),
9153 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9154 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9155 msm_routing_put_voice_stub_mixer),
9156 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9157 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9158 msm_routing_put_voice_stub_mixer),
9159 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9160 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9161 msm_routing_put_voice_stub_mixer),
9162};
9163
9164static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
9165 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
9166 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9167 msm_routing_put_voice_mixer),
9168 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9169 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9170 msm_routing_put_voice_mixer),
9171 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
9172 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
9173 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9174 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
9175 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9176 msm_routing_put_voice_mixer),
9177 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
9178 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9179 msm_routing_put_voice_mixer),
9180 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9181 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9182 msm_routing_put_voice_mixer),
9183 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9184 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9185 msm_routing_put_voice_mixer),
9186 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9187 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9188 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309189 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9190 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9191 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309192 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
9193 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9194 msm_routing_put_voice_mixer),
9195 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
9196 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9197 msm_routing_put_voice_mixer),
9198 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9199 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9200 msm_routing_put_voice_mixer),
9201 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
9202 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9203 msm_routing_put_voice_mixer),
9204 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9205 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9206 msm_routing_put_voice_mixer),
9207 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9208 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9209 msm_routing_put_voice_mixer),
9210 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
9211 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9212 msm_routing_put_voice_mixer),
9213};
9214
9215static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
9216 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9217 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9218 msm_routing_put_port_mixer),
9219 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9220 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9221 msm_routing_put_port_mixer),
9222 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9223 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9224 msm_routing_put_port_mixer),
9225 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9226 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9227 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309228 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9229 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9230 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309231 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9232 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9233 msm_routing_put_port_mixer),
9234 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9235 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9236 msm_routing_put_port_mixer),
9237 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9238 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9239 msm_routing_put_port_mixer),
9240 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9241 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9242 msm_routing_put_port_mixer),
9243 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9244 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9245 msm_routing_put_port_mixer),
9246};
9247
9248static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
9249 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9250 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9251 msm_routing_put_port_mixer),
9252 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9253 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9254 msm_routing_put_port_mixer),
9255 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9256 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9257 msm_routing_put_port_mixer),
9258 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9259 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9260 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309261 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9262 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9263 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309264 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9265 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9266 msm_routing_put_port_mixer),
9267 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9268 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9269 msm_routing_put_port_mixer),
9270 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9271 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9272 msm_routing_put_port_mixer),
9273 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9274 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9275 msm_routing_put_port_mixer),
9276 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9277 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9278 msm_routing_put_port_mixer),
9279};
9280
9281static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
9282 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9283 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9284 msm_routing_put_port_mixer),
9285 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9286 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9287 msm_routing_put_port_mixer),
9288 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9289 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9290 msm_routing_put_port_mixer),
9291 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9292 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9293 msm_routing_put_port_mixer),
9294 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9295 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9296 msm_routing_put_port_mixer),
9297 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9298 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9299 msm_routing_put_port_mixer),
9300 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9301 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9302 msm_routing_put_port_mixer),
9303 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9304 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9305 msm_routing_put_port_mixer),
9306 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9307 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9308 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309309 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9310 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9311 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309312 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9313 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9314 msm_routing_put_port_mixer),
9315 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9316 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9317 msm_routing_put_port_mixer),
9318 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9319 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9320 msm_routing_put_port_mixer),
9321 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9322 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9323 msm_routing_put_port_mixer),
9324 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9325 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9326 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309327 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9328 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9329 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309330 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9331 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9332 msm_routing_put_port_mixer),
9333 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9334 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9335 msm_routing_put_port_mixer),
9336 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9337 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9338 msm_routing_put_port_mixer),
9339 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9340 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9341 msm_routing_put_port_mixer),
9342 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9343 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9344 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309345 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9346 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9347 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309348};
9349
9350static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
9351 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9352 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9353 msm_routing_put_port_mixer),
9354 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9355 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9356 msm_routing_put_port_mixer),
9357 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9358 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9359 msm_routing_put_port_mixer),
9360 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9361 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9362 msm_routing_put_port_mixer),
9363 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
9364 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
9365 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009366 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9367 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9368 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309369};
9370
9371static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
9372 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9373 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9374 msm_routing_put_port_mixer),
9375 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9376 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9377 msm_routing_put_port_mixer),
9378 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9379 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9380 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009381 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9382 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9383 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309384};
9385
9386static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
9387 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9388 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9389 msm_routing_put_port_mixer),
9390 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9391 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9392 msm_routing_put_port_mixer),
9393 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9394 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9395 msm_routing_put_port_mixer),
9396};
9397
9398static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
9399 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9400 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9401 msm_routing_put_port_mixer),
9402 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9403 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9404 msm_routing_put_port_mixer),
9405 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9406 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9407 msm_routing_put_port_mixer),
9408};
9409
Rohit Kumara5077932017-09-10 22:05:05 +05309410static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
9411 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9412 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9413 msm_routing_put_port_mixer),
9414 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9415 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9416 msm_routing_put_port_mixer),
9417 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9418 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9419 msm_routing_put_port_mixer),
9420};
9421
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309422static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9423 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9424 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9425 msm_routing_put_port_mixer),
9426 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9427 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9428 msm_routing_put_port_mixer),
9429 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9430 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9431 msm_routing_put_port_mixer),
9432 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9433 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9434 msm_routing_put_port_mixer),
9435 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9436 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9437 msm_routing_put_port_mixer),
9438 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9439 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9440 msm_routing_put_port_mixer),
9441};
9442
9443static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9444 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9445 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9446 msm_routing_put_port_mixer),
9447 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9448 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9449 msm_routing_put_port_mixer),
9450 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9451 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9452 msm_routing_put_port_mixer),
9453 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9454 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9455 msm_routing_put_port_mixer),
9456 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9457 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9458 msm_routing_put_port_mixer),
9459};
9460
9461static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9462 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9463 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9464 msm_routing_put_port_mixer),
9465 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9466 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9467 msm_routing_put_port_mixer),
9468 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9469 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9470 msm_routing_put_port_mixer),
9471 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9472 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9473 msm_routing_put_port_mixer),
9474 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9475 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9476 msm_routing_put_port_mixer),
9477 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9478 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9479 msm_routing_put_port_mixer),
9480 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9481 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9482 msm_routing_put_port_mixer),
9483 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9484 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9485 msm_routing_put_port_mixer),
9486 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9487 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9488 msm_routing_put_port_mixer),
9489 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9490 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9491 msm_routing_put_port_mixer),
9492 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9493 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9494 msm_routing_put_port_mixer),
9495 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9496 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9497 msm_routing_put_port_mixer),
9498};
9499
9500static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9501 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9502 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9503 msm_routing_put_port_mixer),
9504 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9505 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9506 msm_routing_put_port_mixer),
9507};
9508
9509static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9510 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9511 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9512 msm_routing_put_port_mixer),
9513 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9514 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9515 msm_routing_put_port_mixer),
9516};
9517
9518
9519static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9520 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9521 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9522 msm_routing_put_port_mixer),
9523};
9524
9525static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9526 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9527 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9528 msm_routing_put_port_mixer),
9529};
9530
9531static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9532 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9533 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9534 msm_routing_put_port_mixer),
9535};
9536
9537static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9538 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9539 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9540 msm_routing_put_port_mixer),
9541 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9542 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9543 msm_routing_put_port_mixer),
9544};
9545
9546static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9547 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9548 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9549 msm_routing_put_port_mixer),
9550 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9551 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9552 msm_routing_put_port_mixer),
9553 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9554 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9555 msm_routing_put_port_mixer),
9556 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9557 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9558 msm_routing_put_port_mixer),
9559 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9560 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9561 msm_routing_put_port_mixer),
9562 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9563 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9564 msm_routing_put_port_mixer),
9565 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9566 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9567 msm_routing_put_port_mixer),
9568 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9569 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9570 msm_routing_put_port_mixer),
9571 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9572 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9573 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009574 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9575 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9576 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309577};
9578
9579static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9580 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9581 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9582 msm_routing_put_port_mixer),
9583};
9584
9585static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9586 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9587 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9588 msm_routing_put_port_mixer),
9589 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9590 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9591 msm_routing_put_port_mixer),
9592 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9593 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9594 msm_routing_put_port_mixer),
9595 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9596 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9597 msm_routing_put_port_mixer),
9598 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9599 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9600 msm_routing_put_port_mixer),
9601 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9602 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9603 msm_routing_put_port_mixer),
9604 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9605 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9606 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309607 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9608 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9609 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309610 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9611 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9612 msm_routing_put_port_mixer),
9613};
9614
Rohit Kumara5077932017-09-10 22:05:05 +05309615static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9616 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9617 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9618 msm_routing_put_port_mixer),
9619 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9620 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9621 msm_routing_put_port_mixer),
9622 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_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("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9626 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9627 msm_routing_put_port_mixer),
9628 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9629 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9630 msm_routing_put_port_mixer),
9631 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9632 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9633 msm_routing_put_port_mixer),
9634 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9635 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9636 msm_routing_put_port_mixer),
9637};
9638
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309639static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9640 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9641 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9642 msm_routing_get_port_mixer,
9643 msm_routing_put_port_mixer),
9644 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9645 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9646 msm_routing_get_port_mixer,
9647 msm_routing_put_port_mixer),
9648 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9649 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9650 msm_routing_get_port_mixer,
9651 msm_routing_put_port_mixer),
9652 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9653 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9654 msm_routing_get_port_mixer,
9655 msm_routing_put_port_mixer),
9656 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9657 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9658 msm_routing_get_port_mixer,
9659 msm_routing_put_port_mixer),
9660 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9661 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9662 msm_routing_get_port_mixer,
9663 msm_routing_put_port_mixer),
9664 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9665 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9666 msm_routing_get_port_mixer,
9667 msm_routing_put_port_mixer),
9668 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9669 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9670 msm_routing_get_port_mixer,
9671 msm_routing_put_port_mixer),
9672 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9673 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9674 msm_routing_get_port_mixer,
9675 msm_routing_put_port_mixer),
9676 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9677 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9678 msm_routing_get_port_mixer,
9679 msm_routing_put_port_mixer),
9680 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9681 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9682 msm_routing_get_port_mixer,
9683 msm_routing_put_port_mixer),
9684 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9685 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9686 msm_routing_get_port_mixer,
9687 msm_routing_put_port_mixer),
9688 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9689 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9690 msm_routing_get_port_mixer,
9691 msm_routing_put_port_mixer),
9692 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9693 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9694 msm_routing_get_port_mixer,
9695 msm_routing_put_port_mixer),
9696 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9697 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9698 msm_routing_get_port_mixer,
9699 msm_routing_put_port_mixer),
9700 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9701 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9702 msm_routing_get_port_mixer,
9703 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309704 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9705 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9706 msm_routing_get_port_mixer,
9707 msm_routing_put_port_mixer),
9708 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9709 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9710 msm_routing_get_port_mixer,
9711 msm_routing_put_port_mixer),
9712 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9713 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9714 msm_routing_get_port_mixer,
9715 msm_routing_put_port_mixer),
9716 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9717 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9718 msm_routing_get_port_mixer,
9719 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309720};
9721
9722static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9723 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9724 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9725 msm_routing_get_port_mixer,
9726 msm_routing_put_port_mixer),
9727 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9728 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9729 msm_routing_get_port_mixer,
9730 msm_routing_put_port_mixer),
9731 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9732 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9733 msm_routing_get_port_mixer,
9734 msm_routing_put_port_mixer),
9735 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9736 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9737 msm_routing_get_port_mixer,
9738 msm_routing_put_port_mixer),
9739 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9740 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9741 msm_routing_get_port_mixer,
9742 msm_routing_put_port_mixer),
9743 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9744 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9745 msm_routing_get_port_mixer,
9746 msm_routing_put_port_mixer),
9747 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9748 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9749 msm_routing_get_port_mixer,
9750 msm_routing_put_port_mixer),
9751 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9752 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9753 msm_routing_get_port_mixer,
9754 msm_routing_put_port_mixer),
9755 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9756 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9757 msm_routing_get_port_mixer,
9758 msm_routing_put_port_mixer),
9759 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9760 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9761 msm_routing_get_port_mixer,
9762 msm_routing_put_port_mixer),
9763 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9764 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9765 msm_routing_get_port_mixer,
9766 msm_routing_put_port_mixer),
9767 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9768 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9769 msm_routing_get_port_mixer,
9770 msm_routing_put_port_mixer),
9771 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9772 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9773 msm_routing_get_port_mixer,
9774 msm_routing_put_port_mixer),
9775 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9776 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9777 msm_routing_get_port_mixer,
9778 msm_routing_put_port_mixer),
9779 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9780 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9781 msm_routing_get_port_mixer,
9782 msm_routing_put_port_mixer),
9783 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9784 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9785 msm_routing_get_port_mixer,
9786 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309787 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9788 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9789 msm_routing_get_port_mixer,
9790 msm_routing_put_port_mixer),
9791 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9792 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9793 msm_routing_get_port_mixer,
9794 msm_routing_put_port_mixer),
9795 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9796 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9797 msm_routing_get_port_mixer,
9798 msm_routing_put_port_mixer),
9799 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9800 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9801 msm_routing_get_port_mixer,
9802 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309803};
9804
9805static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9806 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9807 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9808 msm_routing_get_port_mixer,
9809 msm_routing_put_port_mixer),
9810 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9811 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9812 msm_routing_get_port_mixer,
9813 msm_routing_put_port_mixer),
9814 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9815 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9816 msm_routing_get_port_mixer,
9817 msm_routing_put_port_mixer),
9818 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9819 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9820 msm_routing_get_port_mixer,
9821 msm_routing_put_port_mixer),
9822 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9823 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9824 msm_routing_get_port_mixer,
9825 msm_routing_put_port_mixer),
9826 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9827 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9828 msm_routing_get_port_mixer,
9829 msm_routing_put_port_mixer),
9830 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9831 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9832 msm_routing_get_port_mixer,
9833 msm_routing_put_port_mixer),
9834 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9835 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9836 msm_routing_get_port_mixer,
9837 msm_routing_put_port_mixer),
9838 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9839 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9840 msm_routing_get_port_mixer,
9841 msm_routing_put_port_mixer),
9842 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9843 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9844 msm_routing_get_port_mixer,
9845 msm_routing_put_port_mixer),
9846 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9847 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9848 msm_routing_get_port_mixer,
9849 msm_routing_put_port_mixer),
9850 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9851 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9852 msm_routing_get_port_mixer,
9853 msm_routing_put_port_mixer),
9854 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9855 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9856 msm_routing_get_port_mixer,
9857 msm_routing_put_port_mixer),
9858 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9859 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9860 msm_routing_get_port_mixer,
9861 msm_routing_put_port_mixer),
9862 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9863 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9864 msm_routing_get_port_mixer,
9865 msm_routing_put_port_mixer),
9866 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9867 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9868 msm_routing_get_port_mixer,
9869 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309870 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9871 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9872 msm_routing_get_port_mixer,
9873 msm_routing_put_port_mixer),
9874 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9875 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9876 msm_routing_get_port_mixer,
9877 msm_routing_put_port_mixer),
9878 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9879 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9880 msm_routing_get_port_mixer,
9881 msm_routing_put_port_mixer),
9882 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9883 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9884 msm_routing_get_port_mixer,
9885 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309886};
9887
9888static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9889 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9890 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9891 msm_routing_get_port_mixer,
9892 msm_routing_put_port_mixer),
9893 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9894 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9895 msm_routing_get_port_mixer,
9896 msm_routing_put_port_mixer),
9897 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9898 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9899 msm_routing_get_port_mixer,
9900 msm_routing_put_port_mixer),
9901 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9902 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9903 msm_routing_get_port_mixer,
9904 msm_routing_put_port_mixer),
9905 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9906 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9907 msm_routing_get_port_mixer,
9908 msm_routing_put_port_mixer),
9909 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9910 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9911 msm_routing_get_port_mixer,
9912 msm_routing_put_port_mixer),
9913 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9914 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9915 msm_routing_get_port_mixer,
9916 msm_routing_put_port_mixer),
9917 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9918 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9919 msm_routing_get_port_mixer,
9920 msm_routing_put_port_mixer),
9921 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9922 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9923 msm_routing_get_port_mixer,
9924 msm_routing_put_port_mixer),
9925 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9926 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9927 msm_routing_get_port_mixer,
9928 msm_routing_put_port_mixer),
9929 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9930 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9931 msm_routing_get_port_mixer,
9932 msm_routing_put_port_mixer),
9933 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9934 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9935 msm_routing_get_port_mixer,
9936 msm_routing_put_port_mixer),
9937 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9938 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9939 msm_routing_get_port_mixer,
9940 msm_routing_put_port_mixer),
9941 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9942 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9943 msm_routing_get_port_mixer,
9944 msm_routing_put_port_mixer),
9945 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9946 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9947 msm_routing_get_port_mixer,
9948 msm_routing_put_port_mixer),
9949 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9950 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9951 msm_routing_get_port_mixer,
9952 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309953 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9954 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9955 msm_routing_get_port_mixer,
9956 msm_routing_put_port_mixer),
9957 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9958 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9959 msm_routing_get_port_mixer,
9960 msm_routing_put_port_mixer),
9961 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9962 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9963 msm_routing_get_port_mixer,
9964 msm_routing_put_port_mixer),
9965 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9966 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9967 msm_routing_get_port_mixer,
9968 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309969};
9970
9971static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
9972 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9973 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9974 msm_routing_get_port_mixer,
9975 msm_routing_put_port_mixer),
9976 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9977 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9978 msm_routing_get_port_mixer,
9979 msm_routing_put_port_mixer),
9980 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9981 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9982 msm_routing_get_port_mixer,
9983 msm_routing_put_port_mixer),
9984 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9985 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9986 msm_routing_get_port_mixer,
9987 msm_routing_put_port_mixer),
9988 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9989 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9990 msm_routing_get_port_mixer,
9991 msm_routing_put_port_mixer),
9992 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9993 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9994 msm_routing_get_port_mixer,
9995 msm_routing_put_port_mixer),
9996 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9997 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9998 msm_routing_get_port_mixer,
9999 msm_routing_put_port_mixer),
10000 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10001 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10002 msm_routing_get_port_mixer,
10003 msm_routing_put_port_mixer),
10004 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10005 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10006 msm_routing_get_port_mixer,
10007 msm_routing_put_port_mixer),
10008 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10009 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10010 msm_routing_get_port_mixer,
10011 msm_routing_put_port_mixer),
10012 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10013 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10014 msm_routing_get_port_mixer,
10015 msm_routing_put_port_mixer),
10016 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10017 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10018 msm_routing_get_port_mixer,
10019 msm_routing_put_port_mixer),
10020 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10021 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10022 msm_routing_get_port_mixer,
10023 msm_routing_put_port_mixer),
10024 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10025 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10026 msm_routing_get_port_mixer,
10027 msm_routing_put_port_mixer),
10028 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10029 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10030 msm_routing_get_port_mixer,
10031 msm_routing_put_port_mixer),
10032 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10033 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10034 msm_routing_get_port_mixer,
10035 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010036 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10037 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10038 msm_routing_get_port_mixer,
10039 msm_routing_put_port_mixer),
10040 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10041 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10042 msm_routing_get_port_mixer,
10043 msm_routing_put_port_mixer),
10044 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10045 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10046 msm_routing_get_port_mixer,
10047 msm_routing_put_port_mixer),
10048 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10049 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10050 msm_routing_get_port_mixer,
10051 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010052};
10053
10054static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
10055 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10056 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10057 msm_routing_get_port_mixer,
10058 msm_routing_put_port_mixer),
10059 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10060 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10061 msm_routing_get_port_mixer,
10062 msm_routing_put_port_mixer),
10063 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10064 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10065 msm_routing_get_port_mixer,
10066 msm_routing_put_port_mixer),
10067 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10068 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10069 msm_routing_get_port_mixer,
10070 msm_routing_put_port_mixer),
10071 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10072 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10073 msm_routing_get_port_mixer,
10074 msm_routing_put_port_mixer),
10075 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10076 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10077 msm_routing_get_port_mixer,
10078 msm_routing_put_port_mixer),
10079 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10080 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10081 msm_routing_get_port_mixer,
10082 msm_routing_put_port_mixer),
10083 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10084 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10085 msm_routing_get_port_mixer,
10086 msm_routing_put_port_mixer),
10087 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10088 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10089 msm_routing_get_port_mixer,
10090 msm_routing_put_port_mixer),
10091 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10092 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10093 msm_routing_get_port_mixer,
10094 msm_routing_put_port_mixer),
10095 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10096 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10097 msm_routing_get_port_mixer,
10098 msm_routing_put_port_mixer),
10099 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10100 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10101 msm_routing_get_port_mixer,
10102 msm_routing_put_port_mixer),
10103 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10104 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10105 msm_routing_get_port_mixer,
10106 msm_routing_put_port_mixer),
10107 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10108 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10109 msm_routing_get_port_mixer,
10110 msm_routing_put_port_mixer),
10111 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10112 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10113 msm_routing_get_port_mixer,
10114 msm_routing_put_port_mixer),
10115 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10116 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10117 msm_routing_get_port_mixer,
10118 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010119 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10120 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10121 msm_routing_get_port_mixer,
10122 msm_routing_put_port_mixer),
10123 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10124 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10125 msm_routing_get_port_mixer,
10126 msm_routing_put_port_mixer),
10127 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10128 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10129 msm_routing_get_port_mixer,
10130 msm_routing_put_port_mixer),
10131 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10132 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10133 msm_routing_get_port_mixer,
10134 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010135};
10136
10137static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
10138 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10139 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10140 msm_routing_get_port_mixer,
10141 msm_routing_put_port_mixer),
10142 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10143 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10144 msm_routing_get_port_mixer,
10145 msm_routing_put_port_mixer),
10146 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10147 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10148 msm_routing_get_port_mixer,
10149 msm_routing_put_port_mixer),
10150 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10151 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10152 msm_routing_get_port_mixer,
10153 msm_routing_put_port_mixer),
10154 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10155 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10156 msm_routing_get_port_mixer,
10157 msm_routing_put_port_mixer),
10158 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10159 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10160 msm_routing_get_port_mixer,
10161 msm_routing_put_port_mixer),
10162 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10163 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10164 msm_routing_get_port_mixer,
10165 msm_routing_put_port_mixer),
10166 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10167 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10168 msm_routing_get_port_mixer,
10169 msm_routing_put_port_mixer),
10170 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10171 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10172 msm_routing_get_port_mixer,
10173 msm_routing_put_port_mixer),
10174 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10175 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10176 msm_routing_get_port_mixer,
10177 msm_routing_put_port_mixer),
10178 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10179 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10180 msm_routing_get_port_mixer,
10181 msm_routing_put_port_mixer),
10182 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10183 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10184 msm_routing_get_port_mixer,
10185 msm_routing_put_port_mixer),
10186 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10187 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10188 msm_routing_get_port_mixer,
10189 msm_routing_put_port_mixer),
10190 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10191 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10192 msm_routing_get_port_mixer,
10193 msm_routing_put_port_mixer),
10194 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10195 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10196 msm_routing_get_port_mixer,
10197 msm_routing_put_port_mixer),
10198 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10199 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10200 msm_routing_get_port_mixer,
10201 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010202 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10203 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10204 msm_routing_get_port_mixer,
10205 msm_routing_put_port_mixer),
10206 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10207 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10208 msm_routing_get_port_mixer,
10209 msm_routing_put_port_mixer),
10210 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10211 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10212 msm_routing_get_port_mixer,
10213 msm_routing_put_port_mixer),
10214 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10215 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10216 msm_routing_get_port_mixer,
10217 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010218};
10219
10220static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
10221 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10222 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10223 msm_routing_get_port_mixer,
10224 msm_routing_put_port_mixer),
10225 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10226 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10227 msm_routing_get_port_mixer,
10228 msm_routing_put_port_mixer),
10229 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10230 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10231 msm_routing_get_port_mixer,
10232 msm_routing_put_port_mixer),
10233 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10234 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10235 msm_routing_get_port_mixer,
10236 msm_routing_put_port_mixer),
10237 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10238 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10239 msm_routing_get_port_mixer,
10240 msm_routing_put_port_mixer),
10241 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10242 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10243 msm_routing_get_port_mixer,
10244 msm_routing_put_port_mixer),
10245 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10246 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10247 msm_routing_get_port_mixer,
10248 msm_routing_put_port_mixer),
10249 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10250 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10251 msm_routing_get_port_mixer,
10252 msm_routing_put_port_mixer),
10253 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10254 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10255 msm_routing_get_port_mixer,
10256 msm_routing_put_port_mixer),
10257 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10258 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10259 msm_routing_get_port_mixer,
10260 msm_routing_put_port_mixer),
10261 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10262 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10263 msm_routing_get_port_mixer,
10264 msm_routing_put_port_mixer),
10265 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10266 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10267 msm_routing_get_port_mixer,
10268 msm_routing_put_port_mixer),
10269 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10270 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10271 msm_routing_get_port_mixer,
10272 msm_routing_put_port_mixer),
10273 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10274 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10275 msm_routing_get_port_mixer,
10276 msm_routing_put_port_mixer),
10277 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10278 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10279 msm_routing_get_port_mixer,
10280 msm_routing_put_port_mixer),
10281 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10282 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10283 msm_routing_get_port_mixer,
10284 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010285 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10286 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10287 msm_routing_get_port_mixer,
10288 msm_routing_put_port_mixer),
10289 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10290 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10291 msm_routing_get_port_mixer,
10292 msm_routing_put_port_mixer),
10293 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10294 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10295 msm_routing_get_port_mixer,
10296 msm_routing_put_port_mixer),
10297 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10298 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10299 msm_routing_get_port_mixer,
10300 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010301};
10302
10303static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
10304 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10305 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10306 msm_routing_get_port_mixer,
10307 msm_routing_put_port_mixer),
10308 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10309 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10310 msm_routing_get_port_mixer,
10311 msm_routing_put_port_mixer),
10312 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10313 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10314 msm_routing_get_port_mixer,
10315 msm_routing_put_port_mixer),
10316 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10317 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10318 msm_routing_get_port_mixer,
10319 msm_routing_put_port_mixer),
10320 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10321 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10322 msm_routing_get_port_mixer,
10323 msm_routing_put_port_mixer),
10324 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10325 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10326 msm_routing_get_port_mixer,
10327 msm_routing_put_port_mixer),
10328 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10329 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10330 msm_routing_get_port_mixer,
10331 msm_routing_put_port_mixer),
10332 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10333 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10334 msm_routing_get_port_mixer,
10335 msm_routing_put_port_mixer),
10336 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10337 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10338 msm_routing_get_port_mixer,
10339 msm_routing_put_port_mixer),
10340 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10341 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10342 msm_routing_get_port_mixer,
10343 msm_routing_put_port_mixer),
10344 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10345 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10346 msm_routing_get_port_mixer,
10347 msm_routing_put_port_mixer),
10348 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10349 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10350 msm_routing_get_port_mixer,
10351 msm_routing_put_port_mixer),
10352 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10353 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10354 msm_routing_get_port_mixer,
10355 msm_routing_put_port_mixer),
10356 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10357 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10358 msm_routing_get_port_mixer,
10359 msm_routing_put_port_mixer),
10360 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10361 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10362 msm_routing_get_port_mixer,
10363 msm_routing_put_port_mixer),
10364 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10365 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10366 msm_routing_get_port_mixer,
10367 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010368 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10369 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10370 msm_routing_get_port_mixer,
10371 msm_routing_put_port_mixer),
10372 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10373 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10374 msm_routing_get_port_mixer,
10375 msm_routing_put_port_mixer),
10376 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10377 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10378 msm_routing_get_port_mixer,
10379 msm_routing_put_port_mixer),
10380 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10381 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10382 msm_routing_get_port_mixer,
10383 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010384};
10385
10386static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
10387 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10388 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10389 msm_routing_get_port_mixer,
10390 msm_routing_put_port_mixer),
10391 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10392 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10393 msm_routing_get_port_mixer,
10394 msm_routing_put_port_mixer),
10395 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10396 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10397 msm_routing_get_port_mixer,
10398 msm_routing_put_port_mixer),
10399 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10400 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10401 msm_routing_get_port_mixer,
10402 msm_routing_put_port_mixer),
10403 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10404 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10405 msm_routing_get_port_mixer,
10406 msm_routing_put_port_mixer),
10407 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10408 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10409 msm_routing_get_port_mixer,
10410 msm_routing_put_port_mixer),
10411 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10412 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10413 msm_routing_get_port_mixer,
10414 msm_routing_put_port_mixer),
10415 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10416 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10417 msm_routing_get_port_mixer,
10418 msm_routing_put_port_mixer),
10419 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10420 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10421 msm_routing_get_port_mixer,
10422 msm_routing_put_port_mixer),
10423 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10424 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10425 msm_routing_get_port_mixer,
10426 msm_routing_put_port_mixer),
10427 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10428 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10429 msm_routing_get_port_mixer,
10430 msm_routing_put_port_mixer),
10431 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10432 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10433 msm_routing_get_port_mixer,
10434 msm_routing_put_port_mixer),
10435 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10436 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10437 msm_routing_get_port_mixer,
10438 msm_routing_put_port_mixer),
10439 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10440 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10441 msm_routing_get_port_mixer,
10442 msm_routing_put_port_mixer),
10443 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10444 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10445 msm_routing_get_port_mixer,
10446 msm_routing_put_port_mixer),
10447 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10448 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10449 msm_routing_get_port_mixer,
10450 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010451 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10452 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10453 msm_routing_get_port_mixer,
10454 msm_routing_put_port_mixer),
10455 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10456 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10457 msm_routing_get_port_mixer,
10458 msm_routing_put_port_mixer),
10459 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10460 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10461 msm_routing_get_port_mixer,
10462 msm_routing_put_port_mixer),
10463 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10464 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10465 msm_routing_get_port_mixer,
10466 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010467};
10468
10469static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10470 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10471 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10472 msm_routing_get_port_mixer,
10473 msm_routing_put_port_mixer),
10474 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10475 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10476 msm_routing_get_port_mixer,
10477 msm_routing_put_port_mixer),
10478 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10479 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10480 msm_routing_get_port_mixer,
10481 msm_routing_put_port_mixer),
10482 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10483 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10484 msm_routing_get_port_mixer,
10485 msm_routing_put_port_mixer),
10486 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10487 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10488 msm_routing_get_port_mixer,
10489 msm_routing_put_port_mixer),
10490 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10491 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10492 msm_routing_get_port_mixer,
10493 msm_routing_put_port_mixer),
10494 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10495 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10496 msm_routing_get_port_mixer,
10497 msm_routing_put_port_mixer),
10498 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10499 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10500 msm_routing_get_port_mixer,
10501 msm_routing_put_port_mixer),
10502 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10503 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10504 msm_routing_get_port_mixer,
10505 msm_routing_put_port_mixer),
10506 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10507 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10508 msm_routing_get_port_mixer,
10509 msm_routing_put_port_mixer),
10510 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10511 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10512 msm_routing_get_port_mixer,
10513 msm_routing_put_port_mixer),
10514 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10515 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10516 msm_routing_get_port_mixer,
10517 msm_routing_put_port_mixer),
10518 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10519 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10520 msm_routing_get_port_mixer,
10521 msm_routing_put_port_mixer),
10522 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10523 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10524 msm_routing_get_port_mixer,
10525 msm_routing_put_port_mixer),
10526 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10527 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10528 msm_routing_get_port_mixer,
10529 msm_routing_put_port_mixer),
10530 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10531 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10532 msm_routing_get_port_mixer,
10533 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010534 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10535 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10536 msm_routing_get_port_mixer,
10537 msm_routing_put_port_mixer),
10538 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10539 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10540 msm_routing_get_port_mixer,
10541 msm_routing_put_port_mixer),
10542 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10543 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10544 msm_routing_get_port_mixer,
10545 msm_routing_put_port_mixer),
10546 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10547 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10548 msm_routing_get_port_mixer,
10549 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010550};
10551
10552static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10553 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10554 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10555 msm_routing_get_port_mixer,
10556 msm_routing_put_port_mixer),
10557 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10558 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10559 msm_routing_get_port_mixer,
10560 msm_routing_put_port_mixer),
10561 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10562 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10563 msm_routing_get_port_mixer,
10564 msm_routing_put_port_mixer),
10565 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10566 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10567 msm_routing_get_port_mixer,
10568 msm_routing_put_port_mixer),
10569 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10570 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10571 msm_routing_get_port_mixer,
10572 msm_routing_put_port_mixer),
10573 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10574 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10575 msm_routing_get_port_mixer,
10576 msm_routing_put_port_mixer),
10577 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10578 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10579 msm_routing_get_port_mixer,
10580 msm_routing_put_port_mixer),
10581 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10582 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10583 msm_routing_get_port_mixer,
10584 msm_routing_put_port_mixer),
10585 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10586 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10587 msm_routing_get_port_mixer,
10588 msm_routing_put_port_mixer),
10589 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10590 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10591 msm_routing_get_port_mixer,
10592 msm_routing_put_port_mixer),
10593 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10594 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10595 msm_routing_get_port_mixer,
10596 msm_routing_put_port_mixer),
10597 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10598 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10599 msm_routing_get_port_mixer,
10600 msm_routing_put_port_mixer),
10601 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10602 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10603 msm_routing_get_port_mixer,
10604 msm_routing_put_port_mixer),
10605 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10606 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10607 msm_routing_get_port_mixer,
10608 msm_routing_put_port_mixer),
10609 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10610 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10611 msm_routing_get_port_mixer,
10612 msm_routing_put_port_mixer),
10613 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10614 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10615 msm_routing_get_port_mixer,
10616 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010617 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10618 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10619 msm_routing_get_port_mixer,
10620 msm_routing_put_port_mixer),
10621 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10622 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10623 msm_routing_get_port_mixer,
10624 msm_routing_put_port_mixer),
10625 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10626 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10627 msm_routing_get_port_mixer,
10628 msm_routing_put_port_mixer),
10629 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10630 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10631 msm_routing_get_port_mixer,
10632 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010633};
10634
10635static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10636 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10637 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10638 msm_routing_get_port_mixer,
10639 msm_routing_put_port_mixer),
10640 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10641 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10642 msm_routing_get_port_mixer,
10643 msm_routing_put_port_mixer),
10644 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10645 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10646 msm_routing_get_port_mixer,
10647 msm_routing_put_port_mixer),
10648 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10649 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10650 msm_routing_get_port_mixer,
10651 msm_routing_put_port_mixer),
10652 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10653 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10654 msm_routing_get_port_mixer,
10655 msm_routing_put_port_mixer),
10656 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10657 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10658 msm_routing_get_port_mixer,
10659 msm_routing_put_port_mixer),
10660 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10661 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10662 msm_routing_get_port_mixer,
10663 msm_routing_put_port_mixer),
10664 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10665 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10666 msm_routing_get_port_mixer,
10667 msm_routing_put_port_mixer),
10668 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10669 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10670 msm_routing_get_port_mixer,
10671 msm_routing_put_port_mixer),
10672 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10673 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10674 msm_routing_get_port_mixer,
10675 msm_routing_put_port_mixer),
10676 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10677 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10678 msm_routing_get_port_mixer,
10679 msm_routing_put_port_mixer),
10680 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10681 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10682 msm_routing_get_port_mixer,
10683 msm_routing_put_port_mixer),
10684 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10685 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10686 msm_routing_get_port_mixer,
10687 msm_routing_put_port_mixer),
10688 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10689 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10690 msm_routing_get_port_mixer,
10691 msm_routing_put_port_mixer),
10692 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10693 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10694 msm_routing_get_port_mixer,
10695 msm_routing_put_port_mixer),
10696 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10697 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10698 msm_routing_get_port_mixer,
10699 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010700 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10701 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10702 msm_routing_get_port_mixer,
10703 msm_routing_put_port_mixer),
10704 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10705 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10706 msm_routing_get_port_mixer,
10707 msm_routing_put_port_mixer),
10708 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10709 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10710 msm_routing_get_port_mixer,
10711 msm_routing_put_port_mixer),
10712 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10713 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10714 msm_routing_get_port_mixer,
10715 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010716};
10717
10718static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10719 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10720 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10721 msm_routing_get_port_mixer,
10722 msm_routing_put_port_mixer),
10723 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10724 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10725 msm_routing_get_port_mixer,
10726 msm_routing_put_port_mixer),
10727 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10728 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10729 msm_routing_get_port_mixer,
10730 msm_routing_put_port_mixer),
10731 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10732 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10733 msm_routing_get_port_mixer,
10734 msm_routing_put_port_mixer),
10735 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10736 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10737 msm_routing_get_port_mixer,
10738 msm_routing_put_port_mixer),
10739 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10740 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10741 msm_routing_get_port_mixer,
10742 msm_routing_put_port_mixer),
10743 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10744 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10745 msm_routing_get_port_mixer,
10746 msm_routing_put_port_mixer),
10747 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10748 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10749 msm_routing_get_port_mixer,
10750 msm_routing_put_port_mixer),
10751 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10752 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10753 msm_routing_get_port_mixer,
10754 msm_routing_put_port_mixer),
10755 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10756 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10757 msm_routing_get_port_mixer,
10758 msm_routing_put_port_mixer),
10759 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10760 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10761 msm_routing_get_port_mixer,
10762 msm_routing_put_port_mixer),
10763 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10764 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10765 msm_routing_get_port_mixer,
10766 msm_routing_put_port_mixer),
10767 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10768 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10769 msm_routing_get_port_mixer,
10770 msm_routing_put_port_mixer),
10771 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10772 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10773 msm_routing_get_port_mixer,
10774 msm_routing_put_port_mixer),
10775 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10776 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10777 msm_routing_get_port_mixer,
10778 msm_routing_put_port_mixer),
10779 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10780 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10781 msm_routing_get_port_mixer,
10782 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010783 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10784 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10785 msm_routing_get_port_mixer,
10786 msm_routing_put_port_mixer),
10787 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10788 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10789 msm_routing_get_port_mixer,
10790 msm_routing_put_port_mixer),
10791 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10792 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10793 msm_routing_get_port_mixer,
10794 msm_routing_put_port_mixer),
10795 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10796 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10797 msm_routing_get_port_mixer,
10798 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010799};
10800
10801static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10802 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10803 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10804 msm_routing_get_port_mixer,
10805 msm_routing_put_port_mixer),
10806 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10807 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10808 msm_routing_get_port_mixer,
10809 msm_routing_put_port_mixer),
10810 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10811 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10812 msm_routing_get_port_mixer,
10813 msm_routing_put_port_mixer),
10814 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10815 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10816 msm_routing_get_port_mixer,
10817 msm_routing_put_port_mixer),
10818 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10819 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10820 msm_routing_get_port_mixer,
10821 msm_routing_put_port_mixer),
10822 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10823 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10824 msm_routing_get_port_mixer,
10825 msm_routing_put_port_mixer),
10826 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10827 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10828 msm_routing_get_port_mixer,
10829 msm_routing_put_port_mixer),
10830 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10831 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10832 msm_routing_get_port_mixer,
10833 msm_routing_put_port_mixer),
10834 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10835 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10836 msm_routing_get_port_mixer,
10837 msm_routing_put_port_mixer),
10838 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10839 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10840 msm_routing_get_port_mixer,
10841 msm_routing_put_port_mixer),
10842 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10843 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10844 msm_routing_get_port_mixer,
10845 msm_routing_put_port_mixer),
10846 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10847 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10848 msm_routing_get_port_mixer,
10849 msm_routing_put_port_mixer),
10850 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10851 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10852 msm_routing_get_port_mixer,
10853 msm_routing_put_port_mixer),
10854 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10855 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10856 msm_routing_get_port_mixer,
10857 msm_routing_put_port_mixer),
10858 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10859 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10860 msm_routing_get_port_mixer,
10861 msm_routing_put_port_mixer),
10862 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10863 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10864 msm_routing_get_port_mixer,
10865 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010866 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10867 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10868 msm_routing_get_port_mixer,
10869 msm_routing_put_port_mixer),
10870 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10871 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10872 msm_routing_get_port_mixer,
10873 msm_routing_put_port_mixer),
10874 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10875 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10876 msm_routing_get_port_mixer,
10877 msm_routing_put_port_mixer),
10878 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10879 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10880 msm_routing_get_port_mixer,
10881 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010882};
10883
10884static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10885 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10886 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10887 msm_routing_get_port_mixer,
10888 msm_routing_put_port_mixer),
10889 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10890 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10891 msm_routing_get_port_mixer,
10892 msm_routing_put_port_mixer),
10893 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10894 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10895 msm_routing_get_port_mixer,
10896 msm_routing_put_port_mixer),
10897 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10898 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10899 msm_routing_get_port_mixer,
10900 msm_routing_put_port_mixer),
10901 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10902 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10903 msm_routing_get_port_mixer,
10904 msm_routing_put_port_mixer),
10905 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10906 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10907 msm_routing_get_port_mixer,
10908 msm_routing_put_port_mixer),
10909 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10910 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10911 msm_routing_get_port_mixer,
10912 msm_routing_put_port_mixer),
10913 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10914 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10915 msm_routing_get_port_mixer,
10916 msm_routing_put_port_mixer),
10917 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10918 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10919 msm_routing_get_port_mixer,
10920 msm_routing_put_port_mixer),
10921 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10922 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10923 msm_routing_get_port_mixer,
10924 msm_routing_put_port_mixer),
10925 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10926 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10927 msm_routing_get_port_mixer,
10928 msm_routing_put_port_mixer),
10929 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10930 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10931 msm_routing_get_port_mixer,
10932 msm_routing_put_port_mixer),
10933 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10934 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10935 msm_routing_get_port_mixer,
10936 msm_routing_put_port_mixer),
10937 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10938 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10939 msm_routing_get_port_mixer,
10940 msm_routing_put_port_mixer),
10941 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10942 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10943 msm_routing_get_port_mixer,
10944 msm_routing_put_port_mixer),
10945 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10946 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10947 msm_routing_get_port_mixer,
10948 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010949 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10950 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10951 msm_routing_get_port_mixer,
10952 msm_routing_put_port_mixer),
10953 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10954 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10955 msm_routing_get_port_mixer,
10956 msm_routing_put_port_mixer),
10957 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10958 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10959 msm_routing_get_port_mixer,
10960 msm_routing_put_port_mixer),
10961 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10962 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10963 msm_routing_get_port_mixer,
10964 msm_routing_put_port_mixer),
10965};
10966
10967static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
10968 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10969 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10970 msm_routing_get_port_mixer,
10971 msm_routing_put_port_mixer),
10972 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10973 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10974 msm_routing_get_port_mixer,
10975 msm_routing_put_port_mixer),
10976 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10977 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10978 msm_routing_get_port_mixer,
10979 msm_routing_put_port_mixer),
10980 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10981 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10982 msm_routing_get_port_mixer,
10983 msm_routing_put_port_mixer),
10984 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10985 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10986 msm_routing_get_port_mixer,
10987 msm_routing_put_port_mixer),
10988 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10989 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10990 msm_routing_get_port_mixer,
10991 msm_routing_put_port_mixer),
10992 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10993 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10994 msm_routing_get_port_mixer,
10995 msm_routing_put_port_mixer),
10996 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10997 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10998 msm_routing_get_port_mixer,
10999 msm_routing_put_port_mixer),
11000 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11001 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11002 msm_routing_get_port_mixer,
11003 msm_routing_put_port_mixer),
11004 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11005 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11006 msm_routing_get_port_mixer,
11007 msm_routing_put_port_mixer),
11008 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11009 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11010 msm_routing_get_port_mixer,
11011 msm_routing_put_port_mixer),
11012 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11013 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11014 msm_routing_get_port_mixer,
11015 msm_routing_put_port_mixer),
11016 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11017 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11018 msm_routing_get_port_mixer,
11019 msm_routing_put_port_mixer),
11020 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11021 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11022 msm_routing_get_port_mixer,
11023 msm_routing_put_port_mixer),
11024 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11025 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11026 msm_routing_get_port_mixer,
11027 msm_routing_put_port_mixer),
11028 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11029 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11030 msm_routing_get_port_mixer,
11031 msm_routing_put_port_mixer),
11032 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11033 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11034 msm_routing_get_port_mixer,
11035 msm_routing_put_port_mixer),
11036 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11037 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11038 msm_routing_get_port_mixer,
11039 msm_routing_put_port_mixer),
11040 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11041 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11042 msm_routing_get_port_mixer,
11043 msm_routing_put_port_mixer),
11044 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11045 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11046 msm_routing_get_port_mixer,
11047 msm_routing_put_port_mixer),
11048};
11049
11050static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
11051 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11052 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11053 msm_routing_get_port_mixer,
11054 msm_routing_put_port_mixer),
11055 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11056 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11057 msm_routing_get_port_mixer,
11058 msm_routing_put_port_mixer),
11059 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11060 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11061 msm_routing_get_port_mixer,
11062 msm_routing_put_port_mixer),
11063 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11064 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11065 msm_routing_get_port_mixer,
11066 msm_routing_put_port_mixer),
11067 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11068 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11069 msm_routing_get_port_mixer,
11070 msm_routing_put_port_mixer),
11071 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11072 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11073 msm_routing_get_port_mixer,
11074 msm_routing_put_port_mixer),
11075 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11076 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11077 msm_routing_get_port_mixer,
11078 msm_routing_put_port_mixer),
11079 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11080 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11081 msm_routing_get_port_mixer,
11082 msm_routing_put_port_mixer),
11083 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11084 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11085 msm_routing_get_port_mixer,
11086 msm_routing_put_port_mixer),
11087 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11088 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11089 msm_routing_get_port_mixer,
11090 msm_routing_put_port_mixer),
11091 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11092 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11093 msm_routing_get_port_mixer,
11094 msm_routing_put_port_mixer),
11095 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11096 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11097 msm_routing_get_port_mixer,
11098 msm_routing_put_port_mixer),
11099 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11100 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11101 msm_routing_get_port_mixer,
11102 msm_routing_put_port_mixer),
11103 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11104 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11105 msm_routing_get_port_mixer,
11106 msm_routing_put_port_mixer),
11107 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11108 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11109 msm_routing_get_port_mixer,
11110 msm_routing_put_port_mixer),
11111 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11112 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11113 msm_routing_get_port_mixer,
11114 msm_routing_put_port_mixer),
11115 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11116 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11117 msm_routing_get_port_mixer,
11118 msm_routing_put_port_mixer),
11119 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11120 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11121 msm_routing_get_port_mixer,
11122 msm_routing_put_port_mixer),
11123 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11124 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11125 msm_routing_get_port_mixer,
11126 msm_routing_put_port_mixer),
11127 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11128 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11129 msm_routing_get_port_mixer,
11130 msm_routing_put_port_mixer),
11131};
11132
11133static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
11134 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11135 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11136 msm_routing_get_port_mixer,
11137 msm_routing_put_port_mixer),
11138 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11139 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11140 msm_routing_get_port_mixer,
11141 msm_routing_put_port_mixer),
11142 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11143 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11144 msm_routing_get_port_mixer,
11145 msm_routing_put_port_mixer),
11146 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11147 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11148 msm_routing_get_port_mixer,
11149 msm_routing_put_port_mixer),
11150 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11151 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11152 msm_routing_get_port_mixer,
11153 msm_routing_put_port_mixer),
11154 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11155 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11156 msm_routing_get_port_mixer,
11157 msm_routing_put_port_mixer),
11158 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11159 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11160 msm_routing_get_port_mixer,
11161 msm_routing_put_port_mixer),
11162 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11163 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11164 msm_routing_get_port_mixer,
11165 msm_routing_put_port_mixer),
11166 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11167 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11168 msm_routing_get_port_mixer,
11169 msm_routing_put_port_mixer),
11170 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11171 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11172 msm_routing_get_port_mixer,
11173 msm_routing_put_port_mixer),
11174 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11175 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11176 msm_routing_get_port_mixer,
11177 msm_routing_put_port_mixer),
11178 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11179 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11180 msm_routing_get_port_mixer,
11181 msm_routing_put_port_mixer),
11182 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11183 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11184 msm_routing_get_port_mixer,
11185 msm_routing_put_port_mixer),
11186 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11187 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11188 msm_routing_get_port_mixer,
11189 msm_routing_put_port_mixer),
11190 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11191 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11192 msm_routing_get_port_mixer,
11193 msm_routing_put_port_mixer),
11194 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11195 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11196 msm_routing_get_port_mixer,
11197 msm_routing_put_port_mixer),
11198 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11199 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11200 msm_routing_get_port_mixer,
11201 msm_routing_put_port_mixer),
11202 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11203 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11204 msm_routing_get_port_mixer,
11205 msm_routing_put_port_mixer),
11206 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11207 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11208 msm_routing_get_port_mixer,
11209 msm_routing_put_port_mixer),
11210 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11211 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11212 msm_routing_get_port_mixer,
11213 msm_routing_put_port_mixer),
11214};
11215
11216static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
11217 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11218 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11219 msm_routing_get_port_mixer,
11220 msm_routing_put_port_mixer),
11221 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11222 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11223 msm_routing_get_port_mixer,
11224 msm_routing_put_port_mixer),
11225 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11226 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11227 msm_routing_get_port_mixer,
11228 msm_routing_put_port_mixer),
11229 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11230 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11231 msm_routing_get_port_mixer,
11232 msm_routing_put_port_mixer),
11233 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11234 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11235 msm_routing_get_port_mixer,
11236 msm_routing_put_port_mixer),
11237 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11238 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11239 msm_routing_get_port_mixer,
11240 msm_routing_put_port_mixer),
11241 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11242 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11243 msm_routing_get_port_mixer,
11244 msm_routing_put_port_mixer),
11245 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11246 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11247 msm_routing_get_port_mixer,
11248 msm_routing_put_port_mixer),
11249 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11250 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11251 msm_routing_get_port_mixer,
11252 msm_routing_put_port_mixer),
11253 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11254 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11255 msm_routing_get_port_mixer,
11256 msm_routing_put_port_mixer),
11257 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11258 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11259 msm_routing_get_port_mixer,
11260 msm_routing_put_port_mixer),
11261 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11262 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11263 msm_routing_get_port_mixer,
11264 msm_routing_put_port_mixer),
11265 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11266 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11267 msm_routing_get_port_mixer,
11268 msm_routing_put_port_mixer),
11269 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11270 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11271 msm_routing_get_port_mixer,
11272 msm_routing_put_port_mixer),
11273 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11274 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11275 msm_routing_get_port_mixer,
11276 msm_routing_put_port_mixer),
11277 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11278 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11279 msm_routing_get_port_mixer,
11280 msm_routing_put_port_mixer),
11281 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11282 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11283 msm_routing_get_port_mixer,
11284 msm_routing_put_port_mixer),
11285 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11286 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11287 msm_routing_get_port_mixer,
11288 msm_routing_put_port_mixer),
11289 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11290 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11291 msm_routing_get_port_mixer,
11292 msm_routing_put_port_mixer),
11293 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11294 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11295 msm_routing_get_port_mixer,
11296 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011297};
11298
11299static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
11300 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11301 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11302 msm_routing_put_port_mixer),
11303 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11304 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11305 msm_routing_put_port_mixer),
11306 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11307 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11308 msm_routing_put_port_mixer),
11309 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11310 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11311 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011312 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11313 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11314 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011315 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11316 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11317 msm_routing_put_port_mixer),
11318 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11319 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11320 msm_routing_put_port_mixer),
11321};
11322
11323static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
11324 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11325 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11326 msm_routing_put_port_mixer),
11327 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11328 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11329 msm_routing_put_port_mixer),
11330 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11331 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11332 msm_routing_put_port_mixer),
11333 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11334 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11335 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011336 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11337 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11338 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011339 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11340 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11341 msm_routing_put_port_mixer),
11342 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11343 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
11344 msm_routing_put_port_mixer),
11345 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11346 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11347 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080011348 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11349 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
11350 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011351};
11352
11353static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
11354 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11355 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11356 msm_routing_put_listen_mixer),
11357 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11358 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11359 msm_routing_put_listen_mixer),
11360 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11361 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11362 msm_routing_put_listen_mixer),
11363 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11364 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11365 msm_routing_put_listen_mixer),
11366 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11367 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11368 msm_routing_put_listen_mixer),
11369 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11370 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11371 msm_routing_put_listen_mixer),
11372 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11373 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11374 msm_routing_put_listen_mixer),
11375 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11376 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11377 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011378 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11379 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11380 msm_routing_put_listen_mixer),
11381 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11382 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11383 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011384};
11385
11386static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
11387 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11388 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11389 msm_routing_put_listen_mixer),
11390 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11391 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11392 msm_routing_put_listen_mixer),
11393 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11394 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11395 msm_routing_put_listen_mixer),
11396 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11397 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11398 msm_routing_put_listen_mixer),
11399 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11400 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11401 msm_routing_put_listen_mixer),
11402 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11403 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11404 msm_routing_put_listen_mixer),
11405 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11406 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11407 msm_routing_put_listen_mixer),
11408 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11409 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11410 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011411 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11412 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11413 msm_routing_put_listen_mixer),
11414 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11415 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11416 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011417};
11418
11419static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
11420 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11421 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11422 msm_routing_put_listen_mixer),
11423 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11424 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11425 msm_routing_put_listen_mixer),
11426 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11427 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11428 msm_routing_put_listen_mixer),
11429 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11430 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11431 msm_routing_put_listen_mixer),
11432 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11433 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11434 msm_routing_put_listen_mixer),
11435 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11436 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11437 msm_routing_put_listen_mixer),
11438 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11439 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11440 msm_routing_put_listen_mixer),
11441 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11442 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11443 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011444 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11445 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11446 msm_routing_put_listen_mixer),
11447 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11448 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11449 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011450};
11451
11452static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11453 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11454 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11455 msm_routing_put_listen_mixer),
11456 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11457 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11458 msm_routing_put_listen_mixer),
11459 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11460 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11461 msm_routing_put_listen_mixer),
11462 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11463 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11464 msm_routing_put_listen_mixer),
11465 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11466 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11467 msm_routing_put_listen_mixer),
11468 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11469 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11470 msm_routing_put_listen_mixer),
11471 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11472 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11473 msm_routing_put_listen_mixer),
11474 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11475 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11476 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011477 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11478 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11479 msm_routing_put_listen_mixer),
11480 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11481 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11482 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011483};
11484
11485static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11486 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11487 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11488 msm_routing_put_listen_mixer),
11489 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11490 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11491 msm_routing_put_listen_mixer),
11492 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11493 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11494 msm_routing_put_listen_mixer),
11495 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11496 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11497 msm_routing_put_listen_mixer),
11498 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11499 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11500 msm_routing_put_listen_mixer),
11501 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11502 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11503 msm_routing_put_listen_mixer),
11504 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11505 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11506 msm_routing_put_listen_mixer),
11507 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11508 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11509 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011510 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11511 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11512 msm_routing_put_listen_mixer),
11513 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11514 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11515 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011516};
11517
11518static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11519 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11520 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11521 msm_routing_put_listen_mixer),
11522 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11523 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11524 msm_routing_put_listen_mixer),
11525 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11526 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11527 msm_routing_put_listen_mixer),
11528 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11529 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11530 msm_routing_put_listen_mixer),
11531 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11532 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11533 msm_routing_put_listen_mixer),
11534 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11535 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11536 msm_routing_put_listen_mixer),
11537 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11538 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11539 msm_routing_put_listen_mixer),
11540 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11541 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11542 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011543 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11544 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11545 msm_routing_put_listen_mixer),
11546 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11547 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11548 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011549};
11550
11551static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11552 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11553 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11554 msm_routing_put_listen_mixer),
11555 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11556 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11557 msm_routing_put_listen_mixer),
11558 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11559 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11560 msm_routing_put_listen_mixer),
11561 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11562 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11563 msm_routing_put_listen_mixer),
11564 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11565 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11566 msm_routing_put_listen_mixer),
11567 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11568 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11569 msm_routing_put_listen_mixer),
11570 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11571 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11572 msm_routing_put_listen_mixer),
11573 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11574 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11575 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011576 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11577 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11578 msm_routing_put_listen_mixer),
11579 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11580 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11581 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011582};
11583
11584static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11585 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11586 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11587 msm_routing_put_listen_mixer),
11588 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11589 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11590 msm_routing_put_listen_mixer),
11591 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11592 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11593 msm_routing_put_listen_mixer),
11594 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11595 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11596 msm_routing_put_listen_mixer),
11597 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11598 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11599 msm_routing_put_listen_mixer),
11600 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11601 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11602 msm_routing_put_listen_mixer),
11603 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11604 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11605 msm_routing_put_listen_mixer),
11606 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11607 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11608 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011609 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11610 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11611 msm_routing_put_listen_mixer),
11612 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11613 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11614 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011615};
11616
11617static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11618 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11619 0, 1, 0, msm_routing_get_switch_mixer,
11620 msm_routing_put_switch_mixer);
11621
11622static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11623 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11624 0, 1, 0, msm_routing_get_switch_mixer,
11625 msm_routing_put_switch_mixer);
11626
11627static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11628 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11629 0, 1, 0, msm_routing_get_switch_mixer,
11630 msm_routing_put_switch_mixer);
11631
11632static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11633 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11634 0, 1, 0, msm_routing_get_switch_mixer,
11635 msm_routing_put_switch_mixer);
11636
11637static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11638 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11639 0, 1, 0, msm_routing_get_switch_mixer,
11640 msm_routing_put_switch_mixer);
11641
11642static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11643 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11644 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11645 msm_routing_put_fm_pcmrx_switch_mixer);
11646
11647static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11648 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11649 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11650 msm_routing_put_int0_mi2s_switch_mixer);
11651
11652static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11653 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11654 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11655 msm_routing_put_int4_mi2s_switch_mixer);
11656
11657static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11658 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11659 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11660 msm_routing_put_pri_mi2s_switch_mixer);
11661
11662static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11663 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11664 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11665 msm_routing_put_sec_mi2s_switch_mixer);
11666
11667static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11668 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11669 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11670 msm_routing_put_tert_mi2s_switch_mixer);
11671
11672static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11673 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11674 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11675 msm_routing_put_quat_mi2s_switch_mixer);
11676
Rohit Kumara5077932017-09-10 22:05:05 +053011677static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11678 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11679 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11680 msm_routing_put_quin_mi2s_switch_mixer);
11681
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011682static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11683 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11684 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11685 msm_routing_put_hfp_switch_mixer);
11686
11687static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11688 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11689 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11690 msm_routing_put_hfp_switch_mixer);
11691
11692static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11693 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11694 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11695 msm_routing_put_hfp_switch_mixer);
11696
11697static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11698 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11699 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11700 msm_routing_put_hfp_switch_mixer);
11701
11702static const struct snd_kcontrol_new usb_switch_mixer_controls =
11703 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11704 0, 1, 0, msm_routing_get_usb_switch_mixer,
11705 msm_routing_put_usb_switch_mixer);
11706
Aniket Kumar Lataf8664712018-02-22 14:46:09 -080011707static const struct snd_kcontrol_new a2dp_slim7_switch_mixer_controls =
11708 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11709 0, 1, 0, msm_routing_a2dp_switch_mixer_get,
11710 msm_routing_a2dp_switch_mixer_put);
11711
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011712static const struct soc_enum lsm_port_enum =
11713 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11714
11715static const char * const lsm_func_text[] = {
11716 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11717};
11718static const struct soc_enum lsm_func_enum =
11719 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11720
11721static const struct snd_kcontrol_new lsm_controls[] = {
11722 /* kcontrol of lsm_function */
11723 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11724 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11725 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11726 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11727 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11728 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11729 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11730 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11731 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11732 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11733 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11734 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11735 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11736 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11737 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11738 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11739 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11740 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Ashish Jain01b10322018-05-12 15:37:44 +053011741 SOC_ENUM_EXT(PRI_TDM_TX_2_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11742 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11743 SOC_ENUM_EXT(PRI_TDM_TX_3_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11744 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011745 /* kcontrol of lsm_port */
11746 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11747 msm_routing_lsm_port_get,
11748 msm_routing_lsm_port_put),
11749 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11750 msm_routing_lsm_port_get,
11751 msm_routing_lsm_port_put),
11752 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11753 msm_routing_lsm_port_get,
11754 msm_routing_lsm_port_put),
11755 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11756 msm_routing_lsm_port_get,
11757 msm_routing_lsm_port_put),
11758 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11759 msm_routing_lsm_port_get,
11760 msm_routing_lsm_port_put),
11761 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11762 msm_routing_lsm_port_get,
11763 msm_routing_lsm_port_put),
11764 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11765 msm_routing_lsm_port_get,
11766 msm_routing_lsm_port_put),
11767 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11768 msm_routing_lsm_port_get,
11769 msm_routing_lsm_port_put),
11770};
11771
11772static const char * const aanc_slim_0_rx_text[] = {
11773 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11774 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11775};
11776
11777static const struct soc_enum aanc_slim_0_rx_enum =
11778 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11779 aanc_slim_0_rx_text);
11780
11781static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11782 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11783 msm_routing_slim_0_rx_aanc_mux_get,
11784 msm_routing_slim_0_rx_aanc_mux_put)
11785};
11786
11787static int msm_routing_get_stereo_to_custom_stereo_control(
11788 struct snd_kcontrol *kcontrol,
11789 struct snd_ctl_elem_value *ucontrol)
11790{
11791 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11792 return 0;
11793}
11794
11795static int msm_routing_put_stereo_to_custom_stereo_control(
11796 struct snd_kcontrol *kcontrol,
11797 struct snd_ctl_elem_value *ucontrol)
11798{
11799 int flag = 0, i = 0, rc = 0, idx = 0;
11800 int be_index = 0, port_id, topo_id;
11801 unsigned int session_id = 0;
11802 uint16_t op_FL_ip_FL_weight = 0;
11803 uint16_t op_FL_ip_FR_weight = 0;
11804 uint16_t op_FR_ip_FL_weight = 0;
11805 uint16_t op_FR_ip_FR_weight = 0;
11806
11807 flag = ucontrol->value.integer.value[0];
11808 pr_debug("%s E flag %d\n", __func__, flag);
11809
11810 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11811 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11812 __func__, is_custom_stereo_on, flag);
11813 return 0;
11814 }
11815 is_custom_stereo_on = flag ? true : false;
11816 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11817 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11818 port_id = msm_bedais[be_index].port_id;
11819 if (!msm_bedais[be_index].active)
11820 continue;
11821 if ((port_id != SLIMBUS_0_RX) &&
11822 (port_id != RT_PROXY_PORT_001_RX) &&
11823 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11824 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11825 continue;
11826
11827 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11828 MSM_FRONTEND_DAI_MM_SIZE) {
11829 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11830 LEGACY_PCM_MODE)
11831 goto skip_send_custom_stereo;
11832 session_id =
11833 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11834 if (is_custom_stereo_on) {
11835 op_FL_ip_FL_weight =
11836 Q14_GAIN_ZERO_POINT_FIVE;
11837 op_FL_ip_FR_weight =
11838 Q14_GAIN_ZERO_POINT_FIVE;
11839 op_FR_ip_FL_weight =
11840 Q14_GAIN_ZERO_POINT_FIVE;
11841 op_FR_ip_FR_weight =
11842 Q14_GAIN_ZERO_POINT_FIVE;
11843 } else {
11844 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11845 op_FL_ip_FR_weight = 0;
11846 op_FR_ip_FL_weight = 0;
11847 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11848 }
11849 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11850 unsigned long copp =
11851 session_copp_map[i]
11852 [SESSION_TYPE_RX][be_index];
11853 if (!test_bit(idx, &copp))
11854 goto skip_send_custom_stereo;
11855 topo_id = adm_get_topology_for_port_copp_idx(
11856 msm_bedais[be_index].port_id, idx);
11857 if (topo_id < 0)
11858 pr_debug("%s:Err:custom stereo topo %d",
11859 __func__, topo_id);
11860 pr_debug("idx %d\n", idx);
11861 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11862 rc = msm_ds2_dap_set_custom_stereo_onoff
11863 (msm_bedais[be_index].port_id,
11864 idx, is_custom_stereo_on);
11865 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11866 rc = dolby_dap_set_custom_stereo_onoff(
11867 msm_bedais[be_index].port_id,
11868 idx, is_custom_stereo_on);
11869 else
11870 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11871 (msm_bedais[be_index].port_id,
11872 idx, session_id,
11873 op_FL_ip_FL_weight,
11874 op_FL_ip_FR_weight,
11875 op_FR_ip_FL_weight,
11876 op_FR_ip_FR_weight);
11877 if (rc < 0)
11878skip_send_custom_stereo:
11879 pr_err("%s: err setting custom stereo\n",
11880 __func__);
11881 }
11882
11883 }
11884 }
11885 return 0;
11886}
11887
11888static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11889 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11890 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11891 msm_routing_put_stereo_to_custom_stereo_control),
11892};
11893
11894static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11895 struct snd_ctl_elem_value *ucontrol)
11896{
11897 return 0;
11898}
11899
11900static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11901 struct snd_ctl_elem_value *ucontrol)
11902{
11903 int i = 0, j;
11904 int num_app_types = ucontrol->value.integer.value[i++];
11905
11906 pr_debug("%s\n", __func__);
11907
11908 memset(app_type_cfg, 0, MAX_APP_TYPES*
11909 sizeof(struct msm_pcm_routing_app_type_data));
11910 if (num_app_types > MAX_APP_TYPES) {
11911 pr_err("%s: number of app types exceed the max supported\n",
11912 __func__);
11913 return -EINVAL;
11914 }
11915 for (j = 0; j < num_app_types; j++) {
11916 app_type_cfg[j].app_type =
11917 ucontrol->value.integer.value[i++];
11918 app_type_cfg[j].sample_rate =
11919 ucontrol->value.integer.value[i++];
11920 app_type_cfg[j].bit_width =
11921 ucontrol->value.integer.value[i++];
11922 }
11923
11924 return 0;
11925}
11926
11927static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
11928 struct snd_ctl_elem_value *ucontrol)
11929{
11930 int j, fe_id, be_id, port_type;
11931 int ret = 0;
11932 unsigned long copp;
11933 struct msm_pcm_routing_bdai_data *bedai;
11934 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11935 SESSION_TYPE_RX;
11936 int app_type = ucontrol->value.integer.value[1];
11937 int gain = (ucontrol->value.integer.value[2] +
11938 ucontrol->value.integer.value[3])/2;
11939
11940 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11941 MSM_AFE_PORT_TYPE_TX;
11942
11943 mutex_lock(&routing_lock);
11944 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11945 if (is_be_dai_extproc(be_id))
11946 continue;
11947
11948 bedai = &msm_bedais[be_id];
11949 if (afe_get_port_type(bedai->port_id) != port_type)
11950 continue;
11951
11952 if (!bedai->active)
11953 continue;
11954
11955 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11956 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11957 continue;
11958
11959 if (app_type !=
11960 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11961 continue;
11962
11963 copp = session_copp_map[fe_id][dir][be_id];
11964 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
11965 if (!test_bit(j, &copp))
11966 continue;
11967 ret |= adm_set_volume(bedai->port_id, j, gain);
11968 }
11969 }
11970 }
11971 mutex_unlock(&routing_lock);
11972 return ret ? -EINVAL : 0;
11973}
11974
11975static const struct snd_kcontrol_new app_type_cfg_controls[] = {
11976 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
11977 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
11978 msm_routing_put_app_type_cfg_control),
11979 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
11980 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
11981};
11982
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070011983static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
11984 struct snd_ctl_elem_value *ucontrol)
11985{
11986 int copp_idx, fe_id, be_id, port_type;
11987 int ret = 0;
11988 unsigned long copp;
11989 struct msm_pcm_routing_bdai_data *bedai;
11990 char *param_data = NULL;
11991 uint32_t *update_param_data = NULL;
11992 uint32_t param_size = sizeof(uint32_t) +
11993 sizeof(struct adm_param_data_v5);
11994 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11995 SESSION_TYPE_RX;
11996 int app_type = ucontrol->value.integer.value[1];
11997 int module_id = ucontrol->value.integer.value[2];
11998 int instance_id = ucontrol->value.integer.value[3];
11999 int param_id = ucontrol->value.integer.value[4];
12000 int param_value = ucontrol->value.integer.value[5];
12001
12002 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
12003 MSM_AFE_PORT_TYPE_TX;
12004 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
12005 __func__, app_type, module_id,
12006 instance_id, param_id, param_value);
12007
12008 param_data = kzalloc(param_size, GFP_KERNEL);
12009 if (!param_data)
12010 return -ENOMEM;
12011
12012 update_param_data = (uint32_t *)param_data;
12013 *update_param_data++ = module_id;
12014 *update_param_data++ = param_id;
12015 *update_param_data++ = sizeof(uint32_t);
12016 *update_param_data++ = param_value;
12017
12018 mutex_lock(&routing_lock);
12019 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
12020 if (is_be_dai_extproc(be_id))
12021 continue;
12022
12023 bedai = &msm_bedais[be_id];
12024 if (afe_get_port_type(bedai->port_id) != port_type)
12025 continue;
12026
12027 if (!bedai->active)
12028 continue;
12029
12030 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
12031 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
12032 continue;
12033
12034 if (app_type !=
12035 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
12036 continue;
12037
12038 copp = session_copp_map[fe_id][dir][be_id];
12039 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
12040 copp_idx++) {
12041 if (!test_bit(copp_idx, &copp))
12042 continue;
12043
12044 ret = adm_send_params_v5(bedai->port_id,
12045 copp_idx,
12046 param_data,
12047 param_size);
12048 if (ret) {
12049 pr_err("%s: Setting param failed with err=%d\n",
12050 __func__, ret);
12051 ret = -EINVAL;
12052 goto done;
12053 }
12054 }
12055 }
12056 }
12057done:
12058 mutex_unlock(&routing_lock);
12059 kfree(param_data);
12060 return ret;
12061}
12062
12063static const struct snd_kcontrol_new module_cfg_controls[] = {
12064 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
12065 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
12066};
12067
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012068static int msm_routing_get_lsm_app_type_cfg_control(
12069 struct snd_kcontrol *kcontrol,
12070 struct snd_ctl_elem_value *ucontrol)
12071{
12072 return 0;
12073}
12074
12075static int msm_routing_put_lsm_app_type_cfg_control(
12076 struct snd_kcontrol *kcontrol,
12077 struct snd_ctl_elem_value *ucontrol)
12078{
12079 int i = 0, j;
12080 int num_app_types = ucontrol->value.integer.value[i++];
12081
12082 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
12083 sizeof(struct msm_pcm_routing_app_type_data));
12084 if (num_app_types > MAX_APP_TYPES) {
12085 pr_err("%s: number of app types exceed the max supported\n",
12086 __func__);
12087 return -EINVAL;
12088 }
12089 for (j = 0; j < num_app_types; j++) {
12090 lsm_app_type_cfg[j].app_type =
12091 ucontrol->value.integer.value[i++];
12092 lsm_app_type_cfg[j].sample_rate =
12093 ucontrol->value.integer.value[i++];
12094 lsm_app_type_cfg[j].bit_width =
12095 ucontrol->value.integer.value[i++];
12096 }
12097
12098 return 0;
12099}
12100
12101static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
12102 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
12103 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
12104 msm_routing_put_lsm_app_type_cfg_control),
12105};
12106
12107static int msm_routing_get_use_ds1_or_ds2_control(
12108 struct snd_kcontrol *kcontrol,
12109 struct snd_ctl_elem_value *ucontrol)
12110{
12111 ucontrol->value.integer.value[0] = is_ds2_on;
12112 return 0;
12113}
12114
12115static int msm_routing_put_use_ds1_or_ds2_control(
12116 struct snd_kcontrol *kcontrol,
12117 struct snd_ctl_elem_value *ucontrol)
12118{
12119 is_ds2_on = ucontrol->value.integer.value[0];
12120 return 0;
12121}
12122
12123static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
12124 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
12125 1, 0, msm_routing_get_use_ds1_or_ds2_control,
12126 msm_routing_put_use_ds1_or_ds2_control),
12127};
12128
12129int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
12130 struct snd_ctl_elem_value *ucontrol) {
12131 int rc = 0;
12132 int be_idx = 0;
12133 char *param_value;
12134 int *update_param_value;
12135 uint32_t param_length = sizeof(uint32_t);
12136 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
12137
12138 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
12139 if (!param_value)
12140 return -ENOMEM;
12141
12142 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
12143 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
12144 break;
12145 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
12146 rc = adm_get_params(SLIMBUS_0_TX, 0,
12147 RMS_MODULEID_APPI_PASSTHRU,
12148 RMS_PARAM_FIRST_SAMPLE,
12149 param_length + param_payload_len,
12150 param_value);
12151 if (rc) {
12152 pr_err("%s: get parameters failed:%d\n", __func__, rc);
12153 kfree(param_value);
12154 return -EINVAL;
12155 }
12156 update_param_value = (int *)param_value;
12157 ucontrol->value.integer.value[0] = update_param_value[0];
12158
12159 pr_debug("%s: FROM DSP value[0] 0x%x\n",
12160 __func__, update_param_value[0]);
12161 }
12162 kfree(param_value);
12163 return 0;
12164}
12165
12166static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
12167 struct snd_ctl_elem_value *ucontrol)
12168{
12169 voc_session_id = ucontrol->value.integer.value[0];
12170
12171 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
12172
12173 return 0;
12174}
12175
12176static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
12177 struct snd_ctl_elem_value *ucontrol)
12178{
12179 ucontrol->value.integer.value[0] = voc_session_id;
12180
12181 return 0;
12182}
12183
12184static struct snd_kcontrol_new msm_voc_session_controls[] = {
12185 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
12186 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
12187 msm_voc_session_id_put),
12188};
12189
12190static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
12191 struct snd_ctl_elem_info *uinfo)
12192{
12193 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12194 uinfo->count = sizeof(struct sound_focus_param);
12195
12196 return 0;
12197}
12198
12199static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
12200 struct snd_ctl_elem_value *ucontrol)
12201{
12202 int ret = 0;
12203 struct sound_focus_param soundFocusData;
12204
12205 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12206 sizeof(struct sound_focus_param));
12207 ret = voc_set_sound_focus(soundFocusData);
12208 if (ret) {
12209 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12210 __func__, ret);
12211
12212 ret = -EINVAL;
12213 }
12214
12215 return ret;
12216}
12217
12218static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
12219 struct snd_ctl_elem_value *ucontrol)
12220{
12221 int ret = 0;
12222 struct sound_focus_param soundFocusData;
12223
12224 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
12225
12226 ret = voc_get_sound_focus(&soundFocusData);
12227 if (ret) {
12228 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12229 __func__, ret);
12230
12231 ret = -EINVAL;
12232 goto done;
12233 }
12234 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12235 sizeof(struct sound_focus_param));
12236
12237done:
12238 return ret;
12239}
12240
12241static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
12242 struct snd_ctl_elem_info *uinfo)
12243{
12244 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12245 uinfo->count = sizeof(struct source_tracking_param);
12246
12247 return 0;
12248}
12249
12250static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
12251 struct snd_ctl_elem_value *ucontrol)
12252{
12253 int ret = 0;
12254 struct source_tracking_param sourceTrackingData;
12255
12256 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
12257
12258 ret = voc_get_source_tracking(&sourceTrackingData);
12259 if (ret) {
12260 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12261 __func__, ret);
12262
12263 ret = -EINVAL;
12264 goto done;
12265 }
12266 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12267 sizeof(struct source_tracking_param));
12268
12269done:
12270 return ret;
12271}
12272
12273static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
12274 int *copp_idx)
12275{
12276 int i, idx, be_idx;
12277 int ret = 0;
12278 unsigned long copp;
12279
12280 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
12281
12282 ret = q6audio_validate_port(port_id);
12283 if (ret < 0) {
12284 pr_err("%s: port validation failed id 0x%x ret %d\n",
12285 __func__, port_id, ret);
12286
12287 ret = -EINVAL;
12288 goto done;
12289 }
12290
12291 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
12292 if (msm_bedais[be_idx].port_id == port_id)
12293 break;
12294 }
12295 if (be_idx >= MSM_BACKEND_DAI_MAX) {
12296 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
12297
12298 ret = -EINVAL;
12299 goto done;
12300 }
12301
12302 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
12303 MSM_FRONTEND_DAI_MM_SIZE) {
12304 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
12305 copp = session_copp_map[i]
12306 [session_type][be_idx];
12307 if (test_bit(idx, &copp))
12308 break;
12309 }
12310 if (idx >= MAX_COPPS_PER_PORT)
12311 continue;
12312 else
12313 break;
12314 }
12315 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
12316 pr_err("%s: Invalid FE, exiting\n", __func__);
12317
12318 ret = -EINVAL;
12319 goto done;
12320 }
12321 *copp_idx = idx;
12322 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
12323
12324done:
12325 return ret;
12326}
12327
12328static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
12329 const char *prefix, int *port_id)
12330{
12331 int ret = 0;
12332
12333 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
12334
12335 /*
12336 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
12337 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
12338 * and compare the string with the backend name to derive the port id.
12339 */
12340 if (!strcmp(kcontrol->id.name + strlen(prefix),
12341 "SLIMBUS_0")) {
12342 *port_id = SLIMBUS_0_TX;
12343 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12344 "TERT_MI2S")) {
12345 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
12346 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12347 "INT3_MI2S")) {
12348 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
12349 } else {
12350 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
12351 __func__, kcontrol->id.name);
12352
12353 ret = -EINVAL;
12354 goto done;
12355 }
12356 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
12357 __func__, kcontrol->id.name, *port_id);
12358
12359done:
12360 return ret;
12361}
12362
12363static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
12364 struct snd_ctl_elem_value *ucontrol)
12365{
12366 int ret = 0;
12367 struct sound_focus_param soundFocusData;
12368 int port_id, copp_idx;
12369
12370 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12371 "Sound Focus Audio Tx ", &port_id);
12372 if (ret != 0) {
12373 pr_err("%s: Error in deriving port id, err=%d\n",
12374 __func__, ret);
12375
12376 ret = -EINVAL;
12377 goto done;
12378 }
12379
12380 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12381 &copp_idx);
12382 if (ret) {
12383 pr_err("%s: Could not get copp idx for port_id=%d\n",
12384 __func__, port_id);
12385
12386 ret = -EINVAL;
12387 goto done;
12388 }
12389
12390 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12391 sizeof(struct sound_focus_param));
12392
12393 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
12394 if (ret) {
12395 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12396 __func__, ret);
12397
12398 ret = -EINVAL;
12399 goto done;
12400 }
12401
12402done:
12403 return ret;
12404}
12405
12406static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
12407 struct snd_ctl_elem_value *ucontrol)
12408{
12409 int ret = 0;
12410 struct sound_focus_param soundFocusData;
12411 int port_id, copp_idx;
12412
12413 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12414 "Sound Focus Audio Tx ", &port_id);
12415 if (ret) {
12416 pr_err("%s: Error in deriving port id, err=%d\n",
12417 __func__, ret);
12418
12419 ret = -EINVAL;
12420 goto done;
12421 }
12422
12423 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12424 &copp_idx);
12425 if (ret) {
12426 pr_err("%s: Could not get copp idx for port_id=%d\n",
12427 __func__, port_id);
12428
12429 ret = -EINVAL;
12430 goto done;
12431 }
12432
12433 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
12434 if (ret) {
12435 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12436 __func__, ret);
12437
12438 ret = -EINVAL;
12439 goto done;
12440 }
12441
12442 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12443 sizeof(struct sound_focus_param));
12444
12445done:
12446 return ret;
12447}
12448
12449static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
12450 struct snd_ctl_elem_value *ucontrol)
12451{
12452 int ret = 0;
12453 struct source_tracking_param sourceTrackingData;
12454 int port_id, copp_idx;
12455
12456 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12457 "Source Tracking Audio Tx ", &port_id);
12458 if (ret) {
12459 pr_err("%s: Error in deriving port id, err=%d\n",
12460 __func__, ret);
12461
12462 ret = -EINVAL;
12463 goto done;
12464 }
12465
12466 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12467 &copp_idx);
12468 if (ret) {
12469 pr_err("%s: Could not get copp idx for port_id=%d\n",
12470 __func__, port_id);
12471
12472 ret = -EINVAL;
12473 goto done;
12474 }
12475
12476 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
12477 if (ret) {
12478 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12479 __func__, ret);
12480
12481 ret = -EINVAL;
12482 goto done;
12483 }
12484
12485 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12486 sizeof(struct source_tracking_param));
12487
12488done:
12489 return ret;
12490}
12491
12492static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12493 {
12494 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12495 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12496 .name = "Sound Focus Voice Tx SLIMBUS_0",
12497 .info = msm_sound_focus_info,
12498 .get = msm_voice_sound_focus_get,
12499 .put = msm_voice_sound_focus_put,
12500 },
12501 {
12502 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12503 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12504 .name = "Source Tracking Voice Tx SLIMBUS_0",
12505 .info = msm_source_tracking_info,
12506 .get = msm_voice_source_tracking_get,
12507 },
12508 {
12509 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12510 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12511 .name = "Sound Focus Audio Tx SLIMBUS_0",
12512 .info = msm_sound_focus_info,
12513 .get = msm_audio_sound_focus_get,
12514 .put = msm_audio_sound_focus_put,
12515 },
12516 {
12517 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12518 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12519 .name = "Source Tracking Audio Tx SLIMBUS_0",
12520 .info = msm_source_tracking_info,
12521 .get = msm_audio_source_tracking_get,
12522 },
12523 {
12524 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12525 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12526 .name = "Sound Focus Voice Tx TERT_MI2S",
12527 .info = msm_sound_focus_info,
12528 .get = msm_voice_sound_focus_get,
12529 .put = msm_voice_sound_focus_put,
12530 },
12531 {
12532 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12533 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12534 .name = "Source Tracking Voice Tx TERT_MI2S",
12535 .info = msm_source_tracking_info,
12536 .get = msm_voice_source_tracking_get,
12537 },
12538 {
12539 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12540 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12541 .name = "Sound Focus Audio Tx TERT_MI2S",
12542 .info = msm_sound_focus_info,
12543 .get = msm_audio_sound_focus_get,
12544 .put = msm_audio_sound_focus_put,
12545 },
12546 {
12547 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12548 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12549 .name = "Source Tracking Audio Tx TERT_MI2S",
12550 .info = msm_source_tracking_info,
12551 .get = msm_audio_source_tracking_get,
12552 },
12553 {
12554 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12555 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12556 .name = "Sound Focus Voice Tx INT3_MI2S",
12557 .info = msm_sound_focus_info,
12558 .get = msm_voice_sound_focus_get,
12559 .put = msm_voice_sound_focus_put,
12560 },
12561 {
12562 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12563 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12564 .name = "Source Tracking Voice Tx INT3_MI2S",
12565 .info = msm_source_tracking_info,
12566 .get = msm_voice_source_tracking_get,
12567 },
12568 {
12569 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12570 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12571 .name = "Sound Focus Audio Tx INT3_MI2S",
12572 .info = msm_sound_focus_info,
12573 .get = msm_audio_sound_focus_get,
12574 .put = msm_audio_sound_focus_put,
12575 },
12576 {
12577 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12578 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12579 .name = "Source Tracking Audio Tx INT3_MI2S",
12580 .info = msm_source_tracking_info,
12581 .get = msm_audio_source_tracking_get,
12582 },
12583};
12584
12585static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12586 struct snd_ctl_elem_value *ucontrol)
12587{
12588 int ret = 0;
12589 int item;
12590 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12591
12592 pr_debug("%s item is %d\n", __func__,
12593 ucontrol->value.enumerated.item[0]);
12594 mutex_lock(&routing_lock);
12595 item = ucontrol->value.enumerated.item[0];
12596 if (item < e->items) {
12597 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12598 __func__, e->shift_l, e->values[item]);
12599 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12600 e->values[item] < MSM_BACKEND_DAI_MAX)
12601 /* Enable feedback TX path */
12602 ret = afe_spk_prot_feed_back_cfg(
12603 msm_bedais[e->values[item]].port_id,
12604 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12605 else {
12606 pr_debug("%s values are out of range item %d\n",
12607 __func__, e->values[item]);
12608 /* Disable feedback TX path */
12609 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12610 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12611 else
12612 ret = -EINVAL;
12613 }
12614 } else {
12615 pr_err("%s item value is out of range item\n", __func__);
12616 ret = -EINVAL;
12617 }
12618 mutex_unlock(&routing_lock);
12619 return ret;
12620}
12621
12622static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12623 struct snd_ctl_elem_value *ucontrol)
12624{
12625 int ret = 0;
12626 int item;
12627 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12628
12629 pr_debug("%s item is %d\n", __func__,
12630 ucontrol->value.enumerated.item[0]);
12631 mutex_lock(&routing_lock);
12632 item = ucontrol->value.enumerated.item[0];
12633 if (item < e->items) {
12634 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12635 __func__, e->shift_l, e->values[item]);
12636 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12637 e->values[item] < MSM_BACKEND_DAI_MAX)
12638 /* Enable feedback TX path */
12639 ret = afe_spk_prot_feed_back_cfg(
12640 msm_bedais[e->values[item]].port_id,
12641 msm_bedais[e->shift_l].port_id,
12642 1, 1, 1);
12643 else {
12644 pr_debug("%s values are out of range item %d\n",
12645 __func__, e->values[item]);
12646 /* Disable feedback TX path */
12647 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12648 ret = afe_spk_prot_feed_back_cfg(0,
12649 0, 0, 0, 0);
12650 else
12651 ret = -EINVAL;
12652 }
12653 } else {
12654 pr_err("%s item value is out of range item\n", __func__);
12655 ret = -EINVAL;
12656 }
12657 mutex_unlock(&routing_lock);
12658 return ret;
12659}
12660
12661static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12662 struct snd_ctl_elem_value *ucontrol)
12663{
12664 pr_debug("%s\n", __func__);
12665 return 0;
12666}
12667
12668static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12669 struct snd_ctl_elem_value *ucontrol)
12670{
12671 pr_debug("%s\n", __func__);
12672 ucontrol->value.enumerated.item[0] = 0;
12673 return 0;
12674}
12675
12676static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12677 "ZERO", "SLIM4_TX"
12678};
12679
12680static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12681 "ZERO", "SLIM4_TX"
12682};
12683
12684static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12685 "ZERO", "SENARY_TX"
12686};
12687
12688static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12689 "ZERO", "INT5_MI2S_TX"
12690};
12691
12692static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12693 "ZERO", "INT5_MI2S_TX"
12694};
12695
12696static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12697 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12698};
12699
12700static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12701 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12702};
12703
12704static const int const mi2s_rx_vi_fb_tx_value[] = {
12705 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12706};
12707
12708static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12709 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12710};
12711
12712static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12713 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12714};
12715
12716static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
12717 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12718 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12719 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12720
12721static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
12722 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12723 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12724 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12725
12726static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
12727 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
12728 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12729 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12730
12731static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
12732 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12733 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12734 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12735 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12736
12737static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
12738 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12739 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12740 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12741 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12742
12743static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12744 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12745 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12746 spkr_prot_put_vi_lch_port);
12747
12748static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12749 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12750 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12751 spkr_prot_put_vi_rch_port);
12752
12753static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12754 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12755 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12756 spkr_prot_put_vi_lch_port);
12757
12758static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12759 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12760 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12761 spkr_prot_put_vi_lch_port);
12762
12763static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12764 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12765 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12766 spkr_prot_put_vi_rch_port);
12767
12768static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12769 /* Frontend AIF */
12770 /* Widget name equals to Front-End DAI name<Need confirmation>,
12771 * Stream name must contains substring of front-end dai name
12772 */
12773 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12774 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12775 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12776 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12777 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12778 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12779 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12780 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12781 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12782 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12783 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12784 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12785 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12786 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12787 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12788 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12789 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12790 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12791 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12792 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12793 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12794 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12795 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12796 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12797 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12798 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012799 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012800 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012801 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12802 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12803 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12804 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Meng Wangbe8194e2018-04-25 10:40:01 +080012805 SND_SOC_DAPM_AIF_OUT("MM_UL28", "MultiMedia28 Capture", 0, 0, 0, 0),
12806 SND_SOC_DAPM_AIF_OUT("MM_UL29", "MultiMedia29 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012807 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12808 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12809 "VoiceMMode1 Playback", 0, 0, 0, 0),
12810 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12811 "VoiceMMode1 Capture", 0, 0, 0, 0),
12812 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12813 "VoiceMMode2 Playback", 0, 0, 0, 0),
12814 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12815 "VoiceMMode2 Capture", 0, 0, 0, 0),
12816 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12817 0, 0, 0, 0),
12818 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12819 0, 0, 0, 0),
12820 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12821 0, 0, 0, 0),
12822 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12823 0, 0, 0, 0),
12824 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12825 0, 0, 0, 0),
12826 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12827 0, 0, 0, 0),
12828 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12829 0, 0, 0, 0),
12830 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12831 0, 0, 0, 0),
12832 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12833 0, 0, 0, 0),
12834 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12835 0, 0, 0, 0),
12836 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12837 0, 0, 0, 0),
12838 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12839 0, 0, 0, 0),
12840 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12841 0, 0, 0, 0),
12842 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12843 0, 0, 0, 0),
12844 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12845 0, 0, 0, 0),
12846 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12847 0, 0, 0, 0),
12848 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12849 0, 0, 0, 0),
12850 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12851 0, 0, 0, 0),
12852 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12853 0, 0, 0, 0),
12854 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12855 0, 0, 0, 0),
12856 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12857 0, 0, 0, 0),
12858 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12859 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12860 0, 0, 0, 0),
12861 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12862 "INT0 MI2S_RX Hostless Playback",
12863 0, 0, 0, 0),
12864 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12865 "INT4 MI2S_RX Hostless Playback",
12866 0, 0, 0, 0),
12867 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12868 "Primary MI2S_RX Hostless Playback",
12869 0, 0, 0, 0),
12870 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12871 "Secondary MI2S_RX Hostless Playback",
12872 0, 0, 0, 0),
12873 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12874 "Tertiary MI2S_RX Hostless Playback",
12875 0, 0, 0, 0),
12876 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12877 "Quaternary MI2S_RX Hostless Playback",
12878 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012879 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12880 "Quinary MI2S_RX Hostless Playback",
12881 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012882
12883 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12884 0, 0, 0, 0),
12885 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
12886 0, 0, 0, 0),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080012887 SND_SOC_DAPM_AIF_IN("SEC_AUXPCM_DL_HL", "SEC_AUXPCM_HOSTLESS Playback",
12888 0, 0, 0, 0),
12889 SND_SOC_DAPM_AIF_OUT("SEC_AUXPCM_UL_HL", "SEC_AUXPCM_HOSTLESS Capture",
12890 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012891 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
12892 0, 0, 0, 0),
12893 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
12894 "INT3 MI2S_TX Hostless Capture",
12895 0, 0, 0, 0),
12896 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
12897 "Tertiary MI2S_TX Hostless Capture",
12898 0, 0, 0, 0),
12899 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
12900 "Secondary MI2S_TX Hostless Capture",
12901 0, 0, 0, 0),
12902 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
12903 "Primary MI2S_TX Hostless Capture",
12904 0, 0, 0, 0),
12905 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
12906 0, 0, 0, 0),
12907 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
12908 0, 0, 0, 0),
12909 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
12910 "Quaternary MI2S_TX Hostless Capture",
12911 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012912 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
12913 "Quinary MI2S_TX Hostless Capture",
12914 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012915
12916 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
12917 "Primary TDM0 Hostless Playback",
12918 0, 0, 0, 0),
12919 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
12920 "Primary TDM0 Hostless Capture",
12921 0, 0, 0, 0),
12922 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
12923 "Primary TDM1 Hostless Playback",
12924 0, 0, 0, 0),
12925 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
12926 "Primary TDM1 Hostless Capture",
12927 0, 0, 0, 0),
12928 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
12929 "Primary TDM2 Hostless Playback",
12930 0, 0, 0, 0),
12931 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
12932 "Primary TDM2 Hostless Capture",
12933 0, 0, 0, 0),
12934 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
12935 "Primary TDM3 Hostless Playback",
12936 0, 0, 0, 0),
12937 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
12938 "Primary TDM3 Hostless Capture",
12939 0, 0, 0, 0),
12940 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
12941 "Primary TDM4 Hostless Playback",
12942 0, 0, 0, 0),
12943 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
12944 "Primary TDM4 Hostless Capture",
12945 0, 0, 0, 0),
12946 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
12947 "Primary TDM5 Hostless Playback",
12948 0, 0, 0, 0),
12949 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
12950 "Primary TDM5 Hostless Capture",
12951 0, 0, 0, 0),
12952 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
12953 "Primary TDM6 Hostless Playback",
12954 0, 0, 0, 0),
12955 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
12956 "Primary TDM6 Hostless Capture",
12957 0, 0, 0, 0),
12958 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
12959 "Primary TDM7 Hostless Playback",
12960 0, 0, 0, 0),
12961 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
12962 "Primary TDM7 Hostless Capture",
12963 0, 0, 0, 0),
12964 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
12965 "Secondary TDM0 Hostless Playback",
12966 0, 0, 0, 0),
12967 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
12968 "Secondary TDM0 Hostless Capture",
12969 0, 0, 0, 0),
12970 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
12971 "Secondary TDM1 Hostless Playback",
12972 0, 0, 0, 0),
12973 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
12974 "Secondary TDM1 Hostless Capture",
12975 0, 0, 0, 0),
12976 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
12977 "Secondary TDM2 Hostless Playback",
12978 0, 0, 0, 0),
12979 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
12980 "Secondary TDM2 Hostless Capture",
12981 0, 0, 0, 0),
12982 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
12983 "Secondary TDM3 Hostless Playback",
12984 0, 0, 0, 0),
12985 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
12986 "Secondary TDM3 Hostless Capture",
12987 0, 0, 0, 0),
12988 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
12989 "Secondary TDM4 Hostless Playback",
12990 0, 0, 0, 0),
12991 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
12992 "Secondary TDM4 Hostless Capture",
12993 0, 0, 0, 0),
12994 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
12995 "Secondary TDM5 Hostless Playback",
12996 0, 0, 0, 0),
12997 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
12998 "Secondary TDM5 Hostless Capture",
12999 0, 0, 0, 0),
13000 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
13001 "Secondary TDM6 Hostless Playback",
13002 0, 0, 0, 0),
13003 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
13004 "Secondary TDM6 Hostless Capture",
13005 0, 0, 0, 0),
13006 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
13007 "Secondary TDM7 Hostless Playback",
13008 0, 0, 0, 0),
13009 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
13010 "Secondary TDM7 Hostless Capture",
13011 0, 0, 0, 0),
13012 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
13013 "Tertiary TDM0 Hostless Playback",
13014 0, 0, 0, 0),
13015 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
13016 "Tertiary TDM0 Hostless Capture",
13017 0, 0, 0, 0),
13018 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
13019 "Tertiary TDM1 Hostless Playback",
13020 0, 0, 0, 0),
13021 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
13022 "Tertiary TDM1 Hostless Capture",
13023 0, 0, 0, 0),
13024 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
13025 "Tertiary TDM2 Hostless Playback",
13026 0, 0, 0, 0),
13027 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
13028 "Tertiary TDM2 Hostless Capture",
13029 0, 0, 0, 0),
13030 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
13031 "Tertiary TDM3 Hostless Playback",
13032 0, 0, 0, 0),
13033 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
13034 "Tertiary TDM3 Hostless Capture",
13035 0, 0, 0, 0),
13036 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
13037 "Tertiary TDM4 Hostless Playback",
13038 0, 0, 0, 0),
13039 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
13040 "Tertiary TDM4 Hostless Capture",
13041 0, 0, 0, 0),
13042 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
13043 "Tertiary TDM5 Hostless Playback",
13044 0, 0, 0, 0),
13045 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
13046 "Tertiary TDM5 Hostless Capture",
13047 0, 0, 0, 0),
13048 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
13049 "Tertiary TDM6 Hostless Playback",
13050 0, 0, 0, 0),
13051 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
13052 "Tertiary TDM6 Hostless Capture",
13053 0, 0, 0, 0),
13054 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
13055 "Tertiary TDM7 Hostless Playback",
13056 0, 0, 0, 0),
13057 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
13058 "Tertiary TDM7 Hostless Capture",
13059 0, 0, 0, 0),
13060 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
13061 "Quaternary TDM0 Hostless Playback",
13062 0, 0, 0, 0),
13063 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
13064 "Quaternary TDM0 Hostless Capture",
13065 0, 0, 0, 0),
13066 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
13067 "Quaternary TDM1 Hostless Playback",
13068 0, 0, 0, 0),
13069 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
13070 "Quaternary TDM1 Hostless Capture",
13071 0, 0, 0, 0),
13072 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
13073 "Quaternary TDM2 Hostless Playback",
13074 0, 0, 0, 0),
13075 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
13076 "Quaternary TDM2 Hostless Capture",
13077 0, 0, 0, 0),
13078 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
13079 "Quaternary TDM3 Hostless Playback",
13080 0, 0, 0, 0),
13081 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
13082 "Quaternary TDM3 Hostless Capture",
13083 0, 0, 0, 0),
13084 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
13085 "Quaternary TDM4 Hostless Playback",
13086 0, 0, 0, 0),
13087 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
13088 "Quaternary TDM4 Hostless Capture",
13089 0, 0, 0, 0),
13090 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
13091 "Quaternary TDM5 Hostless Playback",
13092 0, 0, 0, 0),
13093 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
13094 "Quaternary TDM5 Hostless Capture",
13095 0, 0, 0, 0),
13096 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
13097 "Quaternary TDM6 Hostless Playback",
13098 0, 0, 0, 0),
13099 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
13100 "Quaternary TDM6 Hostless Capture",
13101 0, 0, 0, 0),
13102 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
13103 "Quaternary TDM7 Hostless Playback",
13104 0, 0, 0, 0),
13105 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
13106 "Quaternary TDM7 Hostless Capture",
13107 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013108 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
13109 "Quinary TDM0 Hostless Playback",
13110 0, 0, 0, 0),
13111 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
13112 "Quinary TDM0 Hostless Capture",
13113 0, 0, 0, 0),
13114 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
13115 "Quinary TDM1 Hostless Playback",
13116 0, 0, 0, 0),
13117 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
13118 "Quinary TDM1 Hostless Capture",
13119 0, 0, 0, 0),
13120 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
13121 "Quinary TDM2 Hostless Playback",
13122 0, 0, 0, 0),
13123 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
13124 "Quinary TDM2 Hostless Capture",
13125 0, 0, 0, 0),
13126 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
13127 "Quinary TDM3 Hostless Playback",
13128 0, 0, 0, 0),
13129 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
13130 "Quinary TDM3 Hostless Capture",
13131 0, 0, 0, 0),
13132 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
13133 "Quinary TDM4 Hostless Playback",
13134 0, 0, 0, 0),
13135 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
13136 "Quinary TDM4 Hostless Capture",
13137 0, 0, 0, 0),
13138 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
13139 "Quinary TDM5 Hostless Playback",
13140 0, 0, 0, 0),
13141 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
13142 "Quinary TDM5 Hostless Capture",
13143 0, 0, 0, 0),
13144 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
13145 "Quinary TDM6 Hostless Playback",
13146 0, 0, 0, 0),
13147 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
13148 "Quinary TDM6 Hostless Capture",
13149 0, 0, 0, 0),
13150 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
13151 "Quinary TDM7 Hostless Playback",
13152 0, 0, 0, 0),
13153 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
13154 "Quinary TDM7 Hostless Capture",
13155 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013156
13157 /* LSM */
13158 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
13159 0, 0, 0, 0),
13160 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
13161 0, 0, 0, 0),
13162 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
13163 0, 0, 0, 0),
13164 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
13165 0, 0, 0, 0),
13166 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
13167 0, 0, 0, 0),
13168 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
13169 0, 0, 0, 0),
13170 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
13171 0, 0, 0, 0),
13172 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
13173 0, 0, 0, 0),
13174 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
13175 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
13176 /* Backend AIF */
13177 /* Stream name equals to backend dai link stream name */
13178 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
13179 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
13180 0, 0, 0, 0),
13181 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
13182 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
13183 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
13184 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
13185 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
13186 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
13187 0, 0, 0, 0),
13188 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
13189 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
13190 0, 0, 0, 0),
13191 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
13192 0, 0, 0, 0),
13193 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
13194 0, 0, 0, 0),
13195 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
13196 "Secondary MI2S Playback SD1",
13197 0, 0, 0, 0),
13198 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
13199 0, 0, 0, 0),
13200 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
13201 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013202 SND_SOC_DAPM_AIF_OUT("INT2_MI2S_RX", "INT2 MI2S Playback",
13203 0, 0, 0, 0),
13204 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_RX", "INT3 MI2S Playback",
13205 0, 0, 0, 0),
13206 SND_SOC_DAPM_AIF_OUT("INT5_MI2S_RX", "INT5 MI2S Playback",
13207 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013208 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
13209 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013210 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_TX", "INT4 MI2S Capture",
13211 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013212 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
13213 0, 0, 0, 0),
13214 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
13215 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
13216 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
13217 0, 0, 0, 0),
13218 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
13219 0, 0, 0, 0),
13220 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
13221 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013222 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_TX", "INT0 MI2S Capture",
13223 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013224 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
13225 0, 0, 0, 0),
13226 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
13227 0, 0, 0, 0),
13228 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
13229 0, 0, 0, 0),
13230 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
13231 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
13232 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
13233 0, 0, 0, 0),
13234 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
13235 0, 0, 0, 0),
13236 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
13237 0, 0, 0, 0),
13238 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
13239 0, 0, 0, 0),
13240 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
13241 0, 0, 0, 0),
13242 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
13243 0, 0, 0, 0),
13244 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
13245 0, 0, 0, 0),
13246 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
13247 0, 0, 0, 0),
13248 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
13249 0, 0, 0, 0),
13250 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
13251 0, 0, 0, 0),
13252 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
13253 0, 0, 0, 0),
13254 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
13255 0, 0, 0, 0),
13256 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
13257 0, 0, 0, 0),
13258 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
13259 0, 0, 0, 0),
13260 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
13261 0, 0, 0, 0),
13262 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
13263 0, 0, 0, 0),
13264 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
13265 0, 0, 0, 0),
13266 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
13267 0, 0, 0, 0),
13268 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
13269 0, 0, 0, 0),
13270 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
13271 0, 0, 0, 0),
13272 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
13273 0, 0, 0, 0),
13274 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
13275 0, 0, 0, 0),
13276 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
13277 0, 0, 0, 0),
13278 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
13279 0, 0, 0, 0),
13280 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
13281 0, 0, 0, 0),
13282 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
13283 0, 0, 0, 0),
13284 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
13285 0, 0, 0, 0),
13286 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
13287 0, 0, 0, 0),
13288 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
13289 0, 0, 0, 0),
13290 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
13291 0, 0, 0, 0),
13292 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
13293 0, 0, 0, 0),
13294 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
13295 0, 0, 0, 0),
13296 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
13297 0, 0, 0, 0),
13298 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
13299 0, 0, 0, 0),
13300 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
13301 0, 0, 0, 0),
13302 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
13303 0, 0, 0, 0),
13304 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
13305 0, 0, 0, 0),
13306 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
13307 0, 0, 0, 0),
13308 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
13309 0, 0, 0, 0),
13310 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
13311 0, 0, 0, 0),
13312 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
13313 0, 0, 0, 0),
13314 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
13315 0, 0, 0, 0),
13316 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
13317 0, 0, 0, 0),
13318 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
13319 0, 0, 0, 0),
13320 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
13321 0, 0, 0, 0),
13322 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
13323 0, 0, 0, 0),
13324 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
13325 0, 0, 0, 0),
13326 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
13327 0, 0, 0, 0),
13328 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
13329 0, 0, 0, 0),
13330 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
13331 0, 0, 0, 0),
13332 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
13333 0, 0, 0, 0),
13334 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
13335 0, 0, 0, 0),
13336 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
13337 0, 0, 0, 0),
13338 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
13339 0, 0, 0, 0),
13340 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
13341 0, 0, 0, 0),
13342 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
13343 0, 0, 0, 0),
13344 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
13345 0, 0, 0, 0),
13346 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
13347 0, 0, 0, 0),
13348 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
13349 0, 0, 0, 0),
13350 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
13351 0, 0, 0, 0),
13352 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
13353 0, 0, 0, 0),
13354 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
13355 0, 0, 0, 0),
13356 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
13357 0, 0, 0, 0),
13358 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
13359 0, 0, 0, 0),
13360 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
13361 0, 0, 0, 0),
13362 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
13363 0, 0, 0, 0),
13364 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
13365 0, 0, 0, 0),
13366 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
13367 0, 0, 0, 0),
13368 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
13369 0, 0, 0, 0),
13370 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
13371 0, 0, 0, 0),
13372 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
13373 0, 0, 0, 0),
13374 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
13375 0, 0, 0, 0),
13376 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
13377 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013378 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
13379 0, 0, 0, 0),
13380 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
13381 0, 0, 0, 0),
13382 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
13383 0, 0, 0, 0),
13384 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
13385 0, 0, 0, 0),
13386 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
13387 0, 0, 0, 0),
13388 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
13389 0, 0, 0, 0),
13390 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
13391 0, 0, 0, 0),
13392 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
13393 0, 0, 0, 0),
13394 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
13395 0, 0, 0, 0),
13396 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
13397 0, 0, 0, 0),
13398 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
13399 0, 0, 0, 0),
13400 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
13401 0, 0, 0, 0),
13402 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
13403 0, 0, 0, 0),
13404 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
13405 0, 0, 0, 0),
13406 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
13407 0, 0, 0, 0),
13408 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
13409 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013410 /* incall */
13411 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
13412 0, 0, 0, 0),
13413 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
13414 0, 0, 0, 0),
13415 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
13416 0, 0, 0, 0),
13417 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
13418 0, 0, 0, 0),
13419 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
13420 0, 0, 0, 0),
13421 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
13422 0, 0, 0, 0),
13423 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
13424 0, 0, 0, 0),
13425 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
13426 0, 0, 0, 0),
13427 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
13428
13429 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
13430 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
13431 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
13432 0, 0, 0, 0),
13433 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
13434 0, 0, 0, 0),
13435 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
13436 0, 0, 0, 0),
13437 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
13438 0, 0, 0, 0),
13439 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
13440 0, 0, 0, 0),
13441 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
13442 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013443 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
13444 0, 0, 0, 0),
13445 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
13446 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013447 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
13448 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
13449 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
13450 0, 0, 0, 0),
13451 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
13452 0, 0, 0, 0),
13453 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
13454 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
13455 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
13456 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
13457 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
13458 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
13459 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
13460 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
13461 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
13462 /* In- call recording */
13463 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
13464 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
Raja Mallik425e1d32018-05-20 19:21:10 +053013465 SND_SOC_DAPM_AIF_IN("AFE_LOOPBACK_TX", "AFE Loopback Capture",
13466 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013467 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
13468 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
13469
13470 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
13471 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
13472 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
13473 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
13474
13475 /* Switch Definitions */
13476 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
13477 &slim_fm_switch_mixer_controls),
13478 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
13479 &slim1_fm_switch_mixer_controls),
13480 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
13481 &slim3_fm_switch_mixer_controls),
13482 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
13483 &slim4_fm_switch_mixer_controls),
13484 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
13485 &slim6_fm_switch_mixer_controls),
13486 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13487 &pcm_rx_switch_mixer_controls),
13488 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13489 &int0_mi2s_rx_switch_mixer_controls),
13490 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13491 &int4_mi2s_rx_switch_mixer_controls),
13492 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13493 &pri_mi2s_rx_switch_mixer_controls),
13494 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13495 &sec_mi2s_rx_switch_mixer_controls),
13496 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13497 &tert_mi2s_rx_switch_mixer_controls),
13498 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13499 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013500 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13501 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013502 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13503 &hfp_pri_aux_switch_mixer_controls),
13504 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13505 &hfp_aux_switch_mixer_controls),
13506 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13507 &hfp_int_switch_mixer_controls),
13508 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13509 &hfp_slim7_switch_mixer_controls),
13510 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13511 &usb_switch_mixer_controls),
Aniket Kumar Lataf8664712018-02-22 14:46:09 -080013512 SND_SOC_DAPM_SWITCH("A2DP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13513 &a2dp_slim7_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013514
13515 /* Mixer definitions */
13516 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13517 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13518 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13519 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13520 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13521 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13522 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13523 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13524 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13525 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13526 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13527 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13528 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13529 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13530 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13531 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13532 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13533 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13534 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13535 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13536 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13537 quaternary_mi2s_rx_mixer_controls,
13538 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13539 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13540 tertiary_mi2s_rx_mixer_controls,
13541 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13542 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13543 secondary_mi2s_rx_mixer_controls,
13544 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13545 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13546 secondary_mi2s_rx2_mixer_controls,
13547 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13548 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13549 primary_mi2s_rx_mixer_controls,
13550 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13551 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13552 int0_mi2s_rx_mixer_controls,
13553 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13554 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13555 int4_mi2s_rx_mixer_controls,
13556 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13557 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13558 quinary_mi2s_rx_mixer_controls,
13559 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13560 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13561 pri_tdm_rx_0_mixer_controls,
13562 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13563 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13564 pri_tdm_rx_1_mixer_controls,
13565 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13566 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13567 pri_tdm_rx_2_mixer_controls,
13568 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13569 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13570 pri_tdm_rx_3_mixer_controls,
13571 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13572 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13573 pri_tdm_tx_0_mixer_controls,
13574 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13575 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13576 sec_tdm_rx_0_mixer_controls,
13577 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13578 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13579 sec_tdm_rx_1_mixer_controls,
13580 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13581 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13582 sec_tdm_rx_2_mixer_controls,
13583 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13584 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13585 sec_tdm_rx_3_mixer_controls,
13586 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13587 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13588 sec_tdm_tx_0_mixer_controls,
13589 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13590 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13591 tert_tdm_rx_0_mixer_controls,
13592 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13593 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13594 tert_tdm_tx_0_mixer_controls,
13595 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13596 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13597 tert_tdm_rx_1_mixer_controls,
13598 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13599 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13600 tert_tdm_rx_2_mixer_controls,
13601 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13602 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13603 tert_tdm_rx_3_mixer_controls,
13604 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13605 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13606 tert_tdm_rx_4_mixer_controls,
13607 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13608 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13609 quat_tdm_rx_0_mixer_controls,
13610 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13611 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13612 quat_tdm_tx_0_mixer_controls,
13613 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13614 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13615 quat_tdm_rx_1_mixer_controls,
13616 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13617 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13618 quat_tdm_rx_2_mixer_controls,
13619 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13620 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13621 quat_tdm_rx_3_mixer_controls,
13622 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013623 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13624 quin_tdm_rx_0_mixer_controls,
13625 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13626 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13627 quin_tdm_tx_0_mixer_controls,
13628 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13629 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13630 quin_tdm_rx_1_mixer_controls,
13631 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13632 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13633 quin_tdm_rx_2_mixer_controls,
13634 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13635 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13636 quin_tdm_rx_3_mixer_controls,
13637 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013638 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13639 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13640 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13641 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13642 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13643 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13644 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13645 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13646 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13647 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13648 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13649 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13650 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13651 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13652 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13653 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013654 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13655 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013656 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13657 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013658 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13659 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13660 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13661 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13662 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13663 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13664 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13665 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053013666 SND_SOC_DAPM_MIXER("MultiMedia28 Mixer", SND_SOC_NOPM, 0, 0,
13667 mmul28_mixer_controls, ARRAY_SIZE(mmul28_mixer_controls)),
13668 SND_SOC_DAPM_MIXER("MultiMedia29 Mixer", SND_SOC_NOPM, 0, 0,
13669 mmul29_mixer_controls, ARRAY_SIZE(mmul29_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013670 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13671 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13672 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13673 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13674 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13675 tert_auxpcm_rx_mixer_controls,
13676 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13677 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13678 quat_auxpcm_rx_mixer_controls,
13679 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013680 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13681 quin_auxpcm_rx_mixer_controls,
13682 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013683 /* incall */
13684 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13685 incall_music_delivery_mixer_controls,
13686 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13687 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13688 incall_music2_delivery_mixer_controls,
13689 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13690 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13691 slimbus_4_rx_mixer_controls,
13692 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13693 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13694 slimbus_6_rx_mixer_controls,
13695 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13696 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13697 usb_audio_rx_mixer_controls,
13698 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13699 /* Voice Mixer */
13700 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13701 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13702 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13703 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13704 SND_SOC_NOPM, 0, 0,
13705 sec_i2s_rx_voice_mixer_controls,
13706 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13707 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13708 SND_SOC_NOPM, 0, 0,
13709 sec_mi2s_rx_voice_mixer_controls,
13710 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13711 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13712 SND_SOC_NOPM, 0, 0,
13713 slimbus_rx_voice_mixer_controls,
13714 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13715 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13716 SND_SOC_NOPM, 0, 0,
13717 bt_sco_rx_voice_mixer_controls,
13718 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13719 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13720 SND_SOC_NOPM, 0, 0,
13721 afe_pcm_rx_voice_mixer_controls,
13722 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13723 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13724 SND_SOC_NOPM, 0, 0,
13725 aux_pcm_rx_voice_mixer_controls,
13726 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13727 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13728 SND_SOC_NOPM, 0, 0,
13729 sec_aux_pcm_rx_voice_mixer_controls,
13730 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13731 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13732 SND_SOC_NOPM, 0, 0,
13733 tert_aux_pcm_rx_voice_mixer_controls,
13734 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13735 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13736 SND_SOC_NOPM, 0, 0,
13737 quat_aux_pcm_rx_voice_mixer_controls,
13738 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013739 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13740 SND_SOC_NOPM, 0, 0,
13741 quin_aux_pcm_rx_voice_mixer_controls,
13742 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013743 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13744 SND_SOC_NOPM, 0, 0,
13745 hdmi_rx_voice_mixer_controls,
13746 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13747 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13748 SND_SOC_NOPM, 0, 0,
13749 mi2s_rx_voice_mixer_controls,
13750 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13751 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13752 SND_SOC_NOPM, 0, 0,
13753 pri_mi2s_rx_voice_mixer_controls,
13754 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13755 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13756 SND_SOC_NOPM, 0, 0,
13757 int0_mi2s_rx_voice_mixer_controls,
13758 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13759 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13760 SND_SOC_NOPM, 0, 0,
13761 int4_mi2s_rx_voice_mixer_controls,
13762 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13763 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13764 SND_SOC_NOPM, 0, 0,
13765 tert_mi2s_rx_voice_mixer_controls,
13766 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13767 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13768 SND_SOC_NOPM, 0, 0,
13769 quat_mi2s_rx_voice_mixer_controls,
13770 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13771 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13772 SND_SOC_NOPM, 0, 0,
13773 quin_mi2s_rx_voice_mixer_controls,
13774 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
Raja Mallik321d5712018-05-04 17:22:11 +053013775 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0_Voice Mixer",
13776 SND_SOC_NOPM, 0, 0,
13777 pri_tdm_rx_0_voice_mixer_controls,
13778 ARRAY_SIZE(pri_tdm_rx_0_voice_mixer_controls)),
13779 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1_Voice Mixer",
13780 SND_SOC_NOPM, 0, 0,
13781 pri_tdm_rx_1_voice_mixer_controls,
13782 ARRAY_SIZE(pri_tdm_rx_1_voice_mixer_controls)),
13783 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2_Voice Mixer",
13784 SND_SOC_NOPM, 0, 0,
13785 pri_tdm_rx_2_voice_mixer_controls,
13786 ARRAY_SIZE(pri_tdm_rx_2_voice_mixer_controls)),
13787 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3_Voice Mixer",
13788 SND_SOC_NOPM, 0, 0,
13789 pri_tdm_rx_3_voice_mixer_controls,
13790 ARRAY_SIZE(pri_tdm_rx_3_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013791 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13792 SND_SOC_NOPM, 0, 0,
13793 quat_tdm_rx_2_voice_mixer_controls,
13794 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013795 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13796 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13797 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013798 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13799 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13800 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13801 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13802 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13803 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13804 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13805 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13806 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13807 int_bt_a2dp_rx_mixer_controls,
13808 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13809 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13810 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13811 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13812 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13813 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13814 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13815 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13816 tx_voice2_stub_mixer_controls,
13817 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13818 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13819 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13820 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13821 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13822 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13823 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13824 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13825 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13826 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13827 SND_SOC_NOPM, 0, 0,
13828 slimbus_6_rx_voice_mixer_controls,
13829 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13830 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13831 slimbus_7_rx_voice_mixer_controls,
13832 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13833 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13834 slimbus_8_rx_voice_mixer_controls,
13835 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13836 /* port mixer */
13837 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13838 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13839 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13840 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13841 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13842 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13843 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13844 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13845 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13846 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13847 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13848 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13849 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13850 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13851 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013852 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13853 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13854 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013855 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13856 sbus_1_rx_port_mixer_controls,
13857 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13858 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13859 bt_sco_rx_port_mixer_controls,
13860 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13861 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13862 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13863 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13864 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13865 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13866 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13867 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13868 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13869 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13870 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13871 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13872 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13873 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13874 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13875 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13876 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13877 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13878 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13879 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13880 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13881 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13882 primary_mi2s_rx_port_mixer_controls,
13883 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13884 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13885 sec_mi2s_rx_port_mixer_controls,
13886 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
13887 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13888 tert_mi2s_rx_port_mixer_controls,
13889 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
13890 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13891 quat_mi2s_rx_port_mixer_controls,
13892 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013893 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13894 quin_mi2s_rx_port_mixer_controls,
13895 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013896 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13897 pri_tdm_rx_0_port_mixer_controls,
13898 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
13899 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13900 pri_tdm_rx_1_port_mixer_controls,
13901 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
13902 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13903 pri_tdm_rx_2_port_mixer_controls,
13904 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
13905 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13906 pri_tdm_rx_3_port_mixer_controls,
13907 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
13908 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13909 sec_tdm_rx_0_port_mixer_controls,
13910 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
13911 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13912 sec_tdm_rx_1_port_mixer_controls,
13913 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
13914 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13915 sec_tdm_rx_2_port_mixer_controls,
13916 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
13917 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13918 sec_tdm_rx_3_port_mixer_controls,
13919 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
13920 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13921 tert_tdm_rx_0_port_mixer_controls,
13922 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
13923 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13924 tert_tdm_rx_1_port_mixer_controls,
13925 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
13926 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13927 tert_tdm_rx_2_port_mixer_controls,
13928 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
13929 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13930 tert_tdm_rx_3_port_mixer_controls,
13931 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
13932 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13933 quat_tdm_rx_0_port_mixer_controls,
13934 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
13935 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13936 quat_tdm_rx_1_port_mixer_controls,
13937 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
13938 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13939 quat_tdm_rx_2_port_mixer_controls,
13940 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
13941 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13942 quat_tdm_rx_3_port_mixer_controls,
13943 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013944 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13945 quin_tdm_rx_0_port_mixer_controls,
13946 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
13947 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13948 quin_tdm_rx_1_port_mixer_controls,
13949 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
13950 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13951 quin_tdm_rx_2_port_mixer_controls,
13952 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
13953 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13954 quin_tdm_rx_3_port_mixer_controls,
13955 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013956 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13957 int0_mi2s_rx_port_mixer_controls,
13958 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
13959 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13960 int4_mi2s_rx_port_mixer_controls,
13961 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
13962 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
13963 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
13964 ARRAY_SIZE(tx_qchat_mixer_controls)),
13965 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
13966 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
13967 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
13968 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
13969 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
13970 ARRAY_SIZE(usb_rx_port_mixer_controls)),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080013971 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
13972 SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
13973 ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013974 /* lsm mixer definitions */
13975 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
13976 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
13977 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
13978 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
13979 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
13980 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
13981 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
13982 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
13983 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
13984 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
13985 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
13986 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
13987 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
13988 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
13989 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
13990 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
13991 /* Virtual Pins to force backends ON atm */
13992 SND_SOC_DAPM_OUTPUT("BE_OUT"),
13993 SND_SOC_DAPM_INPUT("BE_IN"),
13994
13995 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
13996 &slim0_rx_vi_fb_lch_mux),
13997 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
13998 &slim0_rx_vi_fb_rch_mux),
13999 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
14000 &mi2s_rx_vi_fb_mux),
14001 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
14002 &int4_mi2s_rx_vi_fb_mono_ch_mux),
14003 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
14004 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
14005
14006 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
14007 &voc_ext_ec_mux),
14008 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
14009 &ext_ec_ref_mux_ul1),
14010 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
14011 &ext_ec_ref_mux_ul2),
14012 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
14013 &ext_ec_ref_mux_ul3),
14014 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
14015 &ext_ec_ref_mux_ul4),
14016 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
14017 &ext_ec_ref_mux_ul5),
14018 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
14019 &ext_ec_ref_mux_ul6),
14020 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
14021 &ext_ec_ref_mux_ul8),
14022 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
14023 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053014024 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
14025 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053014026 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
14027 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014028 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
14029 &ext_ec_ref_mux_ul17),
14030 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
14031 &ext_ec_ref_mux_ul18),
14032 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
14033 &ext_ec_ref_mux_ul19),
Meng Wangbe8194e2018-04-25 10:40:01 +080014034 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL28 MUX", SND_SOC_NOPM, 0, 0,
14035 &ext_ec_ref_mux_ul28),
14036 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL29 MUX", SND_SOC_NOPM, 0, 0,
14037 &ext_ec_ref_mux_ul29),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014038};
14039
14040static const struct snd_soc_dapm_route intercon[] = {
14041 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14042 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14043 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14044 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14045 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14046 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14047 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14048 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14049 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14050 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14051 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14052 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14053 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14054 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14055 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14056 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14057 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
14058
14059 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14060 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14061 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14062 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14063 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14064 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14065 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14066 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14067 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14068 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14069 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14070 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14071 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14072 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14073 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14074 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14075 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
14076
14077 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14078 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14079 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14080 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14081 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14082 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14083 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14084 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14085 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14086 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14087 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14088 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14089 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14090 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14091 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14092 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14093 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
14094
14095 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14096 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14097 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14098 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14099 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14100 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14101 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14102 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14103 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14104 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14105 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14106 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14107 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14108 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14109 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14110 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14111 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
14112
14113 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14114 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14115 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14116 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14117 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14118 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14119 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14120 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14121 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14122 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14123 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14124 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14125 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14126 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14127 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14128 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14129 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
14130
14131 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
14132 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
14133 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
14134 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
14135 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
14136 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
14137 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
14138 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
14139 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
14140 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
14141 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
14142 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
14143 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
14144 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
14145 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
14146 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
14147 {"HDMI", NULL, "HDMI Mixer"},
14148
14149 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
14150 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
14151 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
14152 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
14153 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
14154 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
14155 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
14156 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
14157 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
14158 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
14159 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
14160 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
14161 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
14162 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
14163 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
14164 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
14165 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
14166
14167 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14168 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14169 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14170 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14171 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14172 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14173 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14174 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14175 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14176 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14177 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14178 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14179 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14180 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14181 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14182 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14183 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
14184
14185 /* incall */
14186 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
14187 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
14188 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
14189 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
14190 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
14191 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14192 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14193 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14194 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14195 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
14196 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14197 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14198 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14199 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14200 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
14201
14202 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14203 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14204 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14205 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14206 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14207 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14208 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14209 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14210 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14211 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14212 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14213 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14214 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14215 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14216 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14217 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14218 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
14219
14220 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14221 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14222 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14223 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14224 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14225 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14226 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14227 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14228 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14229 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14230 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14231 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14232 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14233 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14234 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14235 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14236 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
14237
14238 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14239 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14240 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14241 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14242 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14243 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14244 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14245 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14246 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14247 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14248 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14249 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14250 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14251 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14252 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14253 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14254 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
14255
14256 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14257 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14258 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14259 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14260 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14261 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14262 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
14263 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14264 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14265 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14266 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14267 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14268 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14269 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14270 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14271 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014272 {"MultiMedia28 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14273 {"MultiMedia29 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014274 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14275 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14276 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14277 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14278 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14279 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014280 {"MultiMedia28 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14281 {"MultiMedia29 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014282 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014283 {"MultiMedia17 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14284 {"MultiMedia18 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14285 {"MultiMedia19 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14286 {"MultiMedia28 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14287 {"MultiMedia29 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14288 {"MultiMedia17 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014289 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014290 {"MultiMedia19 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14291 {"MultiMedia28 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14292 {"MultiMedia29 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014293 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14294 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14295 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014296 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014297 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014298 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14299 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014300 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014301 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14302 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14303 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14304 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14305 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14306 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14307 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14308 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14309 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14310 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14311 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14312 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14313 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14314 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14315 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14316 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14317 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
14318
14319 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14320 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14321 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14322 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14323 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14324 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14325 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14326 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14327 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14328 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14329 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14330 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14331 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14332 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14333 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14334 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
14335
14336 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14337 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14338 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14339 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14340 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14341 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14342 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14343 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14344 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14345 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14346 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14347 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14348 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14349 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14350 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
14351
14352 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14353 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14354 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14355 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14356 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14357 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14358 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14359 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14360 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14361 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14362 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14363 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14364 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14365 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14366 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
14367
14368 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14369 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
14370
14371 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14372 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14373
14374 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14375 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14376 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14377 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14378 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14379 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14380 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14381 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14382 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14383 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14384 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14385 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14386 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14387 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14388 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14389 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
14390
14391 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14392 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14393 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14394 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14395 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14396 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14397 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14398 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14399 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14400 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14401 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14402 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14403 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14404 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14405 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14406 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
14407
14408 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14409 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14410 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14411 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14412 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14413 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14414 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14415 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14416 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14417 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14418 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14419 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14420 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14421 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14422 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14423 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
14424
14425 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14426 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14427 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14428 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14429 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14430 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14431 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14432 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14433 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14434 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14435 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14436 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14437 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14438 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14439 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14440 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14441 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14442 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
14443
14444 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14445 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14446 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14447 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14448 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14449 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14450 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14451 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14452 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14453 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14454 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14455 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14456 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14457 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14458 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14459 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14460 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
14461
14462 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14463 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14464 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14465 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14466 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14467 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14468 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14469 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14470 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14471 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14472 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14473 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14474 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14475 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14476 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14477 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14478 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
14479
14480 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14481 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14482 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14483 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14484 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14485 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14486 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14487 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14488 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14489 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14490 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14491 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14492 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14493 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14494 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14495 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14496 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
14497
14498 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14499 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14500 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14501 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14502 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14503 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14504 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14505 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14506 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14507 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14508 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14509 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14510 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14511 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14512 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14513 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14514 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
14515
14516 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14517 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14518 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14519 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14520 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14521 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14522 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14523 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14524 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14525 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14526 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14527 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14528 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14529 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14530 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14531 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14532 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14533
14534 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14535 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14536 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14537 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14538 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14539 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14540 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14541 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14542 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14543 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14544 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14545 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14546 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14547 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14548 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14549 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14550 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14551
14552 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14553 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14554 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14555 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14556 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14557 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14558 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14559 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14560 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14561 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14562 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14563 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14564 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14565 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14566 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14567 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14568 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14569
14570 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14571 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14572 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14573 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14574 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14575 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14576 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14577 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14578 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14579 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14580 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14581 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14582 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14583 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14584 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14585 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14586 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14587
14588 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14589 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14590 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14591 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14592 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14593 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14594 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14595 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14596 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14597 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14598 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14599 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14600 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14601 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14602 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14603 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14604 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14605
14606 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14607 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14608 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14609 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14610 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14611 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14612 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14613 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14614 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14615 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14616 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14617 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14618 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14619 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14620 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14621 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14622 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14623
14624 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14625 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14626 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14627 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14628 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14629 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14630 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14631 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14632 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14633 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14634 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14635 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14636 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14637 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14638 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14639 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14640 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14641
14642 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14643 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14644 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14645 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14646 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14647 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14648 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14649 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14650 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14651 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14652 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14653 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14654 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14655 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14656 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14657 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14658 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14659
14660 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14661 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14662 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14663 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14664 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14665 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14666 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14667 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14668 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14669 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14670 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14671 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14672 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14673 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14674 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14675 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14676 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14677
14678 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14679 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14680 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14681 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14682 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14683 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14684 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14685 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14686 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14687 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14688 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14689 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14690 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14691 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14692 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14693 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14694 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14695
14696 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14697 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14698 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14699 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14700 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14701 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14702 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14703 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14704 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14705 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14706 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14707 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14708 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14709 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14710 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14711 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14712 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14713
14714 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14715 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14716 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14717 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14718 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14719 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14720 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14721 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14722 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14723 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14724 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14725 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14726 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14727 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14728 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14729 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14730 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14731
14732 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14733 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14734 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14735 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14736 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14737 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14738 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14739 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14740 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14741 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14742 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14743 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14744 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14745 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14746 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14747 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14748 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14749 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14750
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014751 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14752 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14753 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14754 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14755 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14756 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14757 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14758 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14759 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14760 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14761 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14762 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14763 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14764 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14765 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14766 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14767 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14768
14769 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14770 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14771 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14772 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14773 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14774 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14775 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14776 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14777 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14778 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14779 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14780 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14781 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14782 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14783 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14784 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14785 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14786 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14787
14788 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14789 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14790 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14791 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14792 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14793 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14794 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14795 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14796 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14797 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14798 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14799 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14800 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14801 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14802 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14803 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14804 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14805 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14806
14807 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14808 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14809 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14810 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14811 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14812 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14813 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14814 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14815 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14816 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14817 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14818 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14819 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14820 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14821 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14822 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14823 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14824 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14825
Rohit Kumara5077932017-09-10 22:05:05 +053014826 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14827 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14828 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14829 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14830 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14831 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14832 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14833 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14834 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14835 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14836 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14837 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14838 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14839 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14840 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14841 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14842 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14843 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14844
14845 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14846 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14847 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14848 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14849 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14850 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14851 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14852 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14853 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14854 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14855 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14856 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14857 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14858 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14859 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14860 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14861 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14862
14863 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14864 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14865 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14866 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14867 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14868 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14869 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14870 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14871 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14872 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14873 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14874 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14875 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14876 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14877 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14878 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14879 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14880 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14881
14882 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14883 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14884 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14885 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14886 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14887 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14888 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14889 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14890 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14891 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14892 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14893 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14894 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14895 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14896 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14897 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14898 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14899 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
14900
14901 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14902 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14903 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14904 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14905 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14906 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14907 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14908 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14909 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14910 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14911 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14912 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14913 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14914 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14915 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14916 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14917 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14918 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
14919
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014920 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
14921 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
14922 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
14923 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
14924 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014925 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014926 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014927 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14928 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14929 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14930 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14931 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14932 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14933 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14934 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14935 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14936 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14937 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14938 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14939 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14940 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14941 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014942 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014943 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14944 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
14945 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014946 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014947 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14948 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014949 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14950 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
14951 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014952 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014953 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14954 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
14955 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014956 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014957 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014958 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
14959 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
14960 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014961 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14962 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14963 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14964 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14965 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14966 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14967 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14968 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14969 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14970 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14971 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014972 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014973 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14974 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14975 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014976 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014977 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014978 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14979 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14980 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014981 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014982 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014983 {"MultiMedia17 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14984 {"MultiMedia18 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14985 {"MultiMedia19 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14986 {"MultiMedia28 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14987 {"MultiMedia29 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014988 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14989 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14990 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14991 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014992 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014993
14994 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14995 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14996 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14997 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14998 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14999 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15000 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15001 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15002 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15003 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15004 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15005 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15006 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15007 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15008 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15009 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015010 {"MultiMedia1 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015011 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15012 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15013 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15014 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015015
15016 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15017 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15018 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15019 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15020 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15021 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15022 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15023 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15024 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15025 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15026 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15027 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15028 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15029 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15030 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15031 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015032 {"MultiMedia2 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015033 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15034 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15035 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15036 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015037
15038 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15039 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15040 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15041 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15042 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15043 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15044 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15045 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15046 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15047 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15048 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15049 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15050 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15051 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15052 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15053 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015054 {"MultiMedia3 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015055 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15056 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15057 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15058 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015059
15060 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15061 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15062 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15063 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15064 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15065 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15066 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15067 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15068 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15069 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15070 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15071 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15072 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15073 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15074 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15075 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015076 {"MultiMedia4 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015077 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15078 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15079 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15080 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015081
15082 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15083 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15084 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15085 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15086 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15087 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15088 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15089 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15090 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15091 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15092 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15093 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15094 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15095 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15096 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15097 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015098 {"MultiMedia5 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015099 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15100 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15101 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15102 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015103
15104 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15105 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15106 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15107 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15108 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15109 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15110 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15111 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15112 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15113 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15114 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15115 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15116 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15117 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15118 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15119 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015120 {"MultiMedia6 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015121 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15122 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15123 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15124 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015125
15126 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15127 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15128 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15129 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15130 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15131 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15132 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15133 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15134 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15135 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15136 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15137 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15138 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15139 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15140 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15141 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015142 {"MultiMedia8 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015143 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15144 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15145 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15146 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015147
15148 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15149 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15150 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15151 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15152 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15153 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15154 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15155 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015156 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15157 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15158 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15159 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015160 {"MultiMedia9 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015161
Laxminath Kasam38070be2017-08-17 18:21:59 +053015162 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15163 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15164 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15165 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15166 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15167 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15168 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15169 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015170 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15171 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15172 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15173 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015174 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015175 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15176 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15177 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15178 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15179 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15180 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15181 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15182 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15183 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15184 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15185 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15186 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15187 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15188 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15189 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15190 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015191 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15192 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15193 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15194 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015195
15196 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15197 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15198 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15199 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15200 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15201 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015202 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015203
Asish Bhattacharya34504582017-08-08 12:55:01 +053015204 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15205 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15206 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15207 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15208 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15209 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15210 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15211 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15212 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15213 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15214 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15215 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15216 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15217 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15218 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15219 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15220 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15221
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015222 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15223 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15224 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15225 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15226 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15227 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15228 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15229 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15230 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15231 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15232 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15233 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15234 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15235 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15236 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15237 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15238 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15239 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
15240
15241 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15242 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15243 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15244 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15245 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15246 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15247 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15248 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15249 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15250 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15251 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15252 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15253 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15254 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15255 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15256 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15257 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15258 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
15259
15260 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15261 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15262 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15263 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15264 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15265 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15266 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15267 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15268 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15269 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15270 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15271 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15272 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15273 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15274 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15275 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15276 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
15277
15278 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15279 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15280 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15281 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15282 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15283 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15284 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15285 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15286 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15287 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15288 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15289 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15290 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15291 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15292 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15293 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15294 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
15295
15296 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15297 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15298 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015299 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015300 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15301 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15302 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015303 {"MultiMedia28 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15304 {"MultiMedia29 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015305 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15306 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015307 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015308 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15309 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015310 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015311 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15312 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15313 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015314 {"MultiMedia28 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15315 {"MultiMedia29 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015316 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15317 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15318 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15319
15320 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
15321 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
15322 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015323 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015324 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
15325 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
15326 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015327 {"MultiMedia28 Mixer", "AFE_PCM_TX", "PCM_TX"},
15328 {"MultiMedia29 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015329 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
15330 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015331 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015332 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
15333 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15334 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
15335 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
15336 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
15337 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
15338 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
15339 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
15340 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015341 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015342 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015343 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
15344 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
15345 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
15346 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015347 {"MM_UL28", NULL, "MultiMedia28 Mixer"},
15348 {"MM_UL29", NULL, "MultiMedia29 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015349
15350 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15351 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15352 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15353 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15354 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15355 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15356 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15357 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15358 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15359 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15360 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15361 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15362 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15363 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15364 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15365 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15366 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
15367
15368 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15369 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15370 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15371 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15372 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15373 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15374 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15375 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15376 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15377 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15378 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15379 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15380 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15381 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15382 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15383 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15384 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
15385
15386 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15387 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15388 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15389 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15390 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15391 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15392 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15393 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15394 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15395 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15396 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15397 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15398 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15399 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15400 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15401 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15402 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
15403
15404 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15405 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15406 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15407 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15408 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15409 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15410 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15411 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15412 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15413 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15414 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15415 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15416 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15417 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15418 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15419 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15420 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
15421
Rohit Kumara5077932017-09-10 22:05:05 +053015422 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15423 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15424 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15425 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15426 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15427 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15428 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15429 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15430 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15431 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15432 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15433 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15434 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15435 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15436 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15437 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15438 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
15439
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015440 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15441 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15442 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15443 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15444 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15445 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
15446
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015447 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
15448 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15449 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15450 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
15451
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015452 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15453 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15454 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15455 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15456 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15457 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
15458
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015459 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
15460 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015461 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15462 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15463 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15464 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
15465
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015466 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
15467 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015468 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15469 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15470 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15471 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
15472
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015473 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15474 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015475 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15476 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15477 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15478 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
15479
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015480 {"DISPLAY_PORT_RX_Voice Mixer", "Voip", "VOIP_DL"},
15481 {"DISPLAY_PORT_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015482 {"DISPLAY_PORT_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15483 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15484 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15485 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
15486
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015487 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15488 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15489 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15490 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15491 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015492 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
15493
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015494 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15495 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15496 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15497 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15498 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15499 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
15500
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015501 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15502 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015503 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15504 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15505 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15506 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
15507
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015508 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15509 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015510 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15511 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15512 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15513 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
15514
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015515 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15516 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015517 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15518 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15519 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15520 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
15521
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015522 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15523 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015524 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15525 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15526 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15527 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
15528
Rohit Kumara5077932017-09-10 22:05:05 +053015529 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15530 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015531 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15532 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15533 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15534 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
15535
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015536 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15537 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15538 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15539 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15540 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15541 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
15542 {"HDMI", NULL, "HDMI_DL_HL"},
15543
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015544 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015545 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15546 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15547 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080015548 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015549 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15550
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015551 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015552 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15553 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15554 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15555 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15556 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15557
15558 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15559 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15560 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15561 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15562 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15563 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15564
15565 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15566 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15567 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15568 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15569 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15570 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15571
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015572 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015573 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15574 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15575 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15576 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15577 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15578
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015579 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015580 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15581 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15582 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15583 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15584
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015585 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015586 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15587 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15588 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15589 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15590
Raja Mallik321d5712018-05-04 17:22:11 +053015591 {"PRI_TDM_RX_0_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015592 {"PRI_TDM_RX_0_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15593 {"PRI_TDM_RX_0_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15594 {"PRI_TDM_RX_0_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15595 {"PRI_TDM_RX_0_Voice Mixer", "QCHAT", "QCHAT_DL"},
15596 {"PRI_TDM_RX_0_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15597 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15598 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15599 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_Voice Mixer"},
15600
Raja Mallik321d5712018-05-04 17:22:11 +053015601 {"PRI_TDM_RX_1_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015602 {"PRI_TDM_RX_1_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15603 {"PRI_TDM_RX_1_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15604 {"PRI_TDM_RX_1_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15605 {"PRI_TDM_RX_1_Voice Mixer", "QCHAT", "QCHAT_DL"},
15606 {"PRI_TDM_RX_1_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15607 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15608 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15609 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_Voice Mixer"},
15610
Raja Mallik321d5712018-05-04 17:22:11 +053015611 {"PRI_TDM_RX_2_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015612 {"PRI_TDM_RX_2_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15613 {"PRI_TDM_RX_2_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15614 {"PRI_TDM_RX_2_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15615 {"PRI_TDM_RX_2_Voice Mixer", "QCHAT", "QCHAT_DL"},
15616 {"PRI_TDM_RX_2_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15617 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15618 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15619 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_Voice Mixer"},
15620
Raja Mallik321d5712018-05-04 17:22:11 +053015621 {"PRI_TDM_RX_3_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015622 {"PRI_TDM_RX_3_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15623 {"PRI_TDM_RX_3_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15624 {"PRI_TDM_RX_3_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15625 {"PRI_TDM_RX_3_Voice Mixer", "QCHAT", "QCHAT_DL"},
15626 {"PRI_TDM_RX_3_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15627 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15628 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15629 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_Voice Mixer"},
15630
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015631 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15632 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15633
15634 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15635 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15636 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15637 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015638 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015639 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015640 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015641 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15642 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15643
15644 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15645 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15646 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15647 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15648 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15649 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15650 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15651 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15652 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15653 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15654
15655 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15656 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15657 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15658 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15659
15660 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15661 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15662 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15663 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15664
15665 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15666 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15667 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15668 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15669
15670 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15671 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15672 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15673 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15674
15675 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15676 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15677 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15678 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15679
15680 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15681 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15682 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15683 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15684
15685 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15686 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15687 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15688 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15689
Laxminath Kasam38070be2017-08-17 18:21:59 +053015690 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15691 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15692 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15693 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15694 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15695 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15696 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15697 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15698 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15699 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015700
15701 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15702 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15703 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15704 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15705
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015706 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15707 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15708 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15709 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15710
15711 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15712 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15713 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15714 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15715
15716 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15717 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15718 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15719 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15720
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015721 {"AUDIO_REF_EC_UL28 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15722 {"AUDIO_REF_EC_UL28 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15723 {"AUDIO_REF_EC_UL28 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15724 {"AUDIO_REF_EC_UL28 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15725
15726 {"AUDIO_REF_EC_UL29 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15727 {"AUDIO_REF_EC_UL29 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15728 {"AUDIO_REF_EC_UL29 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15729 {"AUDIO_REF_EC_UL29 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Yunfei Zhang3efc4a22017-11-07 16:30:13 +080015730
15731 {"LSM1_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15732 {"LSM2_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15733 {"LSM3_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15734 {"LSM4_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15735 {"LSM5_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15736 {"LSM6_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15737 {"LSM7_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15738 {"LSM8_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15739
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015740 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15741 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15742 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15743 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15744 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15745 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15746 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15747 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015748 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015749 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015750 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15751 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15752 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015753 {"MM_UL28", NULL, "AUDIO_REF_EC_UL28 MUX"},
15754 {"MM_UL29", NULL, "AUDIO_REF_EC_UL29 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015755
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015756 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15757 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15758 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15759 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15760 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15761 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15762 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15763 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15764 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15765 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15766 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15767 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15768 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15769 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15770 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015771 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015772 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
Raja Mallik321d5712018-05-04 17:22:11 +053015773 {"VoiceMMode1_Tx Mixer", "PRI_TDM_TX_3_MMode1", "PRI_TDM_TX_3"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015774 {"VoiceMMode1_Tx Mixer", "QUAT_MI2S_TX_MMode1", "QUAT_MI2S_TX"},
15775 {"VoiceMMode1_Tx Mixer", "QUIN_MI2S_TX_MMode1", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015776 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15777
15778 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15779 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15780 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15781 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15782 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15783 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15784 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15785 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15786 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15787 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15788 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15789 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15790 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15791 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15792 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015793 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015794 {"VoiceMMode2_Tx Mixer", "QUAT_MI2S_TX_MMode2", "QUAT_MI2S_TX"},
15795 {"VoiceMMode2_Tx Mixer", "QUIN_MI2S_TX_MMode2", "QUIN_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015796 {"VoiceMMode2_Tx Mixer", "PRI_TDM_TX_3_MMode2", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015797 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15798
15799 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15800 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15801 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15802 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15803 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15804 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15805 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15806 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15807 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15808 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15809 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15810 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15811 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15812 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015813 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015814 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015815 {"Voip_Tx Mixer", "PRI_TDM_TX_3_Voip", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015816 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15817
15818 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15819 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15820 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15821 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15822 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15823 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15824 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15825 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15826 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15827 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15828 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15829 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15830 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15831 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15832 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15833
15834 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15835 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15836 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15837 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15838 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15839 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15840 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15841 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015842 {"LSM1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15843 {"LSM1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015844 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15845
15846 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15847 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15848 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15849 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15850 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15851 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15852 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15853 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015854 {"LSM2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15855 {"LSM2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015856 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
15857
15858
15859 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15860 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15861 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15862 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15863 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15864 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15865 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15866 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015867 {"LSM3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15868 {"LSM3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015869 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
15870
15871
15872 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15873 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15874 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15875 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15876 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15877 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15878 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15879 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015880 {"LSM4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15881 {"LSM4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015882 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
15883
15884 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15885 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15886 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15887 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15888 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15889 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15890 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15891 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015892 {"LSM5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15893 {"LSM5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015894 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
15895
15896 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15897 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15898 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15899 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15900 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15901 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015902 {"LSM6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15903 {"LSM6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015904 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
15905
15906 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15907 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15908 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15909 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15910 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15911 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015912 {"LSM7 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15913 {"LSM7 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015914 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
15915
15916 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15917 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15918 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15919 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15920 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15921 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015922 {"LSM8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15923 {"LSM8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015924 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
15925
15926
15927 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
15928 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
15929 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
15930 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
15931 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
15932 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
15933 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
15934 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
15935 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
15936 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
15937 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015938 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015939 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
15940 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
15941 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
15942 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
15943 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
15944 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
15945
15946 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
15947 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
15948 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
15949 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
15950 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
15951 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
15952 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
15953 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
15954 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
15955 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
15956 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
15957 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
Aniket Kumar Lataf8664712018-02-22 14:46:09 -080015958 {"SLIM7_UL_HL", NULL, "A2DP_SLIM7_UL_HL"},
15959 {"A2DP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015960 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015961 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015962 {"SEC_AUXPCM_UL_HL", NULL, "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015963 {"MI2S_RX", NULL, "MI2S_DL_HL"},
15964 {"MI2S_UL_HL", NULL, "MI2S_TX"},
15965 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
15966 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
15967
15968 /* connect to INT4_MI2S_DL_HL since same pcm_id */
15969 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15970 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
15971 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15972 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
15973 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
15974 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
15975 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
15976 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
15977 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
15978 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
15979
15980 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
15981 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015982 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
15983 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015984 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15985 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
15986 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15987 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
15988 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
15989 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
15990 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
15991 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
15992 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
15993 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
15994
15995 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
15996 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
15997 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
15998 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
15999 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
16000 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
16001 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
16002 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
16003 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
16004 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
16005 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
16006 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
16007 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
16008 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
16009 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
16010 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
16011 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
16012 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
16013 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
16014 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
16015 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
16016 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
16017 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
16018 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
16019 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
16020 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
16021 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
16022 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
16023 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
16024 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
16025 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
16026 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053016027 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
16028 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
16029 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
16030 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
16031 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
16032 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
16033 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
16034 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016035
16036 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16037 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16038 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16039 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16040 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16041 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16042 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16043 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16044 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16045 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16046 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16047 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16048 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16049 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16050 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16051 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016052 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16053 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16054 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16055 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016056 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
16057
16058 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16059 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16060 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16061 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16062 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16063 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16064 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16065 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16066 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16067 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16068 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16069 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16070 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16071 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16072 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16073 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016074 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16075 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16076 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16077 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016078 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
16079
16080 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16081 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16082 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16083 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16084 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16085 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16086 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16087 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16088 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16089 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16090 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16091 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16092 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16093 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16094 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16095 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016096 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16097 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16098 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16099 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016100 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
16101
16102 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16103 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16104 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16105 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16106 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16107 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16108 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16109 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16110 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16111 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16112 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16113 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16114 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16115 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16116 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16117 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016118 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16119 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16120 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16121 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016122 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
16123
16124 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16125 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16126 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16127 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16128 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16129 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16130 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16131 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16132 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16133 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16134 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16135 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16136 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16137 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16138 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16139 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016140 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16141 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16142 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16143 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016144 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
16145
16146 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16147 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16148 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16149 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16150 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16151 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16152 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16153 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16154 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16155 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16156 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16157 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16158 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16159 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16160 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16161 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016162 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16163 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16164 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16165 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016166 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
16167
16168 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16169 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16170 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16171 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16172 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16173 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16174 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16175 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16176 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16177 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16178 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16179 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16180 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16181 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16182 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16183 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016184 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16185 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16186 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16187 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016188 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
16189
16190 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16191 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16192 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16193 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16194 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16195 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16196 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16197 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16198 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16199 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16200 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16201 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16202 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16203 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16204 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16205 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016206 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16207 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16208 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16209 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016210 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
16211
16212 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16213 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16214 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16215 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16216 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16217 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16218 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16219 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16220 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16221 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16222 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16223 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16224 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16225 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16226 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16227 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016228 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16229 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16230 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16231 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016232 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
16233
16234 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16235 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16236 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16237 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16238 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16239 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16240 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16241 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16242 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16243 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16244 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16245 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16246 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16247 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16248 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16249 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016250 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16251 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16252 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16253 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016254 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
16255
16256 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16257 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16258 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16259 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16260 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16261 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16262 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16263 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16264 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16265 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16266 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16267 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16268 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16269 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16270 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16271 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016272 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16273 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16274 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16275 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016276 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
16277
16278 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16279 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16280 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16281 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16282 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16283 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16284 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16285 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16286 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16287 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16288 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16289 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16290 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16291 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16292 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16293 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016294 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16295 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16296 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16297 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016298 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
16299
16300 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16301 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16302 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16303 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16304 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16305 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16306 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16307 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16308 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16309 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16310 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16311 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16312 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16313 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16314 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16315 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016316 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16317 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16318 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16319 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016320 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
16321
16322 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16323 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16324 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16325 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16326 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16327 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16328 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16329 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16330 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16331 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16332 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16333 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16334 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16335 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16336 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16337 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016338 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16339 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16340 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16341 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016342 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
16343
16344 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16345 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16346 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16347 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16348 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16349 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16350 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16351 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16352 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16353 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16354 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16355 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16356 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16357 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16358 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16359 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016360 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16361 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16362 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16363 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016364 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
16365
16366 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16367 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16368 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16369 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16370 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16371 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16372 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16373 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16374 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16375 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16376 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16377 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16378 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16379 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16380 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16381 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016382 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16383 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16384 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16385 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016386 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
16387
Rohit Kumara5077932017-09-10 22:05:05 +053016388 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16389 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16390 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16391 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16392 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16393 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16394 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16395 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16396 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16397 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16398 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16399 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16400 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16401 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16402 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16403 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16404 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16405 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16406 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16407 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016408 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016409
16410 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16411 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16412 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16413 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16414 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16415 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16416 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16417 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16418 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16419 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16420 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16421 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16422 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16423 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16424 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16425 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16426 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16427 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16428 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16429 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016430 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016431
16432 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16433 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16434 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16435 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16436 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16437 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16438 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16439 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16440 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16441 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16442 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16443 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16444 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16445 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16446 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16447 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16448 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16449 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16450 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16451 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016452 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016453
16454 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16455 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16456 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16457 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16458 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16459 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16460 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16461 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16462 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16463 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16464 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16465 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16466 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16467 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16468 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16469 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16470 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16471 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16472 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16473 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016474 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016475
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016476 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16477 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16478 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16479 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016480 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016481 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16482 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16483 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16484 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16485 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16486 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
16487
16488 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16489 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16490 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16491 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016492 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016493 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16494 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16495 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16496 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16497 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16498 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
16499
16500 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16501 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16502 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16503 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16504 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16505 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16506 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16507 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16508 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016509 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016510 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16511 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16512 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16513 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16514 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016515 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016516 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16517 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
16518 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16519 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16520 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
16521 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
16522 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
16523 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
16524 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
16525 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
16526
16527
16528 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16529 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16530 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16531 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16532 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016533 {"AUX_PCM_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016534 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
16535
16536 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16537 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16538 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016539 {"SEC_AUXPCM_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016540 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
16541
16542 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16543 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16544 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16545 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
16546
16547 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16548 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
16549 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16550 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
16551
Rohit Kumara5077932017-09-10 22:05:05 +053016552 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16553 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
16554 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16555 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
16556
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016557 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16558 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16559 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16560 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16561 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16562 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16563 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16564 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016565 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016566 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
16567 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16568 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16569 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16570 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16571 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16572 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16573 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16574 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16575 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16576 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
16577
16578 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16579 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16580 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16581 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16582 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16583 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16584 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16585 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16586 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16587 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16588 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16589 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
16590
16591 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16592 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16593 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16594 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16595 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16596 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16597 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16598 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16599 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16600 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16601 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16602 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
16603
kunleizdf5a00a2017-11-27 15:27:36 +080016604 {"STUB_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16605 {"STUB_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016606 {"STUB_RX", NULL, "STUB_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016607
16608 {"SLIMBUS_1_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16609 {"SLIMBUS_1_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016610 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016611
16612 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16613 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016614 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
16615
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016616 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
16617 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016618 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16619 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16620 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16621 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
16622
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016623 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
16624 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016625 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16626 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16627 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16628 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16629
16630 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16631 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16632 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16633 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16634 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16635 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16636 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16637 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16638 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16639 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16640 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16641 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16642 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16643
16644 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16645 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16646 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16647 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16648 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16649 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16650 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16651 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16652 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16653 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16654 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16655 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16656 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16657
16658 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16659 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16660
16661 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16662 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16663
16664 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16665 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16666
16667 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16668 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16669 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16670
16671 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16672 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16673 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16674 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016675 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016676 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16677 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16678 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16679 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016680 {"PRI_MI2S_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016681 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16682
16683 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16684 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16685 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16686 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016687 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016688 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16689 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16690 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016691 {"SEC_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016692 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16693
16694 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16695 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16696 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16697 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016698 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016699 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16700 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16701 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16702
16703 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16704 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16705 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16706 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016707 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016708 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16709 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16710 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16711 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16712 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16713
Rohit Kumara5077932017-09-10 22:05:05 +053016714 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16715 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16716 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16717 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16718 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16719 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16720 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16721 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16722
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016723 /* Backend Enablement */
16724
16725 {"BE_OUT", NULL, "PRI_I2S_RX"},
16726 {"BE_OUT", NULL, "SEC_I2S_RX"},
16727 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16728 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16729 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16730 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16731 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16732 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16733 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16734 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16735 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16736 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16737 {"BE_OUT", NULL, "HDMI"},
16738 {"BE_OUT", NULL, "DISPLAY_PORT"},
16739 {"BE_OUT", NULL, "SPDIF_RX"},
16740 {"BE_OUT", NULL, "MI2S_RX"},
16741 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16742 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16743 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16744 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16745 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16746 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16747 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16748 {"BE_OUT", NULL, "INT4_MI2S_RX"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016749 {"BE_OUT", NULL, "INT2_MI2S_RX"},
16750 {"BE_OUT", NULL, "INT3_MI2S_RX"},
16751 {"BE_OUT", NULL, "INT5_MI2S_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016752 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16753 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16754 {"BE_OUT", NULL, "INT_FM_RX"},
16755 {"BE_OUT", NULL, "PCM_RX"},
16756 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16757 {"BE_OUT", NULL, "AUX_PCM_RX"},
16758 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16759 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16760 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016761 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016762 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16763 {"BE_OUT", NULL, "INT_FM_RX"},
16764 {"BE_OUT", NULL, "PCM_RX"},
16765 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16766 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16767 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16768 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16769 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16770 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16771 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16772 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16773 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16774 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16775 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16776 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16777 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16778 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16779 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16780 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16781 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16782 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16783 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16784 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016785 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16786 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16787 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16788 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016789
16790 {"PRI_I2S_TX", NULL, "BE_IN"},
16791 {"MI2S_TX", NULL, "BE_IN"},
16792 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16793 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16794 {"PRI_MI2S_TX", NULL, "BE_IN"},
16795 {"TERT_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016796 {"INT0_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016797 {"INT2_MI2S_TX", NULL, "BE_IN"},
16798 {"INT3_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016799 {"INT4_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016800 {"INT5_MI2S_TX", NULL, "BE_IN"},
16801 {"SEC_MI2S_TX", NULL, "BE_IN"},
16802 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16803 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16804 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16805 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16806 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16807 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16808 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16809 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16810 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16811 {"USB_AUDIO_TX", NULL, "BE_IN" },
16812 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16813 {"INT_FM_TX", NULL, "BE_IN"},
16814 {"PCM_TX", NULL, "BE_IN"},
16815 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16816 {"BE_OUT", NULL, "STUB_RX"},
16817 {"STUB_TX", NULL, "BE_IN"},
16818 {"STUB_1_TX", NULL, "BE_IN"},
16819 {"BE_OUT", NULL, "AUX_PCM_RX"},
16820 {"AUX_PCM_TX", NULL, "BE_IN"},
16821 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16822 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16823 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016824 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016825 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16826 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16827 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16828 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16829 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16830 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16831 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16832 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16833 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16834 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16835 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16836 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16837 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16838 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16839 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16840 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16841 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16842 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16843 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16844 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16845 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16846 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16847 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16848 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16849 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16850 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16851 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16852 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Raja Mallik425e1d32018-05-20 19:21:10 +053016853 {"AFE_LOOPBACK_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016854 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16855 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16856 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16857 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016858};
16859
16860static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16861 struct snd_pcm_hw_params *params)
16862{
16863 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16864 unsigned int be_id = rtd->dai_link->id;
16865
16866 if (be_id >= MSM_BACKEND_DAI_MAX) {
16867 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16868 return -EINVAL;
16869 }
16870
16871 mutex_lock(&routing_lock);
16872 msm_bedais[be_id].sample_rate = params_rate(params);
16873 msm_bedais[be_id].channel = params_channels(params);
16874 msm_bedais[be_id].format = params_format(params);
16875 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
16876 __func__, msm_bedais[be_id].sample_rate,
16877 msm_bedais[be_id].format, be_id);
16878 mutex_unlock(&routing_lock);
16879 return 0;
16880}
16881
16882static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
16883{
16884 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16885 unsigned int be_id = rtd->dai_link->id;
16886 int i, session_type, path_type, topology;
16887 struct msm_pcm_routing_bdai_data *bedai;
16888 struct msm_pcm_routing_fdai_data *fdai;
16889
16890 pr_debug("%s: substream->pcm->id:%s\n",
16891 __func__, substream->pcm->id);
16892
16893 if (be_id >= MSM_BACKEND_DAI_MAX) {
16894 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16895 return -EINVAL;
16896 }
16897
16898 bedai = &msm_bedais[be_id];
16899 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
16900 0 : 1);
16901 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16902 path_type = ADM_PATH_PLAYBACK;
16903 else
16904 path_type = ADM_PATH_LIVE_REC;
16905
16906 mutex_lock(&routing_lock);
16907 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16908 if (!is_mm_lsm_fe_id(i))
16909 continue;
16910 fdai = &fe_dai_map[i][session_type];
16911 if (fdai->strm_id != INVALID_SESSION) {
16912 int idx;
16913 int port_id;
16914 unsigned long copp =
16915 session_copp_map[i][session_type][be_id];
16916 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
16917 if (test_bit(idx, &copp))
16918 break;
16919 fdai->be_srate = bedai->sample_rate;
16920 port_id = bedai->port_id;
16921 topology = adm_get_topology_for_port_copp_idx(port_id,
16922 idx);
16923 adm_close(bedai->port_id, fdai->perf_mode, idx);
16924 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
16925 __func__, copp, i, session_type, be_id,
16926 topology);
16927 clear_bit(idx,
16928 &session_copp_map[i][session_type][be_id]);
16929 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16930 (bedai->passthr_mode[i] == LEGACY_PCM))
16931 msm_pcm_routing_deinit_pp(bedai->port_id,
16932 topology);
16933 }
16934 }
16935
16936 bedai->active = 0;
16937 bedai->sample_rate = 0;
16938 bedai->channel = 0;
16939 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
16940 if (bedai->passthr_mode[i] != LISTEN)
16941 bedai->passthr_mode[i] = LEGACY_PCM;
16942 }
16943 mutex_unlock(&routing_lock);
16944
16945 return 0;
16946}
16947
16948static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
16949{
16950 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16951 unsigned int be_id = rtd->dai_link->id;
16952 int i, path_type, topology;
16953 int session_type = INVALID_SESSION;
16954 struct msm_pcm_routing_bdai_data *bedai;
16955 u32 channels, sample_rate;
16956 uint16_t bits_per_sample = 16, voc_path_type;
16957 struct msm_pcm_routing_fdai_data *fdai;
16958 u32 session_id;
16959 struct media_format_info voc_be_media_format;
16960 bool is_lsm;
16961
16962 pr_debug("%s: substream->pcm->id:%s\n",
16963 __func__, substream->pcm->id);
16964
16965 if (be_id >= MSM_BACKEND_DAI_MAX) {
16966 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16967 return -EINVAL;
16968 }
16969
16970 bedai = &msm_bedais[be_id];
16971
16972 mutex_lock(&routing_lock);
16973 if (bedai->active == 1)
16974 goto done; /* Ignore prepare if back-end already active */
16975
16976 /* AFE port is not active at this point. However, still
16977 * go ahead setting active flag under the notion that
16978 * QDSP6 is able to handle ADM starting before AFE port
16979 * is started.
16980 */
16981 bedai->active = 1;
16982
16983 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16984 if (!(is_mm_lsm_fe_id(i) &&
16985 route_check_fe_id_adm_support(i)))
16986 continue;
16987
16988 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
16989 if (bedai->passthr_mode[i] != LEGACY_PCM)
16990 path_type = ADM_PATH_COMPRESSED_RX;
16991 else
16992 path_type = ADM_PATH_PLAYBACK;
16993 session_type = SESSION_TYPE_RX;
16994 } else {
16995 path_type = ADM_PATH_LIVE_REC;
16996 session_type = SESSION_TYPE_TX;
16997 }
16998
16999 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
17000 (i <= MSM_FRONTEND_DAI_LSM8);
17001 fdai = &fe_dai_map[i][session_type];
17002 if (fdai->strm_id != INVALID_SESSION) {
17003 int app_type, app_type_idx, copp_idx, acdb_dev_id;
17004
17005 if (session_type == SESSION_TYPE_TX &&
17006 fdai->be_srate &&
17007 (fdai->be_srate != bedai->sample_rate)) {
17008 pr_debug("%s: flush strm %d diff BE rates\n",
17009 __func__,
17010 fdai->strm_id);
17011
17012 if (fdai->event_info.event_func)
17013 fdai->event_info.event_func(
17014 MSM_PCM_RT_EVT_BUF_RECFG,
17015 fdai->event_info.priv_data);
17016 fdai->be_srate = 0; /* might not need it */
17017 }
17018 bits_per_sample = msm_routing_get_bit_width(
17019 bedai->format);
17020
17021 app_type =
17022 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
17023 if (app_type && is_lsm) {
17024 app_type_idx =
17025 msm_pcm_routing_get_lsm_app_type_idx(app_type);
17026 sample_rate =
17027 fe_dai_app_type_cfg[i][session_type][be_id]
17028 .sample_rate;
17029 bits_per_sample =
17030 lsm_app_type_cfg[app_type_idx].bit_width;
17031 } else if (app_type) {
17032 app_type_idx =
17033 msm_pcm_routing_get_app_type_idx(app_type);
17034 sample_rate =
17035 fe_dai_app_type_cfg[i][session_type]
17036 [be_id].sample_rate;
17037 bits_per_sample =
17038 app_type_cfg[app_type_idx].bit_width;
17039 } else
17040 sample_rate = bedai->sample_rate;
17041 /*
17042 * check if ADM needs to be configured with different
17043 * channel mapping than backend
17044 */
17045 if (!bedai->adm_override_ch)
17046 channels = bedai->channel;
17047 else
17048 channels = bedai->adm_override_ch;
17049 acdb_dev_id =
17050 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
17051 topology = msm_routing_get_adm_topology(i, session_type,
17052 be_id);
17053 copp_idx = adm_open(bedai->port_id, path_type,
17054 sample_rate, channels, topology,
17055 fdai->perf_mode, bits_per_sample,
17056 app_type, acdb_dev_id);
17057 if ((copp_idx < 0) ||
17058 (copp_idx >= MAX_COPPS_PER_PORT)) {
17059 pr_err("%s: adm open failed\n", __func__);
17060 mutex_unlock(&routing_lock);
17061 return -EINVAL;
17062 }
17063 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
17064 __func__, i, session_type, be_id);
17065 set_bit(copp_idx,
17066 &session_copp_map[i][session_type][be_id]);
17067
17068 if (msm_is_resample_needed(
17069 sample_rate,
17070 bedai->sample_rate))
17071 adm_copp_mfc_cfg(
17072 bedai->port_id, copp_idx,
17073 bedai->sample_rate);
17074
17075 msm_pcm_routing_build_matrix(i, session_type, path_type,
17076 fdai->perf_mode,
17077 bedai->passthr_mode[i]);
17078 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
17079 (bedai->passthr_mode[i] == LEGACY_PCM))
17080 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
17081 topology, channels);
17082 }
17083 }
17084
17085 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17086 session_id = msm_pcm_routing_get_voc_sessionid(i);
17087 if (session_id) {
17088 pr_debug("%s voice session_id: 0x%x\n", __func__,
17089 session_id);
17090
17091 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
17092 voc_path_type = RX_PATH;
17093 else
17094 voc_path_type = TX_PATH;
17095
17096 voc_set_route_flag(session_id, voc_path_type, 1);
17097
17098 memset(&voc_be_media_format, 0,
17099 sizeof(struct media_format_info));
17100
17101 voc_be_media_format.port_id = bedai->port_id;
17102 voc_be_media_format.num_channels = bedai->channel;
17103 voc_be_media_format.sample_rate = bedai->sample_rate;
17104 voc_be_media_format.bits_per_sample = bedai->format;
17105 /* Defaulting this to 1 for voice call usecases */
17106 voc_be_media_format.channel_mapping[0] = 1;
17107
17108 voc_set_device_config(session_id, voc_path_type,
17109 &voc_be_media_format);
17110
17111 if (voc_get_route_flag(session_id, RX_PATH) &&
17112 voc_get_route_flag(session_id, TX_PATH))
17113 voc_enable_device(session_id);
17114 }
17115 }
17116
17117 /* Check if backend is an external ec ref port and set as needed */
17118 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
17119
17120 memset(&voc_be_media_format, 0,
17121 sizeof(struct media_format_info));
17122
17123 /* Get format info for ec ref port from msm_bedais[] */
17124 voc_be_media_format.port_id = bedai->port_id;
17125 voc_be_media_format.num_channels = bedai->channel;
17126 voc_be_media_format.bits_per_sample = bedai->format;
17127 voc_be_media_format.sample_rate = bedai->sample_rate;
17128 /* Defaulting this to 1 for voice call usecases */
17129 voc_be_media_format.channel_mapping[0] = 1;
17130 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
17131 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
17132 __func__, voc_be_media_format.port_id,
17133 voc_be_media_format.num_channels,
17134 voc_be_media_format.bits_per_sample,
17135 voc_be_media_format.sample_rate);
17136 }
17137
17138done:
17139 mutex_unlock(&routing_lock);
17140
17141 return 0;
17142}
17143
17144static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
17145 int fe_id)
17146{
17147 int index, topo_id, be_idx;
17148 unsigned long pp_config = 0;
17149 bool mute_on;
17150 int latency;
17151 bool compr_passthr_mode = true;
17152
17153 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
17154
17155 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
17156 pr_err("%s: Device pp params on invalid port %d\n",
17157 __func__, port_id);
17158 return -EINVAL;
17159 }
17160
17161 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17162 if (port_id == msm_bedais[be_idx].port_id)
17163 break;
17164 }
17165
17166 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17167 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17168 return -EINVAL;
17169 }
17170
17171 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17172 if (msm_bedais_pp_params[index].port_id == port_id)
17173 break;
17174 }
17175 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17176 pr_err("%s: Invalid backend pp params index %d\n",
17177 __func__, index);
17178 return -EINVAL;
17179 }
17180
17181 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
17182 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
17183 pr_err("%s: Invalid passthrough topology 0x%x\n",
17184 __func__, topo_id);
17185 return -EINVAL;
17186 }
17187
17188 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
17189 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
17190 compr_passthr_mode = false;
17191
17192 pp_config = msm_bedais_pp_params[index].pp_params_config;
17193 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
17194 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17195 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
17196 mute_on = msm_bedais_pp_params[index].mute_on;
17197 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17198 adm_send_compressed_device_mute(port_id,
17199 copp_idx,
17200 mute_on);
17201 }
17202 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
17203 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17204 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
17205 &pp_config);
17206 latency = msm_bedais_pp_params[index].latency;
17207 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17208 adm_send_compressed_device_latency(port_id,
17209 copp_idx,
17210 latency);
17211 }
17212 return 0;
17213}
17214
17215static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17216 struct snd_ctl_elem_value *ucontrol)
17217{
17218 int pp_id = ucontrol->value.integer.value[0];
17219 int port_id = 0;
17220 int index, be_idx, i, topo_id, idx;
17221 bool mute;
17222 int latency;
17223 bool compr_passthr_mode = true;
17224
17225 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
17226
17227 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17228 port_id = msm_bedais[be_idx].port_id;
17229 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
17230 break;
17231 }
17232
17233 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17234 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17235 return -EINVAL;
17236 }
17237
17238 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17239 if (msm_bedais_pp_params[index].port_id == port_id)
17240 break;
17241 }
17242 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17243 pr_err("%s: Invalid pp params backend index %d\n",
17244 __func__, index);
17245 return -EINVAL;
17246 }
17247
17248 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
17249 MSM_FRONTEND_DAI_MM_SIZE) {
17250 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
17251 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
17252 compr_passthr_mode = false;
17253
17254 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17255 unsigned long copp =
17256 session_copp_map[i]
17257 [SESSION_TYPE_RX][be_idx];
17258 if (!test_bit(idx, &copp))
17259 continue;
17260 topo_id = adm_get_topology_for_port_copp_idx(port_id,
17261 idx);
17262 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
17263 continue;
17264 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
17265 __func__, port_id, copp, msm_bedais[be_idx].active,
17266 msm_bedais[be_idx].passthr_mode[i]);
17267 switch (pp_id) {
17268 case ADM_PP_PARAM_MUTE_ID:
17269 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17270 mute = ucontrol->value.integer.value[1] ? true : false;
17271 msm_bedais_pp_params[index].mute_on = mute;
17272 set_bit(ADM_PP_PARAM_MUTE_BIT,
17273 &msm_bedais_pp_params[index].pp_params_config);
17274 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17275 adm_send_compressed_device_mute(port_id,
17276 idx, mute);
17277 break;
17278 case ADM_PP_PARAM_LATENCY_ID:
17279 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17280 msm_bedais_pp_params[index].latency =
17281 ucontrol->value.integer.value[1];
17282 set_bit(ADM_PP_PARAM_LATENCY_BIT,
17283 &msm_bedais_pp_params[index].pp_params_config);
17284 latency = msm_bedais_pp_params[index].latency =
17285 ucontrol->value.integer.value[1];
17286 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17287 adm_send_compressed_device_latency(port_id,
17288 idx, latency);
17289 break;
17290 default:
17291 pr_info("%s, device pp param %d not supported\n",
17292 __func__, pp_id);
17293 break;
17294 }
17295 }
17296 }
17297 return 0;
17298}
17299
17300static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17301 struct snd_ctl_elem_value *ucontrol)
17302{
17303 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
17304 return 0;
17305}
17306
17307static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
17308 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
17309 0, 3, msm_routing_get_device_pp_params_mixer,
17310 msm_routing_put_device_pp_params_mixer),
17311};
17312
17313static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
17314 struct snd_ctl_elem_value *ucontrol)
17315{
17316 ucontrol->value.integer.value[0] =
17317 core_get_license_status(ASM_MEDIA_FMT_APTX);
17318 pr_debug("%s: status %ld\n", __func__,
17319 ucontrol->value.integer.value[0]);
17320 return 0;
17321}
17322
17323static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
17324 struct snd_ctl_elem_value *ucontrol)
17325{
17326 int32_t status = 0;
17327
17328 status = core_set_license(ucontrol->value.integer.value[0],
17329 APTX_CLASSIC_DEC_LICENSE_ID);
17330 pr_debug("%s: status %d\n", __func__, status);
17331 return status;
17332}
17333
17334static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
17335 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
17336 0xFFFF, 0, msm_aptx_dec_license_control_get,
17337 msm_aptx_dec_license_control_put),
17338};
17339
17340static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
17341 struct snd_ctl_elem_info *uinfo)
17342{
17343 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
17344 uinfo->count = sizeof(be_dai_name_table);
17345 return 0;
17346}
17347
17348static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
17349 unsigned int __user *bytes,
17350 unsigned int size)
17351{
17352 int i;
17353 int ret;
17354
17355 if (size < sizeof(be_dai_name_table)) {
17356 pr_err("%s: invalid size %d requested, returning\n",
17357 __func__, size);
17358 ret = -EINVAL;
17359 goto done;
17360 }
17361
17362 /*
17363 * Fill be_dai_name_table from msm_bedais table to reduce code changes
17364 * needed when adding new backends
17365 */
17366 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17367 be_dai_name_table[i].be_id = i;
17368 strlcpy(be_dai_name_table[i].be_name,
17369 msm_bedais[i].name,
17370 LPASS_BE_NAME_MAX_LENGTH);
17371 }
17372
17373 ret = copy_to_user(bytes, &be_dai_name_table,
17374 sizeof(be_dai_name_table));
17375 if (ret) {
17376 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
17377 ret = -EFAULT;
17378 }
17379
17380done:
17381 return ret;
17382}
17383
17384static const struct snd_kcontrol_new
17385 msm_routing_be_dai_name_table_mixer_controls[] = {
17386 {
17387 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
17388 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
17389 .info = msm_routing_be_dai_name_table_info,
17390 .name = "Backend DAI Name Table",
17391 .tlv.c = snd_soc_bytes_tlv_callback,
17392 .private_value = (unsigned long) &(struct soc_bytes_ext) {
17393 .max = sizeof(be_dai_name_table),
17394 .get = msm_routing_be_dai_name_table_tlv_get,
17395 }
17396 },
17397};
17398
17399static int msm_routing_stereo_channel_reverse_control_get(
17400 struct snd_kcontrol *kcontrol,
17401 struct snd_ctl_elem_value *ucontrol)
17402{
17403 ucontrol->value.integer.value[0] = swap_ch;
17404 pr_debug("%s: Swap channel value: %ld\n", __func__,
17405 ucontrol->value.integer.value[0]);
17406 return 0;
17407}
17408
17409static int msm_routing_stereo_channel_reverse_control_put(
17410 struct snd_kcontrol *kcontrol,
17411 struct snd_ctl_elem_value *ucontrol)
17412{
17413 int i, idx, be_index, port_id;
17414 int ret = 0;
17415 unsigned long copp;
17416
17417 pr_debug("%s Swap channel value:%ld\n", __func__,
17418 ucontrol->value.integer.value[0]);
17419
17420 swap_ch = ucontrol->value.integer.value[0];
17421
17422 mutex_lock(&routing_lock);
17423 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
17424 port_id = msm_bedais[be_index].port_id;
17425 if (!msm_bedais[be_index].active)
17426 continue;
17427
17428 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
17429 MSM_FRONTEND_DAI_MM_SIZE) {
17430 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
17431 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17432 if (!test_bit(idx, &copp))
17433 continue;
17434
17435 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
17436 __func__, port_id, idx);
17437 ret = adm_swap_speaker_channels(
17438 port_id, idx,
17439 msm_bedais[be_index].sample_rate,
17440 swap_ch);
17441 if (ret) {
17442 pr_err("%s:Swap_channel failed, err=%d\n",
17443 __func__, ret);
17444 goto done;
17445 }
17446 }
17447 }
17448 }
17449done:
17450 mutex_unlock(&routing_lock);
17451 return ret;
17452}
17453
17454static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
17455 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
17456 1, 0, msm_routing_stereo_channel_reverse_control_get,
17457 msm_routing_stereo_channel_reverse_control_put),
17458};
17459
17460static const struct snd_pcm_ops msm_routing_pcm_ops = {
17461 .hw_params = msm_pcm_routing_hw_params,
17462 .close = msm_pcm_routing_close,
17463 .prepare = msm_pcm_routing_prepare,
17464};
17465
17466/* Not used but frame seems to require it */
17467static int msm_routing_probe(struct snd_soc_platform *platform)
17468{
17469 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
17470 ARRAY_SIZE(msm_qdsp6_widgets));
17471 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
17472 ARRAY_SIZE(intercon));
17473
17474 snd_soc_dapm_new_widgets(platform->component.dapm.card);
17475
17476 snd_soc_add_platform_controls(platform, lsm_controls,
17477 ARRAY_SIZE(lsm_controls));
17478
17479 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
17480 ARRAY_SIZE(aanc_slim_0_rx_mux));
17481
17482 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
17483 ARRAY_SIZE(msm_voc_session_controls));
17484
17485 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
17486 ARRAY_SIZE(app_type_cfg_controls));
17487
17488 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
17489 ARRAY_SIZE(lsm_app_type_cfg_controls));
17490
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070017491 snd_soc_add_platform_controls(platform, module_cfg_controls,
17492 ARRAY_SIZE(module_cfg_controls));
17493
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017494 snd_soc_add_platform_controls(platform,
17495 stereo_to_custom_stereo_controls,
17496 ARRAY_SIZE(stereo_to_custom_stereo_controls));
17497
17498 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
17499 ARRAY_SIZE(ec_ref_param_controls));
17500
17501 snd_soc_add_platform_controls(platform, channel_mixer_controls,
17502 ARRAY_SIZE(channel_mixer_controls));
17503
17504 msm_qti_pp_add_controls(platform);
17505
17506 msm_dts_srs_tm_add_controls(platform);
17507
17508 msm_dolby_dap_add_controls(platform);
17509
17510 snd_soc_add_platform_controls(platform,
17511 use_ds1_or_ds2_controls,
17512 ARRAY_SIZE(use_ds1_or_ds2_controls));
17513
17514 snd_soc_add_platform_controls(platform,
17515 device_pp_params_mixer_controls,
17516 ARRAY_SIZE(device_pp_params_mixer_controls));
17517
17518 snd_soc_add_platform_controls(platform,
17519 msm_routing_be_dai_name_table_mixer_controls,
17520 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
17521
17522 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
17523 ARRAY_SIZE(msm_source_tracking_controls));
17524 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
17525 ARRAY_SIZE(adm_channel_config_controls));
17526
17527 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
17528 ARRAY_SIZE(aptx_dec_license_controls));
17529 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
17530 ARRAY_SIZE(stereo_channel_reverse_control));
17531 return 0;
17532}
17533
17534int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
17535{
17536 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
17537}
17538
17539void msm_routing_pcm_free(struct snd_pcm *pcm)
17540{
17541 msm_pcm_routing_hwdep_free(pcm);
17542}
17543
17544static struct snd_soc_platform_driver msm_soc_routing_platform = {
17545 .ops = &msm_routing_pcm_ops,
17546 .probe = msm_routing_probe,
17547 .pcm_new = msm_routing_pcm_new,
17548 .pcm_free = msm_routing_pcm_free,
17549};
17550
17551static int msm_routing_pcm_probe(struct platform_device *pdev)
17552{
17553
17554 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
17555 return snd_soc_register_platform(&pdev->dev,
17556 &msm_soc_routing_platform);
17557}
17558
17559static int msm_routing_pcm_remove(struct platform_device *pdev)
17560{
17561 snd_soc_unregister_platform(&pdev->dev);
17562 return 0;
17563}
17564
17565static const struct of_device_id msm_pcm_routing_dt_match[] = {
17566 {.compatible = "qcom,msm-pcm-routing"},
17567 {}
17568};
17569MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
17570
17571static struct platform_driver msm_routing_pcm_driver = {
17572 .driver = {
17573 .name = "msm-pcm-routing",
17574 .owner = THIS_MODULE,
17575 .of_match_table = msm_pcm_routing_dt_match,
17576 },
17577 .probe = msm_routing_pcm_probe,
17578 .remove = msm_routing_pcm_remove,
17579};
17580
17581int msm_routing_check_backend_enabled(int fedai_id)
17582{
17583 int i;
17584
17585 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
17586 /* bad ID assigned in machine driver */
17587 pr_err("%s: bad MM ID\n", __func__);
17588 return 0;
17589 }
17590 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17591 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
17592 return msm_bedais[i].active;
17593 }
17594 return 0;
17595}
17596
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017597static int get_cal_type_index(int32_t cal_type)
17598{
17599 int ret = -EINVAL;
17600
17601 switch (cal_type) {
17602 case ADM_TOPOLOGY_CAL_TYPE:
17603 ret = ADM_TOPOLOGY_CAL_TYPE_IDX;
17604 break;
17605 case ADM_LSM_TOPOLOGY_CAL_TYPE:
17606 ret = ADM_LSM_TOPOLOGY_CAL_TYPE_IDX;
17607 break;
17608 default:
17609 pr_err("%s: Invalid cal type %d\n", __func__, cal_type);
17610 }
17611 return ret;
17612}
17613
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017614static int msm_routing_set_cal(int32_t cal_type,
17615 size_t data_size, void *data)
17616{
17617 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017618 int cal_index;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017619 pr_debug("%s\n", __func__);
17620
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017621 cal_index = get_cal_type_index(cal_type);
17622 if (cal_index < 0) {
17623 pr_err("%s: Could not get cal index %d\n",
17624 __func__, cal_index);
17625 ret = -EINVAL;
17626 goto done;
17627 }
17628
17629 ret = cal_utils_set_cal(data_size, data, cal_data[cal_index], 0, NULL);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017630 if (ret < 0) {
17631 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17632 __func__, ret, cal_type);
17633 ret = -EINVAL;
17634 goto done;
17635 }
17636done:
17637 return ret;
17638}
17639
17640static void msm_routing_delete_cal_data(void)
17641{
17642 pr_debug("%s\n", __func__);
17643
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017644 cal_utils_destroy_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017645}
17646
17647static int msm_routing_init_cal_data(void)
17648{
17649 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017650 struct cal_type_info cal_type_info[] = {
17651 {{ADM_TOPOLOGY_CAL_TYPE,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017652 {NULL, NULL, NULL,
17653 msm_routing_set_cal, NULL, NULL} },
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017654 {NULL, NULL, cal_utils_match_buf_num} },
17655
17656 {{ADM_LSM_TOPOLOGY_CAL_TYPE,
17657 {NULL, NULL, NULL,
17658 msm_routing_set_cal, NULL, NULL} },
17659 {NULL, NULL, cal_utils_match_buf_num} },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017660 };
17661 pr_debug("%s\n", __func__);
17662
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017663 ret = cal_utils_create_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0],
17664 &cal_type_info[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017665 if (ret < 0) {
17666 pr_err("%s: could not create cal type!\n",
17667 __func__);
17668 ret = -EINVAL;
17669 goto err;
17670 }
17671
17672 return ret;
17673err:
17674 msm_routing_delete_cal_data();
17675 return ret;
17676}
17677
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017678int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017679{
17680 mutex_init(&routing_lock);
17681 if (msm_routing_init_cal_data())
17682 pr_err("%s: could not init cal data!\n", __func__);
17683
17684 afe_set_routing_callback(
17685 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17686
17687 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17688 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17689
17690 return platform_driver_register(&msm_routing_pcm_driver);
17691}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017692
Asish Bhattacharya5faacb32017-12-04 17:23:15 +053017693void msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017694{
17695 msm_routing_delete_cal_data();
17696 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17697 mutex_destroy(&routing_lock);
17698 platform_driver_unregister(&msm_routing_pcm_driver);
17699}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017700
17701MODULE_DESCRIPTION("MSM routing platform driver");
17702MODULE_LICENSE("GPL v2");