blob: 5fb8193525e8cb68f647f93e518771a65aeb3cbb [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;
64static int int0_mi2s_switch_enable;
65static int int4_mi2s_switch_enable;
66static int pri_mi2s_switch_enable;
67static int sec_mi2s_switch_enable;
68static int tert_mi2s_switch_enable;
69static int quat_mi2s_switch_enable;
Rohit Kumara5077932017-09-10 22:05:05 +053070static int quin_mi2s_switch_enable;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053071static int fm_pcmrx_switch_enable;
72static int usb_switch_enable;
73static int lsm_port_index;
74static int slim0_rx_aanc_fb_port;
75static int msm_route_ec_ref_rx;
76static int msm_ec_ref_ch = 4;
77static int msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
78static int msm_ec_ref_sampling_rate = 48000;
79static uint32_t voc_session_id = ALL_SESSION_VSID;
80static int msm_route_ext_ec_ref;
81static bool is_custom_stereo_on;
82static bool is_ds2_on;
83static bool swap_ch;
84
85#define WEIGHT_0_DB 0x4000
86/* all the FEs which can support channel mixer */
87static struct msm_pcm_channel_mixer channel_mixer[MSM_FRONTEND_DAI_MM_SIZE];
88/* input BE for each FE */
89static int channel_input[MSM_FRONTEND_DAI_MM_SIZE][ADM_MAX_CHANNELS];
90
91enum {
92 MADNONE,
93 MADAUDIO,
94 MADBEACON,
95 MADULTRASOUND,
96 MADSWAUDIO,
97};
98
99#define ADM_LSM_PORT_INDEX 9
100
101#define SLIMBUS_0_TX_TEXT "SLIMBUS_0_TX"
102#define SLIMBUS_1_TX_TEXT "SLIMBUS_1_TX"
103#define SLIMBUS_2_TX_TEXT "SLIMBUS_2_TX"
104#define SLIMBUS_3_TX_TEXT "SLIMBUS_3_TX"
105#define SLIMBUS_4_TX_TEXT "SLIMBUS_4_TX"
106#define SLIMBUS_5_TX_TEXT "SLIMBUS_5_TX"
107#define TERT_MI2S_TX_TEXT "TERT_MI2S_TX"
108#define QUAT_MI2S_TX_TEXT "QUAT_MI2S_TX"
Ashish Jain01b10322018-05-12 15:37:44 +0530109#define PRI_TDM_TX_3_TEXT "PRI_TDM_TX_3"
110#define PRI_TDM_TX_2_TEXT "PRI_TDM_TX_2"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530111#define ADM_LSM_TX_TEXT "ADM_LSM_TX"
112#define INT3_MI2S_TX_TEXT "INT3_MI2S_TX"
113
114#define LSM_FUNCTION_TEXT "LSM Function"
115static const char * const lsm_port_text[] = {
116 "None",
117 SLIMBUS_0_TX_TEXT, SLIMBUS_1_TX_TEXT, SLIMBUS_2_TX_TEXT,
118 SLIMBUS_3_TX_TEXT, SLIMBUS_4_TX_TEXT, SLIMBUS_5_TX_TEXT,
119 TERT_MI2S_TX_TEXT, QUAT_MI2S_TX_TEXT, ADM_LSM_TX_TEXT,
Ashish Jain01b10322018-05-12 15:37:44 +0530120 INT3_MI2S_TX_TEXT, PRI_TDM_TX_2_TEXT, PRI_TDM_TX_3_TEXT,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530121};
122
123struct msm_pcm_route_bdai_pp_params {
124 u16 port_id; /* AFE port ID */
125 unsigned long pp_params_config;
126 bool mute_on;
127 int latency;
128};
129
130static struct msm_pcm_route_bdai_pp_params
131 msm_bedais_pp_params[MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX] = {
132 {HDMI_RX, 0, 0, 0},
133 {DISPLAY_PORT_RX, 0, 0, 0},
134};
135
136/*
137 * The be_dai_name_table is passed to HAL so that it can specify the
138 * BE ID for the BE it wants to enable based on the name. Thus there
139 * is a matching table and structure in HAL that need to be updated
140 * if any changes to these are made.
141 */
142struct msm_pcm_route_bdai_name {
143 unsigned int be_id;
144 char be_name[LPASS_BE_NAME_MAX_LENGTH];
145};
146static struct msm_pcm_route_bdai_name be_dai_name_table[MSM_BACKEND_DAI_MAX];
147
148static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
149 int fe_id);
150
151static int msm_routing_get_bit_width(unsigned int format)
152{
153 int bit_width;
154
155 switch (format) {
156 case SNDRV_PCM_FORMAT_S32_LE:
157 bit_width = 32;
158 break;
159 case SNDRV_PCM_FORMAT_S24_LE:
160 case SNDRV_PCM_FORMAT_S24_3LE:
161 bit_width = 24;
162 break;
163 case SNDRV_PCM_FORMAT_S16_LE:
164 default:
165 bit_width = 16;
166 }
167 return bit_width;
168}
169
170static bool msm_is_resample_needed(int input_sr, int output_sr)
171{
172 bool rc = false;
173
174 if (input_sr != output_sr)
175 rc = true;
176
177 pr_debug("perform resampling (%s) for copp rate (%d)afe rate (%d)",
178 (rc ? "oh yes" : "not really"),
179 input_sr, output_sr);
180
181 return rc;
182}
183
184static void msm_pcm_routing_cfg_pp(int port_id, int copp_idx, int topology,
185 int channels)
186{
187 int rc = 0;
188
189 switch (topology) {
190 case SRS_TRUMEDIA_TOPOLOGY_ID:
191 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
192 msm_dts_srs_tm_init(port_id, copp_idx);
193 break;
194 case DS2_ADM_COPP_TOPOLOGY_ID:
195 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY %d\n",
196 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
197 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
198 is_custom_stereo_on);
199 if (rc < 0)
200 pr_err("%s: DS2 topo_id 0x%x, port %d, CS %d rc %d\n",
201 __func__, topology, port_id,
202 is_custom_stereo_on, rc);
203 break;
204 case DOLBY_ADM_COPP_TOPOLOGY_ID:
205 if (is_ds2_on) {
206 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY\n", __func__);
207 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
208 is_custom_stereo_on);
209 if (rc < 0)
210 pr_err("%s:DS2 topo_id 0x%x, port %d, rc %d\n",
211 __func__, topology, port_id, rc);
212 } else {
213 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
214 rc = msm_dolby_dap_init(port_id, copp_idx, channels,
215 is_custom_stereo_on);
216 if (rc < 0)
217 pr_err("%s: DS1 topo_id 0x%x, port %d, rc %d\n",
218 __func__, topology, port_id, rc);
219 }
220 break;
221 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
222 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
223 rc = msm_qti_pp_asphere_init(port_id, copp_idx);
224 if (rc < 0)
225 pr_err("%s: topo_id 0x%x, port %d, copp %d, rc %d\n",
226 __func__, topology, port_id, copp_idx, rc);
227 break;
228 default:
229 /* custom topology specific feature param handlers */
230 break;
231 }
232}
233
234static void msm_pcm_routing_deinit_pp(int port_id, int topology)
235{
236 switch (topology) {
237 case SRS_TRUMEDIA_TOPOLOGY_ID:
238 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
239 msm_dts_srs_tm_deinit(port_id);
240 break;
241 case DS2_ADM_COPP_TOPOLOGY_ID:
242 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID %d\n",
243 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
244 msm_ds2_dap_deinit(port_id);
245 break;
246 case DOLBY_ADM_COPP_TOPOLOGY_ID:
247 if (is_ds2_on) {
248 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID\n", __func__);
249 msm_ds2_dap_deinit(port_id);
250 } else {
251 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
252 msm_dolby_dap_deinit(port_id);
253 }
254 break;
255 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
256 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
257 msm_qti_pp_asphere_deinit(port_id);
258 break;
259 default:
260 /* custom topology specific feature deinit handlers */
261 break;
262 }
263}
264
265static void msm_pcm_routng_cfg_matrix_map_pp(struct route_payload payload,
266 int path_type, int perf_mode)
267{
268 int itr = 0, rc = 0;
269
270 if ((path_type == ADM_PATH_PLAYBACK) &&
271 (perf_mode == LEGACY_PCM_MODE) &&
272 is_custom_stereo_on) {
273 for (itr = 0; itr < payload.num_copps; itr++) {
274 if ((payload.port_id[itr] != SLIMBUS_0_RX) &&
275 (payload.port_id[itr] != RT_PROXY_PORT_001_RX)) {
276 continue;
277 }
278
279 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd(
280 payload.port_id[itr],
281 payload.copp_idx[itr],
282 payload.session_id,
283 Q14_GAIN_ZERO_POINT_FIVE,
284 Q14_GAIN_ZERO_POINT_FIVE,
285 Q14_GAIN_ZERO_POINT_FIVE,
286 Q14_GAIN_ZERO_POINT_FIVE);
287 if (rc < 0)
288 pr_err("%s: err setting custom stereo\n",
289 __func__);
290 }
291 }
292}
293
294#define SLIMBUS_EXTPROC_RX AFE_PORT_INVALID
295struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = {
296 { PRIMARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_RX},
297 { PRIMARY_I2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_TX},
298 { SLIMBUS_0_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_RX},
299 { SLIMBUS_0_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_TX},
300 { HDMI_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_HDMI},
301 { INT_BT_SCO_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_RX},
302 { INT_BT_SCO_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_TX},
303 { INT_FM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_RX},
304 { INT_FM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_TX},
305 { RT_PROXY_PORT_001_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
306 LPASS_BE_AFE_PCM_RX},
307 { RT_PROXY_PORT_001_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
308 LPASS_BE_AFE_PCM_TX},
309 { AFE_PORT_ID_PRIMARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
310 LPASS_BE_AUXPCM_RX},
311 { AFE_PORT_ID_PRIMARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
312 LPASS_BE_AUXPCM_TX},
313 { VOICE_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
314 LPASS_BE_VOICE_PLAYBACK_TX},
315 { VOICE2_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
316 LPASS_BE_VOICE2_PLAYBACK_TX},
317 { VOICE_RECORD_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
318 LPASS_BE_INCALL_RECORD_RX},
319 { VOICE_RECORD_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
320 LPASS_BE_INCALL_RECORD_TX},
321 { MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_RX},
322 { MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_TX},
323 { SECONDARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SEC_I2S_RX},
324 { SLIMBUS_1_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_RX},
325 { SLIMBUS_1_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_TX},
326 { SLIMBUS_2_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_RX},
327 { SLIMBUS_2_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_TX},
328 { SLIMBUS_3_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_RX},
329 { SLIMBUS_3_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_TX},
330 { SLIMBUS_4_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_RX},
331 { SLIMBUS_4_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_TX},
332 { SLIMBUS_5_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_RX},
333 { SLIMBUS_5_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_TX},
334 { SLIMBUS_6_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_RX},
335 { SLIMBUS_6_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_TX},
336 { SLIMBUS_7_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_RX},
337 { SLIMBUS_7_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_TX},
338 { SLIMBUS_8_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_RX},
339 { SLIMBUS_8_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_TX},
340 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_RX},
341 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_TX},
342 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_1_TX},
343 { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
344 LPASS_BE_QUAT_MI2S_RX},
345 { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
346 LPASS_BE_QUAT_MI2S_TX},
347 { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
348 LPASS_BE_SEC_MI2S_RX},
349 { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
350 LPASS_BE_SEC_MI2S_TX},
351 { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
352 LPASS_BE_PRI_MI2S_RX},
353 { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
354 LPASS_BE_PRI_MI2S_TX},
355 { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
356 LPASS_BE_TERT_MI2S_RX},
357 { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
358 LPASS_BE_TERT_MI2S_TX},
359 { AUDIO_PORT_ID_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
360 LPASS_BE_AUDIO_I2S_RX},
361 { AFE_PORT_ID_SECONDARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
362 LPASS_BE_SEC_AUXPCM_RX},
363 { AFE_PORT_ID_SECONDARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
364 LPASS_BE_SEC_AUXPCM_TX},
365 { AFE_PORT_ID_SPDIF_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
366 LPASS_BE_SPDIF_RX},
367 { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, {0}, {0}, 0, 0, 0, 0, {0},
368 LPASS_BE_SEC_MI2S_RX_SD1},
369 { AFE_PORT_ID_QUINARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
370 LPASS_BE_QUIN_MI2S_RX},
371 { AFE_PORT_ID_QUINARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
372 LPASS_BE_QUIN_MI2S_TX},
373 { AFE_PORT_ID_SENARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
374 LPASS_BE_SENARY_MI2S_TX},
375 { AFE_PORT_ID_PRIMARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
376 LPASS_BE_PRI_TDM_RX_0},
377 { AFE_PORT_ID_PRIMARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
378 LPASS_BE_PRI_TDM_TX_0},
379 { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
380 LPASS_BE_PRI_TDM_RX_1},
381 { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
382 LPASS_BE_PRI_TDM_TX_1},
383 { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
384 LPASS_BE_PRI_TDM_RX_2},
385 { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
386 LPASS_BE_PRI_TDM_TX_2},
387 { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
388 LPASS_BE_PRI_TDM_RX_3},
389 { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
390 LPASS_BE_PRI_TDM_TX_3},
391 { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
392 LPASS_BE_PRI_TDM_RX_4},
393 { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
394 LPASS_BE_PRI_TDM_TX_4},
395 { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
396 LPASS_BE_PRI_TDM_RX_5},
397 { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
398 LPASS_BE_PRI_TDM_TX_5},
399 { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
400 LPASS_BE_PRI_TDM_RX_6},
401 { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
402 LPASS_BE_PRI_TDM_TX_6},
403 { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
404 LPASS_BE_PRI_TDM_RX_7},
405 { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
406 LPASS_BE_PRI_TDM_TX_7},
407 { AFE_PORT_ID_SECONDARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
408 LPASS_BE_SEC_TDM_RX_0},
409 { AFE_PORT_ID_SECONDARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
410 LPASS_BE_SEC_TDM_TX_0},
411 { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
412 LPASS_BE_SEC_TDM_RX_1},
413 { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
414 LPASS_BE_SEC_TDM_TX_1},
415 { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
416 LPASS_BE_SEC_TDM_RX_2},
417 { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
418 LPASS_BE_SEC_TDM_TX_2},
419 { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
420 LPASS_BE_SEC_TDM_RX_3},
421 { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
422 LPASS_BE_SEC_TDM_TX_3},
423 { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
424 LPASS_BE_SEC_TDM_RX_4},
425 { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
426 LPASS_BE_SEC_TDM_TX_4},
427 { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
428 LPASS_BE_SEC_TDM_RX_5},
429 { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
430 LPASS_BE_SEC_TDM_TX_5},
431 { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
432 LPASS_BE_SEC_TDM_RX_6},
433 { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
434 LPASS_BE_SEC_TDM_TX_6},
435 { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
436 LPASS_BE_SEC_TDM_RX_7},
437 { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
438 LPASS_BE_SEC_TDM_TX_7},
439 { AFE_PORT_ID_TERTIARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
440 LPASS_BE_TERT_TDM_RX_0},
441 { AFE_PORT_ID_TERTIARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
442 LPASS_BE_TERT_TDM_TX_0},
443 { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
444 LPASS_BE_TERT_TDM_RX_1},
445 { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
446 LPASS_BE_TERT_TDM_TX_1},
447 { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
448 LPASS_BE_TERT_TDM_RX_2},
449 { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
450 LPASS_BE_TERT_TDM_TX_2},
451 { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
452 LPASS_BE_TERT_TDM_RX_3},
453 { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
454 LPASS_BE_TERT_TDM_TX_3},
455 { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
456 LPASS_BE_TERT_TDM_RX_4},
457 { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
458 LPASS_BE_TERT_TDM_TX_4},
459 { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
460 LPASS_BE_TERT_TDM_RX_5},
461 { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
462 LPASS_BE_TERT_TDM_TX_5},
463 { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
464 LPASS_BE_TERT_TDM_RX_6},
465 { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
466 LPASS_BE_TERT_TDM_TX_6},
467 { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
468 LPASS_BE_TERT_TDM_RX_7},
469 { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
470 LPASS_BE_TERT_TDM_TX_7},
471 { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
472 LPASS_BE_QUAT_TDM_RX_0},
473 { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
474 LPASS_BE_QUAT_TDM_TX_0},
475 { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
476 LPASS_BE_QUAT_TDM_RX_1},
477 { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
478 LPASS_BE_QUAT_TDM_TX_1},
479 { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
480 LPASS_BE_QUAT_TDM_RX_2},
481 { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
482 LPASS_BE_QUAT_TDM_TX_2},
483 { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
484 LPASS_BE_QUAT_TDM_RX_3},
485 { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
486 LPASS_BE_QUAT_TDM_TX_3},
487 { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
488 LPASS_BE_QUAT_TDM_RX_4},
489 { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
490 LPASS_BE_QUAT_TDM_TX_4},
491 { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
492 LPASS_BE_QUAT_TDM_RX_5},
493 { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
494 LPASS_BE_QUAT_TDM_TX_5},
495 { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
496 LPASS_BE_QUAT_TDM_RX_6},
497 { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
498 LPASS_BE_QUAT_TDM_TX_6},
499 { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
500 LPASS_BE_QUAT_TDM_RX_7},
501 { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
502 LPASS_BE_QUAT_TDM_TX_7},
Rohit Kumara5077932017-09-10 22:05:05 +0530503 { AFE_PORT_ID_QUINARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
504 LPASS_BE_QUIN_TDM_RX_0},
505 { AFE_PORT_ID_QUINARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
506 LPASS_BE_QUIN_TDM_TX_0},
507 { AFE_PORT_ID_QUINARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
508 LPASS_BE_QUIN_TDM_RX_1},
509 { AFE_PORT_ID_QUINARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
510 LPASS_BE_QUIN_TDM_TX_1},
511 { AFE_PORT_ID_QUINARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
512 LPASS_BE_QUIN_TDM_RX_2},
513 { AFE_PORT_ID_QUINARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
514 LPASS_BE_QUIN_TDM_TX_2},
515 { AFE_PORT_ID_QUINARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
516 LPASS_BE_QUIN_TDM_RX_3},
517 { AFE_PORT_ID_QUINARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
518 LPASS_BE_QUIN_TDM_TX_3},
519 { AFE_PORT_ID_QUINARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
520 LPASS_BE_QUIN_TDM_RX_4},
521 { AFE_PORT_ID_QUINARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
522 LPASS_BE_QUIN_TDM_TX_4},
523 { AFE_PORT_ID_QUINARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
524 LPASS_BE_QUIN_TDM_RX_5},
525 { AFE_PORT_ID_QUINARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
526 LPASS_BE_QUIN_TDM_TX_5},
527 { AFE_PORT_ID_QUINARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
528 LPASS_BE_QUIN_TDM_RX_6},
529 { AFE_PORT_ID_QUINARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
530 LPASS_BE_QUIN_TDM_TX_6},
531 { AFE_PORT_ID_QUINARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
532 LPASS_BE_QUIN_TDM_RX_7},
533 { AFE_PORT_ID_QUINARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
534 LPASS_BE_QUIN_TDM_TX_7},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530535 { INT_BT_A2DP_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
536 LPASS_BE_INT_BT_A2DP_RX},
537 { AFE_PORT_ID_USB_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
538 LPASS_BE_USB_AUDIO_RX},
539 { AFE_PORT_ID_USB_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
540 LPASS_BE_USB_AUDIO_TX},
541 { DISPLAY_PORT_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
542 LPASS_BE_DISPLAY_PORT},
543 { AFE_PORT_ID_TERTIARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
544 LPASS_BE_TERT_AUXPCM_RX},
545 { AFE_PORT_ID_TERTIARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
546 LPASS_BE_TERT_AUXPCM_TX},
547 { AFE_PORT_ID_QUATERNARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
548 LPASS_BE_QUAT_AUXPCM_RX},
549 { AFE_PORT_ID_QUATERNARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
550 LPASS_BE_QUAT_AUXPCM_TX},
Rohit Kumara5077932017-09-10 22:05:05 +0530551 { AFE_PORT_ID_QUINARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
552 LPASS_BE_QUIN_AUXPCM_RX},
553 { AFE_PORT_ID_QUINARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
554 LPASS_BE_QUIN_AUXPCM_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530555 { AFE_PORT_ID_INT0_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
556 LPASS_BE_INT0_MI2S_RX},
557 { AFE_PORT_ID_INT0_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
558 LPASS_BE_INT0_MI2S_TX},
559 { AFE_PORT_ID_INT1_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
560 LPASS_BE_INT1_MI2S_RX},
561 { AFE_PORT_ID_INT1_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
562 LPASS_BE_INT1_MI2S_TX},
563 { AFE_PORT_ID_INT2_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
564 LPASS_BE_INT2_MI2S_RX},
565 { AFE_PORT_ID_INT2_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
566 LPASS_BE_INT2_MI2S_TX},
567 { AFE_PORT_ID_INT3_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
568 LPASS_BE_INT3_MI2S_RX},
569 { AFE_PORT_ID_INT3_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
570 LPASS_BE_INT3_MI2S_TX},
571 { AFE_PORT_ID_INT4_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
572 LPASS_BE_INT4_MI2S_RX},
573 { AFE_PORT_ID_INT4_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
574 LPASS_BE_INT4_MI2S_TX},
575 { AFE_PORT_ID_INT5_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
576 LPASS_BE_INT5_MI2S_RX},
577 { AFE_PORT_ID_INT5_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
578 LPASS_BE_INT5_MI2S_TX},
579 { AFE_PORT_ID_INT6_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
580 LPASS_BE_INT6_MI2S_RX},
581 { AFE_PORT_ID_INT6_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
582 LPASS_BE_INT6_MI2S_TX},
Raja Mallik425e1d32018-05-20 19:21:10 +0530583 { AFE_LOOPBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_AFE_LOOPBACK_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530584};
585
586/* Track ASM playback & capture sessions of DAI
587 * Track LSM listen sessions
588 */
589static struct msm_pcm_routing_fdai_data
590 fe_dai_map[MSM_FRONTEND_DAI_MAX][2] = {
591 /* MULTIMEDIA1 */
592 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
593 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
594 /* MULTIMEDIA2 */
595 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
596 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
597 /* MULTIMEDIA3 */
598 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
599 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
600 /* MULTIMEDIA4 */
601 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
602 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
603 /* MULTIMEDIA5 */
604 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
605 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
606 /* MULTIMEDIA6 */
607 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
608 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
609 /* MULTIMEDIA7*/
610 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
611 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
612 /* MULTIMEDIA8 */
613 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
614 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
615 /* MULTIMEDIA9 */
616 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
617 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
618 /* MULTIMEDIA10 */
619 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
620 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
621 /* MULTIMEDIA11 */
622 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
623 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
624 /* MULTIMEDIA12 */
625 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
626 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
627 /* MULTIMEDIA13 */
628 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
629 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
630 /* MULTIMEDIA14 */
631 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
632 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
633 /* MULTIMEDIA15 */
634 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
635 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
636 /* MULTIMEDIA16 */
637 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
638 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
639 /* MULTIMEDIA17 */
640 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
641 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
642 /* MULTIMEDIA18 */
643 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
644 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
645 /* MULTIMEDIA19 */
646 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
647 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
648 /* MULTIMEDIA20 */
649 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
650 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +0530651 /* MULTIMEDIA28 */
652 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
653 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
654 /* MULTIMEDIA29 */
655 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
656 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530657 /* VOIP */
658 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
659 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
660 /* AFE_RX */
661 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
662 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
663 /* AFE_TX */
664 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
665 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
666 /* VOICE_STUB */
667 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
668 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530669 /* DTMF_RX */
670 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
671 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530672 /* QCHAT */
673 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
674 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
675 /* VOLTE_STUB */
676 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
677 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
678 /* LSM1 */
679 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
680 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
681 /* LSM2 */
682 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
683 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
684 /* LSM3 */
685 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
686 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
687 /* LSM4 */
688 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
689 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
690 /* LSM5 */
691 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
692 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
693 /* LSM6 */
694 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
695 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
696 /* LSM7 */
697 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
698 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
699 /* LSM8 */
700 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
701 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
702 /* VOICE2_STUB */
703 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
704 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530705 /* VOICEMMODE1 */
706 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
707 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
708 /* VOICEMMODE2 */
709 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
710 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
711};
712
713static unsigned long session_copp_map[MSM_FRONTEND_DAI_MAX][2]
714 [MSM_BACKEND_DAI_MAX];
715static struct msm_pcm_routing_app_type_data app_type_cfg[MAX_APP_TYPES];
716static struct msm_pcm_routing_app_type_data lsm_app_type_cfg[MAX_APP_TYPES];
717static struct msm_pcm_stream_app_type_cfg
718 fe_dai_app_type_cfg[MSM_FRONTEND_DAI_MAX][2][MSM_BACKEND_DAI_MAX];
719
720static int last_be_id_configured[MSM_FRONTEND_DAI_MAX][MAX_SESSION_TYPES];
721
722/* The caller of this should aqcuire routing lock */
723void msm_pcm_routing_get_bedai_info(int be_idx,
724 struct msm_pcm_routing_bdai_data *be_dai)
725{
726 if (be_idx >= 0 && be_idx < MSM_BACKEND_DAI_MAX)
727 memcpy(be_dai, &msm_bedais[be_idx],
728 sizeof(struct msm_pcm_routing_bdai_data));
729}
730
731/* The caller of this should aqcuire routing lock */
732void msm_pcm_routing_get_fedai_info(int fe_idx, int sess_type,
733 struct msm_pcm_routing_fdai_data *fe_dai)
734{
735 if ((sess_type == SESSION_TYPE_TX) || (sess_type == SESSION_TYPE_RX))
736 memcpy(fe_dai, &fe_dai_map[fe_idx][sess_type],
737 sizeof(struct msm_pcm_routing_fdai_data));
738}
739
740void msm_pcm_routing_acquire_lock(void)
741{
742 mutex_lock(&routing_lock);
743}
744
745void msm_pcm_routing_release_lock(void)
746{
747 mutex_unlock(&routing_lock);
748}
749
750static int msm_pcm_routing_get_app_type_idx(int app_type)
751{
752 int idx;
753
754 pr_debug("%s: app_type: %d\n", __func__, app_type);
755 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
756 if (app_type_cfg[idx].app_type == app_type)
757 return idx;
758 }
759 pr_info("%s: App type not available, fallback to default\n", __func__);
760 return 0;
761}
762
763static int msm_pcm_routing_get_lsm_app_type_idx(int app_type)
764{
765 int idx;
766
767 pr_debug("%s: app_type: %d\n", __func__, app_type);
768 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
769 if (lsm_app_type_cfg[idx].app_type == app_type)
770 return idx;
771 }
772 pr_debug("%s: App type not available, fallback to default\n", __func__);
773 return 0;
774}
775
776static bool is_mm_lsm_fe_id(int fe_id)
777{
778 bool rc = true;
779
780 if (fe_id > MSM_FRONTEND_DAI_MM_MAX_ID &&
781 ((fe_id < MSM_FRONTEND_DAI_LSM1) ||
782 (fe_id > MSM_FRONTEND_DAI_LSM8))) {
783 rc = false;
784 }
785 return rc;
786}
787
788int msm_pcm_routing_reg_stream_app_type_cfg(
789 int fedai_id, int session_type, int be_id,
790 struct msm_pcm_stream_app_type_cfg *cfg_data)
791{
792 int ret = 0;
793
794 if (cfg_data == NULL) {
795 pr_err("%s: Received NULL pointer for cfg_data\n", __func__);
796 ret = -EINVAL;
797 goto done;
798 }
799
800 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
801 __func__, fedai_id, session_type, be_id,
802 cfg_data->app_type, cfg_data->acdb_dev_id,
803 cfg_data->sample_rate);
804
805 if (!is_mm_lsm_fe_id(fedai_id)) {
806 pr_err("%s: Invalid machine driver ID %d\n",
807 __func__, fedai_id);
808 ret = -EINVAL;
809 goto done;
810 }
811 if (session_type != SESSION_TYPE_RX &&
812 session_type != SESSION_TYPE_TX) {
813 pr_err("%s: Invalid session type %d\n",
814 __func__, session_type);
815 ret = -EINVAL;
816 goto done;
817 }
818 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
819 pr_err("%s: Received out of bounds be_id %d\n",
820 __func__, be_id);
821 ret = -EINVAL;
822 goto done;
823 }
824
825 fe_dai_app_type_cfg[fedai_id][session_type][be_id] = *cfg_data;
826
827 /*
828 * Store the BE ID of the configuration information set as the latest so
829 * the get mixer control knows what to return.
830 */
831 last_be_id_configured[fedai_id][session_type] = be_id;
832
833done:
834 return ret;
835}
836EXPORT_SYMBOL(msm_pcm_routing_reg_stream_app_type_cfg);
837
838/**
839 * msm_pcm_routing_get_stream_app_type_cfg
840 *
841 * Receives fedai_id, session_type, be_id, and populates app_type,
842 * acdb_dev_id, & sample rate. Returns 0 on success. On failure returns
843 * -EINVAL and does not alter passed values.
844 *
845 * fedai_id - Passed value, front end ID for which app type config is wanted
846 * session_type - Passed value, session type for which app type config
847 * is wanted
848 * be_id - Returned value, back end device id the app type config data is for
849 * cfg_data - Returned value, configuration data used by app type config
850 */
851int msm_pcm_routing_get_stream_app_type_cfg(
852 int fedai_id, int session_type, int *bedai_id,
853 struct msm_pcm_stream_app_type_cfg *cfg_data)
854{
855 int be_id;
856 int ret = 0;
857
858 if (bedai_id == NULL) {
859 pr_err("%s: Received NULL pointer for backend ID\n", __func__);
860 ret = -EINVAL;
861 goto done;
862 } else if (cfg_data == NULL) {
863 pr_err("%s: NULL pointer sent for cfg_data\n", __func__);
864 ret = -EINVAL;
865 goto done;
866 } else if (!is_mm_lsm_fe_id(fedai_id)) {
867 pr_err("%s: Invalid FE ID %d\n", __func__, fedai_id);
868 ret = -EINVAL;
869 goto done;
870 } else if (session_type != SESSION_TYPE_RX &&
871 session_type != SESSION_TYPE_TX) {
872 pr_err("%s: Invalid session type %d\n", __func__, session_type);
873 ret = -EINVAL;
874 goto done;
875 }
876
877 be_id = last_be_id_configured[fedai_id][session_type];
878 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
879 pr_err("%s: Invalid BE ID %d\n", __func__, be_id);
880 ret = -EINVAL;
881 goto done;
882 }
883
884 *bedai_id = be_id;
885 *cfg_data = fe_dai_app_type_cfg[fedai_id][session_type][be_id];
886 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
887 __func__, fedai_id, session_type, *bedai_id,
888 cfg_data->app_type, cfg_data->acdb_dev_id,
889 cfg_data->sample_rate);
890done:
891 return ret;
892}
893EXPORT_SYMBOL(msm_pcm_routing_get_stream_app_type_cfg);
894
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530895static struct cal_block_data *msm_routing_find_topology_by_path(int path,
896 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530897{
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530898 struct list_head *ptr, *next;
899 struct cal_block_data *cal_block = NULL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530900 pr_debug("%s\n", __func__);
901
902 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530903 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530904
905 cal_block = list_entry(ptr,
906 struct cal_block_data, list);
907
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530908 if (((struct audio_cal_info_adm_top *)cal_block
909 ->cal_info)->path == path) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530910 return cal_block;
911 }
912 }
913 pr_debug("%s: Can't find topology for path %d\n", __func__, path);
914 return NULL;
915}
916
917static struct cal_block_data *msm_routing_find_topology(int path,
918 int app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530919 int acdb_id,
920 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530921{
922 struct list_head *ptr, *next;
923 struct cal_block_data *cal_block = NULL;
924 struct audio_cal_info_adm_top *cal_info;
925
926 pr_debug("%s\n", __func__);
927
928 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530929 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530930
931 cal_block = list_entry(ptr,
932 struct cal_block_data, list);
933
934 cal_info = (struct audio_cal_info_adm_top *)
935 cal_block->cal_info;
936 if ((cal_info->path == path) &&
937 (cal_info->app_type == app_type) &&
938 (cal_info->acdb_id == acdb_id)) {
939 return cal_block;
940 }
941 }
942 pr_debug("%s: Can't find topology for path %d, app %d, acdb_id %d defaulting to search by path\n",
943 __func__, path, app_type, acdb_id);
Aditya Bavanarie9d8e932018-03-12 12:25:20 +0530944 return msm_routing_find_topology_by_path(path, cal_index);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530945}
946
947static int msm_routing_get_adm_topology(int fedai_id, int session_type,
948 int be_id)
949{
950 int topology = NULL_COPP_TOPOLOGY;
951 struct cal_block_data *cal_block = NULL;
952 int app_type = 0, acdb_dev_id = 0;
953
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530954 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
955 __func__, fedai_id, session_type, be_id);
956
957 if (cal_data == NULL)
958 goto done;
959
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530960 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
961 acdb_dev_id =
962 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
963
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530964 mutex_lock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530965 cal_block = msm_routing_find_topology(session_type, app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530966 acdb_dev_id,
967 ADM_TOPOLOGY_CAL_TYPE_IDX);
968 if (cal_block != NULL)
969 topology = ((struct audio_cal_info_adm_top *)
970 cal_block->cal_info)->topology;
971 mutex_unlock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530972
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530973 if (cal_block == NULL) {
974 pr_debug("%s: Check for LSM topology\n", __func__);
975 mutex_lock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
976 cal_block = msm_routing_find_topology(session_type, app_type,
977 acdb_dev_id,
978 ADM_LSM_TOPOLOGY_CAL_TYPE_IDX);
979 if (cal_block != NULL)
980 topology = ((struct audio_cal_info_adm_top *)
981 cal_block->cal_info)->topology;
982 mutex_unlock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
983 }
984
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530985done:
986 pr_debug("%s: Using topology %d\n", __func__, topology);
987 return topology;
988}
989
990static uint8_t is_be_dai_extproc(int be_dai)
991{
992 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
993 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
994 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
995 return 1;
996 else
997 return 0;
998}
999
1000static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
1001 int path_type, int perf_mode,
1002 uint32_t passthr_mode)
1003{
1004 int i, port_type, j, num_copps = 0;
1005 struct route_payload payload;
1006
1007 port_type = ((path_type == ADM_PATH_PLAYBACK ||
1008 path_type == ADM_PATH_COMPRESSED_RX) ?
1009 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
1010
1011 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1012 if (!is_be_dai_extproc(i) &&
1013 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1014 (msm_bedais[i].active) &&
1015 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1016 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1017 unsigned long copp =
1018 session_copp_map[fedai_id][sess_type][i];
1019 if (test_bit(j, &copp)) {
1020 payload.port_id[num_copps] =
1021 msm_bedais[i].port_id;
1022 payload.copp_idx[num_copps] = j;
1023 payload.app_type[num_copps] =
1024 fe_dai_app_type_cfg
1025 [fedai_id][sess_type][i]
1026 .app_type;
1027 payload.acdb_dev_id[num_copps] =
1028 fe_dai_app_type_cfg
1029 [fedai_id][sess_type][i]
1030 .acdb_dev_id;
1031 payload.sample_rate[num_copps] =
1032 fe_dai_app_type_cfg
1033 [fedai_id][sess_type][i]
1034 .sample_rate;
1035 num_copps++;
1036 }
1037 }
1038 }
1039 }
1040
1041 if (num_copps) {
1042 payload.num_copps = num_copps;
1043 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1044 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1045 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1046 }
1047}
1048
1049void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1050 int stream_type)
1051{
1052 int i, session_type, path_type, port_type;
1053 u32 mode = 0;
1054
1055 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1056 /* bad ID assigned in machine driver */
1057 pr_err("%s: bad MM ID\n", __func__);
1058 return;
1059 }
1060
1061 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1062 session_type = SESSION_TYPE_RX;
1063 path_type = ADM_PATH_PLAYBACK;
1064 port_type = MSM_AFE_PORT_TYPE_RX;
1065 } else {
1066 session_type = SESSION_TYPE_TX;
1067 path_type = ADM_PATH_LIVE_REC;
1068 port_type = MSM_AFE_PORT_TYPE_TX;
1069 }
1070
1071 mutex_lock(&routing_lock);
1072
1073 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1074 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1075 if (!is_be_dai_extproc(i) &&
1076 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1077 (msm_bedais[i].active) &&
1078 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1079 mode = afe_get_port_type(msm_bedais[i].port_id);
1080 adm_connect_afe_port(mode, dspst_id,
1081 msm_bedais[i].port_id);
1082 break;
1083 }
1084 }
1085 mutex_unlock(&routing_lock);
1086}
1087
1088static bool route_check_fe_id_adm_support(int fe_id)
1089{
1090 bool rc = true;
1091
1092 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1093 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1094 /* fe id is listen while port is set to afe */
1095 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1096 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1097 __func__, fe_id, lsm_port_index);
1098 rc = false;
1099 }
1100 }
1101
1102 return rc;
1103}
1104
1105int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1106 int dspst_id, int stream_type,
1107 uint32_t passthr_mode)
1108{
1109 int i, j, session_type, path_type, port_type, topology;
1110 int num_copps = 0;
1111 struct route_payload payload;
1112 u32 channels, sample_rate;
1113 u16 bit_width = 16;
1114 bool is_lsm;
1115
1116 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1117 __func__, fe_id, perf_mode, dspst_id,
1118 stream_type, passthr_mode);
1119 if (!is_mm_lsm_fe_id(fe_id)) {
1120 /* bad ID assigned in machine driver */
1121 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1122 return -EINVAL;
1123 }
1124
1125 if (!route_check_fe_id_adm_support(fe_id)) {
1126 /* ignore adm open if not supported for fe_id */
1127 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1128 return 0;
1129 }
1130
1131 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1132 session_type = SESSION_TYPE_RX;
1133 if (passthr_mode != LEGACY_PCM)
1134 path_type = ADM_PATH_COMPRESSED_RX;
1135 else
1136 path_type = ADM_PATH_PLAYBACK;
1137 port_type = MSM_AFE_PORT_TYPE_RX;
1138 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1139 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301140 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301141 path_type = ADM_PATH_COMPRESSED_TX;
1142 else
1143 path_type = ADM_PATH_LIVE_REC;
1144 port_type = MSM_AFE_PORT_TYPE_TX;
1145 } else {
1146 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1147 return -EINVAL;
1148 }
1149
1150 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1151 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1152 mutex_lock(&routing_lock);
1153
1154 payload.num_copps = 0; /* only RX needs to use payload */
1155 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1156 /* re-enable EQ if active */
1157 msm_qti_pp_send_eq_values(fe_id);
1158 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1159 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1160 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1161
1162 if (!is_be_dai_extproc(i) &&
1163 (afe_get_port_type(msm_bedais[i].port_id) ==
1164 port_type) &&
1165 (msm_bedais[i].active) &&
1166 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1167 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1168
1169 /*
1170 * check if ADM needs to be configured with different
1171 * channel mapping than backend
1172 */
1173 if (!msm_bedais[i].adm_override_ch)
1174 channels = msm_bedais[i].channel;
1175 else
1176 channels = msm_bedais[i].adm_override_ch;
1177
1178 bit_width = msm_routing_get_bit_width(
1179 msm_bedais[i].format);
1180 app_type =
1181 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1182 if (app_type && is_lsm) {
1183 app_type_idx =
1184 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1185 sample_rate =
1186 fe_dai_app_type_cfg[fe_id][session_type][i]
1187 .sample_rate;
1188 bit_width =
1189 lsm_app_type_cfg[app_type_idx].bit_width;
1190 } else if (app_type) {
1191 app_type_idx =
1192 msm_pcm_routing_get_app_type_idx(
1193 app_type);
1194 sample_rate =
1195 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1196 bit_width =
1197 app_type_cfg[app_type_idx].bit_width;
1198 } else {
1199 sample_rate = msm_bedais[i].sample_rate;
1200 }
1201 acdb_dev_id =
1202 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1203 topology = msm_routing_get_adm_topology(fe_id,
1204 session_type,
1205 i);
1206 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1207 || (passthr_mode ==
1208 COMPRESSED_PASSTHROUGH_GEN))
1209 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1210 pr_debug("%s: Before adm open topology %d\n", __func__,
1211 topology);
1212
1213 copp_idx =
1214 adm_open(msm_bedais[i].port_id,
1215 path_type, sample_rate, channels,
1216 topology, perf_mode, bit_width,
1217 app_type, acdb_dev_id);
1218 if ((copp_idx < 0) ||
1219 (copp_idx >= MAX_COPPS_PER_PORT)) {
1220 pr_err("%s:adm open failed coppid:%d\n",
1221 __func__, copp_idx);
1222 mutex_unlock(&routing_lock);
1223 return -EINVAL;
1224 }
1225 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1226 __func__, fe_id, session_type, i);
1227 set_bit(copp_idx,
1228 &session_copp_map[fe_id][session_type][i]);
1229
1230 if (msm_is_resample_needed(
1231 sample_rate,
1232 msm_bedais[i].sample_rate))
1233 adm_copp_mfc_cfg(
1234 msm_bedais[i].port_id, copp_idx,
1235 msm_bedais[i].sample_rate);
1236
1237 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1238 unsigned long copp =
1239 session_copp_map[fe_id][session_type][i];
1240 if (test_bit(j, &copp)) {
1241 payload.port_id[num_copps] =
1242 msm_bedais[i].port_id;
1243 payload.copp_idx[num_copps] = j;
1244 payload.app_type[num_copps] =
1245 fe_dai_app_type_cfg
1246 [fe_id][session_type][i]
1247 .app_type;
1248 payload.acdb_dev_id[num_copps] =
1249 fe_dai_app_type_cfg
1250 [fe_id][session_type][i]
1251 .acdb_dev_id;
1252 payload.sample_rate[num_copps] =
1253 fe_dai_app_type_cfg
1254 [fe_id][session_type][i]
1255 .sample_rate;
1256 num_copps++;
1257 }
1258 }
1259 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1260 && passthr_mode !=
1261 COMPRESSED_PASSTHROUGH_GEN) {
1262 msm_routing_send_device_pp_params(
1263 msm_bedais[i].port_id,
1264 copp_idx, fe_id);
1265 }
1266 }
1267 }
1268 if (num_copps) {
1269 payload.num_copps = num_copps;
1270 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1271 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1272 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1273 }
1274 mutex_unlock(&routing_lock);
1275 return 0;
1276}
1277
1278static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1279{
1280 u32 session_id;
1281
1282 switch (val) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301283 case MSM_FRONTEND_DAI_QCHAT:
1284 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1285 break;
1286 case MSM_FRONTEND_DAI_VOIP:
1287 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1288 break;
1289 case MSM_FRONTEND_DAI_VOICEMMODE1:
1290 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1291 break;
1292 case MSM_FRONTEND_DAI_VOICEMMODE2:
1293 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1294 break;
1295 default:
1296 session_id = 0;
1297 }
1298
1299 pr_debug("%s session_id 0x%x", __func__, session_id);
1300 return session_id;
1301}
1302
1303static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1304 int dspst_id, int stream_type)
1305{
1306 int copp_idx = 0;
1307 int sess_type = 0;
1308 int i = 0, j = 0, be_id;
1309 int ret = 0;
1310
1311 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1312 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1313 return 0;
1314 }
1315
1316 if (!(channel_mixer[fe_id].enable)) {
1317 pr_debug("%s: channel mixer not enabled for FE %d\n",
1318 __func__, fe_id);
1319 return 0;
1320 }
1321
1322 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1323 sess_type = SESSION_TYPE_RX;
1324 else
1325 sess_type = SESSION_TYPE_TX;
1326
1327 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1328 ++i) {
1329 be_id = channel_input[fe_id][i] - 1;
1330 channel_mixer[fe_id].input_channels[i] =
1331 msm_bedais[be_id].channel;
1332
1333 if ((msm_bedais[be_id].active) &&
1334 test_bit(fe_id,
1335 &msm_bedais[be_id].fe_sessions[0])) {
1336 unsigned long copp =
1337 session_copp_map[fe_id][sess_type][be_id];
1338 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1339 if (test_bit(j, &copp)) {
1340 copp_idx = j;
1341 break;
1342 }
1343 }
1344
1345 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1346 __func__,
1347 fe_id, be_id, msm_bedais[be_id].channel,
1348 copp_idx);
1349 ret = adm_programable_channel_mixer(
1350 msm_bedais[be_id].port_id,
1351 copp_idx, dspst_id, sess_type,
1352 channel_mixer + fe_id, i);
1353 }
1354 }
1355
1356 return ret;
1357}
1358
1359int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1360 int dspst_id, int stream_type)
1361{
1362 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1363 struct route_payload payload;
1364 u32 channels, sample_rate;
1365 uint16_t bits_per_sample = 16;
1366 uint32_t passthr_mode = LEGACY_PCM;
1367 int ret = 0;
1368
1369 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1370 /* bad ID assigned in machine driver */
1371 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1372 return -EINVAL;
1373 }
1374
1375 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1376 session_type = SESSION_TYPE_RX;
1377 path_type = ADM_PATH_PLAYBACK;
1378 port_type = MSM_AFE_PORT_TYPE_RX;
1379 } else {
1380 session_type = SESSION_TYPE_TX;
1381 path_type = ADM_PATH_LIVE_REC;
1382 port_type = MSM_AFE_PORT_TYPE_TX;
1383 }
1384
1385 mutex_lock(&routing_lock);
1386
1387 payload.num_copps = 0; /* only RX needs to use payload */
1388 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1389 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1390
1391 /* re-enable EQ if active */
1392 msm_qti_pp_send_eq_values(fedai_id);
1393 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1394 if (!is_be_dai_extproc(i) &&
1395 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1396 (msm_bedais[i].active) &&
1397 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1398 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1399 /*
1400 * check if ADM needs to be configured with different
1401 * channel mapping than backend
1402 */
1403 if (!msm_bedais[i].adm_override_ch)
1404 channels = msm_bedais[i].channel;
1405 else
1406 channels = msm_bedais[i].adm_override_ch;
1407 msm_bedais[i].passthr_mode[fedai_id] =
1408 LEGACY_PCM;
1409
1410 bits_per_sample = msm_routing_get_bit_width(
1411 msm_bedais[i].format);
1412
1413 app_type =
1414 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1415 if (app_type) {
1416 app_type_idx =
1417 msm_pcm_routing_get_app_type_idx(app_type);
1418 sample_rate =
1419 fe_dai_app_type_cfg[fedai_id][session_type][i]
1420 .sample_rate;
1421 bits_per_sample =
1422 app_type_cfg[app_type_idx].bit_width;
1423 } else
1424 sample_rate = msm_bedais[i].sample_rate;
1425
1426 acdb_dev_id =
1427 fe_dai_app_type_cfg[fedai_id][session_type][i]
1428 .acdb_dev_id;
1429 topology = msm_routing_get_adm_topology(fedai_id,
1430 session_type,
1431 i);
1432 copp_idx = adm_open(msm_bedais[i].port_id, path_type,
1433 sample_rate, channels, topology,
1434 perf_mode, bits_per_sample,
1435 app_type, acdb_dev_id);
1436 if ((copp_idx < 0) ||
1437 (copp_idx >= MAX_COPPS_PER_PORT)) {
1438 pr_err("%s: adm open failed copp_idx:%d\n",
1439 __func__, copp_idx);
1440 mutex_unlock(&routing_lock);
1441 return -EINVAL;
1442 }
1443 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1444 __func__, fedai_id, session_type, i);
1445 set_bit(copp_idx,
1446 &session_copp_map[fedai_id][session_type][i]);
1447
1448 if (msm_is_resample_needed(
1449 sample_rate,
1450 msm_bedais[i].sample_rate))
1451 adm_copp_mfc_cfg(
1452 msm_bedais[i].port_id, copp_idx,
1453 msm_bedais[i].sample_rate);
1454
1455 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1456 unsigned long copp =
1457 session_copp_map[fedai_id][session_type][i];
1458 if (test_bit(j, &copp)) {
1459 payload.port_id[num_copps] =
1460 msm_bedais[i].port_id;
1461 payload.copp_idx[num_copps] = j;
1462 payload.app_type[num_copps] =
1463 fe_dai_app_type_cfg
1464 [fedai_id][session_type]
1465 [i].app_type;
1466 payload.acdb_dev_id[num_copps] =
1467 fe_dai_app_type_cfg
1468 [fedai_id][session_type]
1469 [i].acdb_dev_id;
1470 payload.sample_rate[num_copps] =
1471 fe_dai_app_type_cfg
1472 [fedai_id][session_type]
1473 [i].sample_rate;
1474 num_copps++;
1475 }
1476 }
1477 if ((perf_mode == LEGACY_PCM_MODE) &&
1478 (msm_bedais[i].passthr_mode[fedai_id] ==
1479 LEGACY_PCM))
1480 msm_pcm_routing_cfg_pp(msm_bedais[i].port_id,
1481 copp_idx, topology,
1482 channels);
1483 }
1484 }
1485 if (num_copps) {
1486 payload.num_copps = num_copps;
1487 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1488 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1489 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1490 }
1491
1492 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1493 dspst_id, stream_type);
1494 mutex_unlock(&routing_lock);
1495 return ret;
1496}
1497
1498int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1499 int dspst_id, int stream_type,
1500 struct msm_pcm_routing_evt event_info)
1501{
1502 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1503 stream_type)) {
1504 pr_err("%s: failed to reg phy stream\n", __func__);
1505 return -EINVAL;
1506 }
1507
1508 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1509 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1510 else
1511 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1512 return 0;
1513}
1514
1515void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1516{
1517 int i, port_type, session_type, path_type, topology;
1518 struct msm_pcm_routing_fdai_data *fdai;
1519
1520 if (!is_mm_lsm_fe_id(fedai_id)) {
1521 /* bad ID assigned in machine driver */
1522 pr_err("%s: bad MM ID\n", __func__);
1523 return;
1524 }
1525
1526 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1527 port_type = MSM_AFE_PORT_TYPE_RX;
1528 session_type = SESSION_TYPE_RX;
1529 path_type = ADM_PATH_PLAYBACK;
1530 } else {
1531 port_type = MSM_AFE_PORT_TYPE_TX;
1532 session_type = SESSION_TYPE_TX;
1533 path_type = ADM_PATH_LIVE_REC;
1534 }
1535
1536 mutex_lock(&routing_lock);
1537 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1538 if (!is_be_dai_extproc(i) &&
1539 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1540 (msm_bedais[i].active) &&
1541 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1542 int idx;
1543 unsigned long copp =
1544 session_copp_map[fedai_id][session_type][i];
1545 fdai = &fe_dai_map[fedai_id][session_type];
1546
1547 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1548 if (test_bit(idx, &copp))
1549 break;
1550
1551 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1552 pr_debug("%s: copp idx is invalid, exiting\n",
1553 __func__);
1554 continue;
1555 }
1556 topology = adm_get_topology_for_port_copp_idx(
1557 msm_bedais[i].port_id, idx);
1558 adm_close(msm_bedais[i].port_id, fdai->perf_mode, idx);
1559 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1560 __func__, copp, fedai_id, session_type, i);
1561 clear_bit(idx,
1562 &session_copp_map[fedai_id][session_type][i]);
1563 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1564 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1565 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1566 (msm_bedais[i].passthr_mode[fedai_id] ==
1567 LEGACY_PCM))
1568 msm_pcm_routing_deinit_pp(msm_bedais[i].port_id,
1569 topology);
1570 }
1571 }
1572
1573 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1574 fe_dai_map[fedai_id][session_type].be_srate = 0;
1575 mutex_unlock(&routing_lock);
1576}
1577
1578/* Check if FE/BE route is set */
1579static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1580{
1581 bool rc = false;
1582
1583 if (!is_mm_lsm_fe_id(fe_id)) {
1584 /* recheck FE ID in the mixer control defined in this file */
1585 pr_err("%s: bad MM ID\n", __func__);
1586 return rc;
1587 }
1588
1589 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1590 rc = true;
1591
1592 return rc;
1593}
1594
1595static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1596{
1597 int session_type, path_type, topology;
1598 u32 channels, sample_rate;
1599 uint16_t bits_per_sample = 16;
1600 struct msm_pcm_routing_fdai_data *fdai;
1601 uint32_t passthr_mode;
1602 bool is_lsm;
1603
1604 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1605
1606 if (!is_mm_lsm_fe_id(val)) {
1607 /* recheck FE ID in the mixer control defined in this file */
1608 pr_err("%s: bad MM ID\n", __func__);
1609 return;
1610 }
1611
1612 if (!route_check_fe_id_adm_support(val)) {
1613 /* ignore adm open if not supported for fe_id */
1614 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1615 return;
1616 }
1617
1618 passthr_mode = msm_bedais[reg].passthr_mode[val];
1619 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1620 MSM_AFE_PORT_TYPE_RX) {
1621 session_type = SESSION_TYPE_RX;
1622 if (passthr_mode != LEGACY_PCM)
1623 path_type = ADM_PATH_COMPRESSED_RX;
1624 else
1625 path_type = ADM_PATH_PLAYBACK;
1626 } else {
1627 session_type = SESSION_TYPE_TX;
Haynes Mathew George9a277722018-01-29 17:34:49 -08001628 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301629 path_type = ADM_PATH_COMPRESSED_TX;
1630 else
1631 path_type = ADM_PATH_LIVE_REC;
1632 }
1633 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1634 (val <= MSM_FRONTEND_DAI_LSM8);
1635
1636 mutex_lock(&routing_lock);
1637 if (set) {
1638 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1639 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1640 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1641 voc_start_playback(set, msm_bedais[reg].port_id);
1642
1643 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1644 fdai = &fe_dai_map[val][session_type];
1645 if (msm_bedais[reg].active && fdai->strm_id !=
1646 INVALID_SESSION) {
1647 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1648 /*
1649 * check if ADM needs to be configured with different
1650 * channel mapping than backend
1651 */
1652 if (!msm_bedais[reg].adm_override_ch)
1653 channels = msm_bedais[reg].channel;
1654 else
1655 channels = msm_bedais[reg].adm_override_ch;
1656 if (session_type == SESSION_TYPE_TX &&
1657 fdai->be_srate &&
1658 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1659 pr_debug("%s: flush strm %d diff BE rates\n",
1660 __func__, fdai->strm_id);
1661
1662 if (fdai->event_info.event_func)
1663 fdai->event_info.event_func(
1664 MSM_PCM_RT_EVT_BUF_RECFG,
1665 fdai->event_info.priv_data);
1666 fdai->be_srate = 0; /* might not need it */
1667 }
1668
1669 bits_per_sample = msm_routing_get_bit_width(
1670 msm_bedais[reg].format);
1671
1672 app_type =
1673 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1674 if (app_type && is_lsm) {
1675 app_type_idx =
1676 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1677 sample_rate =
1678 fe_dai_app_type_cfg[val][session_type][reg]
1679 .sample_rate;
1680 bits_per_sample =
1681 lsm_app_type_cfg[app_type_idx].bit_width;
1682 } else if (app_type) {
1683 app_type_idx =
1684 msm_pcm_routing_get_app_type_idx(app_type);
1685 sample_rate =
1686 fe_dai_app_type_cfg[val][session_type][reg]
1687 .sample_rate;
1688 bits_per_sample =
1689 app_type_cfg[app_type_idx].bit_width;
1690 } else
1691 sample_rate = msm_bedais[reg].sample_rate;
1692
1693 topology = msm_routing_get_adm_topology(val,
1694 session_type,
1695 reg);
1696 acdb_dev_id =
1697 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
1698 copp_idx = adm_open(msm_bedais[reg].port_id, path_type,
1699 sample_rate, channels, topology,
1700 fdai->perf_mode, bits_per_sample,
1701 app_type, acdb_dev_id);
1702 if ((copp_idx < 0) ||
1703 (copp_idx >= MAX_COPPS_PER_PORT)) {
1704 pr_err("%s: adm open failed\n", __func__);
1705 mutex_unlock(&routing_lock);
1706 return;
1707 }
1708 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1709 __func__, val, session_type, reg);
1710 set_bit(copp_idx,
1711 &session_copp_map[val][session_type][reg]);
1712
1713 if (msm_is_resample_needed(
1714 sample_rate,
1715 msm_bedais[reg].sample_rate))
1716 adm_copp_mfc_cfg(
1717 msm_bedais[reg].port_id, copp_idx,
1718 msm_bedais[reg].sample_rate);
1719
1720 if (session_type == SESSION_TYPE_RX &&
1721 fdai->event_info.event_func)
1722 fdai->event_info.event_func(
1723 MSM_PCM_RT_EVT_DEVSWITCH,
1724 fdai->event_info.priv_data);
1725
1726 msm_pcm_routing_build_matrix(val, session_type,
1727 path_type,
1728 fdai->perf_mode,
1729 passthr_mode);
1730 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1731 (passthr_mode == LEGACY_PCM))
1732 msm_pcm_routing_cfg_pp(msm_bedais[reg].port_id,
1733 copp_idx, topology,
1734 channels);
1735 }
1736 } else {
1737 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1738 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1739 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1740 voc_start_playback(set, msm_bedais[reg].port_id);
1741 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1742 fdai = &fe_dai_map[val][session_type];
1743 if (msm_bedais[reg].active && fdai->strm_id !=
1744 INVALID_SESSION) {
1745 int idx;
1746 int port_id;
1747 unsigned long copp =
1748 session_copp_map[val][session_type][reg];
1749 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1750 if (test_bit(idx, &copp))
1751 break;
1752
1753 port_id = msm_bedais[reg].port_id;
1754 topology = adm_get_topology_for_port_copp_idx(port_id,
1755 idx);
1756 adm_close(msm_bedais[reg].port_id, fdai->perf_mode,
1757 idx);
1758 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1759 __func__, copp, val, session_type, reg,
1760 topology);
1761 clear_bit(idx,
1762 &session_copp_map[val][session_type][reg]);
1763 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1764 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1765 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1766 (passthr_mode == LEGACY_PCM))
1767 msm_pcm_routing_deinit_pp(
1768 msm_bedais[reg].port_id,
1769 topology);
1770 msm_pcm_routing_build_matrix(val, session_type,
1771 path_type,
1772 fdai->perf_mode,
1773 passthr_mode);
1774 }
1775 }
1776 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1777 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1778 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1779
1780 mutex_unlock(&routing_lock);
1781}
1782
1783static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1784 struct snd_ctl_elem_value *ucontrol)
1785{
1786 struct soc_mixer_control *mc =
1787 (struct soc_mixer_control *)kcontrol->private_value;
1788
1789 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1790 ucontrol->value.integer.value[0] = 1;
1791 else
1792 ucontrol->value.integer.value[0] = 0;
1793
1794 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1795 ucontrol->value.integer.value[0]);
1796
1797 return 0;
1798}
1799
1800static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1801 struct snd_ctl_elem_value *ucontrol)
1802{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301803 struct snd_soc_dapm_widget *widget =
1804 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301805 struct soc_mixer_control *mc =
1806 (struct soc_mixer_control *)kcontrol->private_value;
1807 struct snd_soc_dapm_update *update = NULL;
1808
1809 if (ucontrol->value.integer.value[0] &&
1810 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1811 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1812 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1813 update);
1814 } else if (!ucontrol->value.integer.value[0] &&
1815 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1816 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1817 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1818 update);
1819 }
1820
1821 return 1;
1822}
1823
1824static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1825 struct snd_ctl_elem_value *ucontrol)
1826{
1827 struct soc_mixer_control *mc =
1828 (struct soc_mixer_control *)kcontrol->private_value;
1829
1830 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1831 ucontrol->value.integer.value[0] = 1;
1832 else
1833 ucontrol->value.integer.value[0] = 0;
1834
1835 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1836 ucontrol->value.integer.value[0]);
1837
1838 return 0;
1839}
1840
1841static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1842 struct snd_ctl_elem_value *ucontrol)
1843{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301844 struct snd_soc_dapm_widget *widget =
1845 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301846 struct soc_mixer_control *mc =
1847 (struct soc_mixer_control *)kcontrol->private_value;
1848 struct snd_soc_dapm_update *update = NULL;
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 if (ucontrol->value.integer.value[0]) {
1854 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1855 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1856 snd_soc_dapm_mixer_update_power(widget->dapm,
1857 kcontrol, 1, update);
1858 } else if (!ucontrol->value.integer.value[0]) {
1859 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1860 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1861 snd_soc_dapm_mixer_update_power(widget->dapm,
1862 kcontrol, 0, update);
1863 }
1864
1865 return 1;
1866}
1867
1868static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1869{
1870 u32 session_id = 0;
1871 u16 path_type;
1872 struct media_format_info voc_be_media_format;
1873
1874 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1875
1876 session_id = msm_pcm_routing_get_voc_sessionid(val);
1877
1878 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1879 __func__, val, session_id);
1880
1881 mutex_lock(&routing_lock);
1882
1883 if (set)
1884 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1885 else
1886 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1887
1888 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1889 afe_get_port_type(msm_bedais[reg].port_id) ==
1890 MSM_AFE_PORT_TYPE_RX) {
1891 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1892 __func__, set, msm_bedais[reg].port_id);
1893 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1894 }
1895
1896 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1897 MSM_AFE_PORT_TYPE_RX)
1898 path_type = RX_PATH;
1899 else
1900 path_type = TX_PATH;
1901
1902 if (set) {
1903 if (msm_bedais[reg].active) {
1904 voc_set_route_flag(session_id, path_type, 1);
1905
1906 memset(&voc_be_media_format, 0,
1907 sizeof(struct media_format_info));
1908
1909 voc_be_media_format.port_id = msm_bedais[reg].port_id;
1910 voc_be_media_format.num_channels =
1911 msm_bedais[reg].channel;
1912 voc_be_media_format.sample_rate =
1913 msm_bedais[reg].sample_rate;
1914 voc_be_media_format.bits_per_sample =
1915 msm_bedais[reg].format;
1916 /* Defaulting this to 1 for voice call usecases */
1917 voc_be_media_format.channel_mapping[0] = 1;
1918
1919 voc_set_device_config(session_id, path_type,
1920 &voc_be_media_format);
1921
1922 if (voc_get_route_flag(session_id, TX_PATH) &&
1923 voc_get_route_flag(session_id, RX_PATH))
1924 voc_enable_device(session_id);
1925 } else {
1926 pr_debug("%s BE is not active\n", __func__);
1927 }
1928 } else {
1929 voc_set_route_flag(session_id, path_type, 0);
1930 voc_disable_device(session_id);
1931 }
1932
1933 mutex_unlock(&routing_lock);
1934
1935}
1936
1937static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
1938 struct snd_ctl_elem_value *ucontrol)
1939{
1940 struct soc_mixer_control *mc =
1941 (struct soc_mixer_control *)kcontrol->private_value;
1942
1943 mutex_lock(&routing_lock);
1944
1945 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1946 ucontrol->value.integer.value[0] = 1;
1947 else
1948 ucontrol->value.integer.value[0] = 0;
1949
1950 mutex_unlock(&routing_lock);
1951
1952 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1953 ucontrol->value.integer.value[0]);
1954
1955 return 0;
1956}
1957
1958static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
1959 struct snd_ctl_elem_value *ucontrol)
1960{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301961 struct snd_soc_dapm_widget *widget =
1962 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301963 struct soc_mixer_control *mc =
1964 (struct soc_mixer_control *)kcontrol->private_value;
1965 struct snd_soc_dapm_update *update = NULL;
1966
1967 if (ucontrol->value.integer.value[0]) {
1968 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
1969 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1970 update);
1971 } else {
1972 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
1973 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1974 update);
1975 }
1976
1977 return 1;
1978}
1979
1980static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1981 struct snd_ctl_elem_value *ucontrol)
1982{
1983 struct soc_mixer_control *mc =
1984 (struct soc_mixer_control *)kcontrol->private_value;
1985
1986 mutex_lock(&routing_lock);
1987
1988 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1989 ucontrol->value.integer.value[0] = 1;
1990 else
1991 ucontrol->value.integer.value[0] = 0;
1992
1993 mutex_unlock(&routing_lock);
1994
1995 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1996 ucontrol->value.integer.value[0]);
1997
1998 return 0;
1999}
2000
2001static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
2002 struct snd_ctl_elem_value *ucontrol)
2003{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302004 struct snd_soc_dapm_widget *widget =
2005 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302006 struct soc_mixer_control *mc =
2007 (struct soc_mixer_control *)kcontrol->private_value;
2008 struct snd_soc_dapm_update *update = NULL;
2009
2010 if (ucontrol->value.integer.value[0]) {
2011 mutex_lock(&routing_lock);
2012 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2013 mutex_unlock(&routing_lock);
2014
2015 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2016 update);
2017 } else {
2018 mutex_lock(&routing_lock);
2019 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2020 mutex_unlock(&routing_lock);
2021
2022 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2023 update);
2024 }
2025
2026 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2027 ucontrol->value.integer.value[0]);
2028
2029 return 1;
2030}
2031
2032/*
2033 * Return the mapping between port ID and backend ID to enable the AFE callback
2034 * to determine the acdb_dev_id from the port id
2035 */
2036int msm_pcm_get_be_id_from_port_id(int port_id)
2037{
2038 int i;
2039 int be_id = -EINVAL;
2040
2041 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2042 if (msm_bedais[i].port_id == port_id) {
2043 be_id = i;
2044 break;
2045 }
2046 }
2047
2048 return be_id;
2049}
2050
2051/*
2052 * Return the registered dev_acdb_id given a port ID to enable identifying the
2053 * correct AFE calibration information by comparing the header information.
2054 */
2055static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2056{
2057 int acdb_id = -EINVAL;
2058 int i = 0;
2059 int session;
2060 int port_type = afe_get_port_type(port_id);
2061 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2062
2063 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2064 __func__, port_id, be_id, port_type);
2065
2066 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2067 session = SESSION_TYPE_TX;
2068 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2069 session = SESSION_TYPE_RX;
2070 } else {
2071 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2072 acdb_id = -EINVAL;
2073 goto exit;
2074 }
2075
2076 if (be_id < 0) {
2077 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2078 goto exit;
2079 }
2080
2081 mutex_lock(&routing_lock);
2082 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2083 MSM_FRONTEND_DAI_MAX);
2084 if (i < MSM_FRONTEND_DAI_MAX)
2085 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2086
2087 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2088 __func__, i, session, be_id, acdb_id);
2089 mutex_unlock(&routing_lock);
2090exit:
2091 return acdb_id;
2092}
2093
2094static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2095 struct snd_ctl_elem_value *ucontrol)
2096{
2097 ucontrol->value.integer.value[0] = fm_switch_enable;
2098 pr_debug("%s: FM Switch enable %ld\n", __func__,
2099 ucontrol->value.integer.value[0]);
2100 return 0;
2101}
2102
2103static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2104 struct snd_ctl_elem_value *ucontrol)
2105{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302106 struct snd_soc_dapm_widget *widget =
2107 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302108 struct snd_soc_dapm_update *update = NULL;
2109
2110 pr_debug("%s: FM Switch enable %ld\n", __func__,
2111 ucontrol->value.integer.value[0]);
2112 if (ucontrol->value.integer.value[0])
2113 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2114 update);
2115 else
2116 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2117 update);
2118 fm_switch_enable = ucontrol->value.integer.value[0];
2119 return 1;
2120}
2121
2122static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2123 struct snd_ctl_elem_value *ucontrol)
2124{
2125 ucontrol->value.integer.value[0] = hfp_switch_enable;
2126 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2127 ucontrol->value.integer.value[0]);
2128 return 0;
2129}
2130
2131static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2132 struct snd_ctl_elem_value *ucontrol)
2133{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302134 struct snd_soc_dapm_widget *widget =
2135 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302136 struct snd_soc_dapm_update *update = NULL;
2137
2138 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2139 ucontrol->value.integer.value[0]);
2140 if (ucontrol->value.integer.value[0])
2141 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2142 1, update);
2143 else
2144 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2145 0, update);
2146 hfp_switch_enable = ucontrol->value.integer.value[0];
2147 return 1;
2148}
2149
2150static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2151 struct snd_ctl_elem_value *ucontrol)
2152{
2153 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2154 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2155 ucontrol->value.integer.value[0]);
2156 return 0;
2157}
2158
2159static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2160 struct snd_ctl_elem_value *ucontrol)
2161{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302162 struct snd_soc_dapm_widget *widget =
2163 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302164 struct snd_soc_dapm_update *update = NULL;
2165
2166 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2167 ucontrol->value.integer.value[0]);
2168 if (ucontrol->value.integer.value[0])
2169 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2170 update);
2171 else
2172 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2173 update);
2174 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2175 return 1;
2176}
2177
2178static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2179 struct snd_ctl_elem_value *ucontrol)
2180{
2181 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2182 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2183 ucontrol->value.integer.value[0]);
2184 return 0;
2185}
2186
2187static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2188 struct snd_ctl_elem_value *ucontrol)
2189{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302190 struct snd_soc_dapm_widget *widget =
2191 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302192 struct snd_soc_dapm_update *update = NULL;
2193
2194 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2195 ucontrol->value.integer.value[0]);
2196 if (ucontrol->value.integer.value[0])
2197 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2198 update);
2199 else
2200 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2201 update);
2202 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2203 return 1;
2204}
2205
2206static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2207 struct snd_ctl_elem_value *ucontrol)
2208{
2209 ucontrol->value.integer.value[0] = usb_switch_enable;
2210 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2211 ucontrol->value.integer.value[0]);
2212 return 0;
2213}
2214
2215static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2216 struct snd_ctl_elem_value *ucontrol)
2217{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302218 struct snd_soc_dapm_widget *widget =
2219 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302220 struct snd_soc_dapm_update *update = NULL;
2221
2222 pr_debug("%s: USB Switch enable %ld\n", __func__,
2223 ucontrol->value.integer.value[0]);
2224 if (ucontrol->value.integer.value[0])
2225 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2226 1, update);
2227 else
2228 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2229 0, update);
2230 usb_switch_enable = ucontrol->value.integer.value[0];
2231 return 1;
2232}
2233
2234static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2235 struct snd_ctl_elem_value *ucontrol)
2236{
2237 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2238 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2239 ucontrol->value.integer.value[0]);
2240 return 0;
2241}
2242
2243static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2244 struct snd_ctl_elem_value *ucontrol)
2245{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302246 struct snd_soc_dapm_widget *widget =
2247 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302248 struct snd_soc_dapm_update *update = NULL;
2249
2250 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2251 ucontrol->value.integer.value[0]);
2252 if (ucontrol->value.integer.value[0])
2253 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2254 update);
2255 else
2256 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2257 update);
2258 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2259 return 1;
2260}
2261
2262static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2263 struct snd_ctl_elem_value *ucontrol)
2264{
2265 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2266 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2267 ucontrol->value.integer.value[0]);
2268 return 0;
2269}
2270
2271static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2272 struct snd_ctl_elem_value *ucontrol)
2273{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302274 struct snd_soc_dapm_widget *widget =
2275 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302276 struct snd_soc_dapm_update *update = NULL;
2277
2278 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2279 ucontrol->value.integer.value[0]);
2280 if (ucontrol->value.integer.value[0])
2281 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2282 update);
2283 else
2284 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2285 update);
2286 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2287 return 1;
2288}
2289
2290static int msm_routing_get_tert_mi2s_switch_mixer(
2291 struct snd_kcontrol *kcontrol,
2292 struct snd_ctl_elem_value *ucontrol)
2293{
2294 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2295 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2296 ucontrol->value.integer.value[0]);
2297 return 0;
2298}
2299
2300static int msm_routing_put_tert_mi2s_switch_mixer(
2301 struct snd_kcontrol *kcontrol,
2302 struct snd_ctl_elem_value *ucontrol)
2303{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302304 struct snd_soc_dapm_widget *widget =
2305 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302306 struct snd_soc_dapm_update *update = NULL;
2307
2308 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2309 ucontrol->value.integer.value[0]);
2310 if (ucontrol->value.integer.value[0])
2311 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2312 update);
2313 else
2314 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2315 update);
2316 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2317 return 1;
2318}
2319
2320static int msm_routing_get_quat_mi2s_switch_mixer(
2321 struct snd_kcontrol *kcontrol,
2322 struct snd_ctl_elem_value *ucontrol)
2323{
2324 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2325 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2326 ucontrol->value.integer.value[0]);
2327 return 0;
2328}
2329
2330static int msm_routing_put_quat_mi2s_switch_mixer(
2331 struct snd_kcontrol *kcontrol,
2332 struct snd_ctl_elem_value *ucontrol)
2333{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302334 struct snd_soc_dapm_widget *widget =
2335 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302336 struct snd_soc_dapm_update *update = NULL;
2337
2338 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2339 ucontrol->value.integer.value[0]);
2340 if (ucontrol->value.integer.value[0])
2341 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2342 update);
2343 else
2344 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2345 update);
2346 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2347 return 1;
2348}
2349
Rohit Kumara5077932017-09-10 22:05:05 +05302350static int msm_routing_get_quin_mi2s_switch_mixer(
2351 struct snd_kcontrol *kcontrol,
2352 struct snd_ctl_elem_value *ucontrol)
2353{
2354 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2355 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2356 ucontrol->value.integer.value[0]);
2357 return 0;
2358}
2359
2360static int msm_routing_put_quin_mi2s_switch_mixer(
2361 struct snd_kcontrol *kcontrol,
2362 struct snd_ctl_elem_value *ucontrol)
2363{
2364 struct snd_soc_dapm_widget *widget =
2365 snd_soc_dapm_kcontrol_widget(kcontrol);
2366 struct snd_soc_dapm_update *update = NULL;
2367
2368 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2369 ucontrol->value.integer.value[0]);
2370 if (ucontrol->value.integer.value[0])
2371 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2372 update);
2373 else
2374 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2375 update);
2376 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2377 return 1;
2378}
2379
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302380static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2381 struct snd_ctl_elem_value *ucontrol)
2382{
2383 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2384 pr_debug("%s: FM Switch enable %ld\n", __func__,
2385 ucontrol->value.integer.value[0]);
2386 return 0;
2387}
2388
2389static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2390 struct snd_ctl_elem_value *ucontrol)
2391{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302392 struct snd_soc_dapm_widget *widget =
2393 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302394 struct snd_soc_dapm_update *update = NULL;
2395
2396 pr_debug("%s: FM Switch enable %ld\n", __func__,
2397 ucontrol->value.integer.value[0]);
2398 if (ucontrol->value.integer.value[0])
2399 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2400 update);
2401 else
2402 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2403 update);
2404 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2405 return 1;
2406}
2407
2408static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2409 struct snd_ctl_elem_value *ucontrol)
2410{
2411 ucontrol->value.integer.value[0] = lsm_port_index;
2412 return 0;
2413}
2414
2415static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2416 struct snd_ctl_elem_value *ucontrol)
2417{
2418 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2419 int mux = ucontrol->value.enumerated.item[0];
2420 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2421
2422 if (mux >= e->items) {
2423 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2424 return -EINVAL;
2425 }
2426
2427 pr_debug("%s: LSM enable %ld\n", __func__,
2428 ucontrol->value.integer.value[0]);
2429 switch (ucontrol->value.integer.value[0]) {
2430 case 1:
2431 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2432 break;
2433 case 2:
2434 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2435 break;
2436 case 3:
2437 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2438 break;
2439 case 4:
2440 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2441 break;
2442 case 5:
2443 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2444 break;
2445 case 6:
2446 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2447 break;
2448 case 7:
2449 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2450 break;
2451 case 8:
2452 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2453 break;
2454 case 9:
2455 lsm_port = ADM_LSM_PORT_ID;
2456 break;
2457 case 10:
Revathi Uddarajue990e322018-07-04 15:30:19 +05302458 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
Ashish Jain01b10322018-05-12 15:37:44 +05302459 break;
2460 case 11:
Revathi Uddarajue990e322018-07-04 15:30:19 +05302461 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_2;
Ashish Jain01b10322018-05-12 15:37:44 +05302462 break;
2463 case 12:
Revathi Uddarajue990e322018-07-04 15:30:19 +05302464 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_3;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302465 break;
2466 default:
2467 pr_err("Default lsm port");
2468 break;
2469 }
2470 set_lsm_port(lsm_port);
2471 lsm_port_index = ucontrol->value.integer.value[0];
2472
2473 return 0;
2474}
2475
2476static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2477 struct snd_ctl_elem_value *ucontrol)
2478{
2479 int i;
2480 u16 port_id;
2481 enum afe_mad_type mad_type;
2482
2483 pr_debug("%s: enter\n", __func__);
2484 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2485 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2486 strlen(lsm_port_text[i])))
2487 break;
2488
2489 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2490 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2491 return -EINVAL;
2492 }
2493
2494 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2495
2496 /*Check for Tertiary/Quaternary/INT3 TX port*/
2497 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2498 strlen(lsm_port_text[7])))
2499 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2500
2501 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2502 strlen(lsm_port_text[8])))
2503 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2504
2505 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2506 strlen(lsm_port_text[10])))
2507 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2508
2509 mad_type = afe_port_get_mad_type(port_id);
2510 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2511 mad_type);
2512 switch (mad_type) {
2513 case MAD_HW_NONE:
2514 ucontrol->value.integer.value[0] = MADNONE;
2515 break;
2516 case MAD_HW_AUDIO:
2517 ucontrol->value.integer.value[0] = MADAUDIO;
2518 break;
2519 case MAD_HW_BEACON:
2520 ucontrol->value.integer.value[0] = MADBEACON;
2521 break;
2522 case MAD_HW_ULTRASOUND:
2523 ucontrol->value.integer.value[0] = MADULTRASOUND;
2524 break;
2525 case MAD_SW_AUDIO:
2526 ucontrol->value.integer.value[0] = MADSWAUDIO;
2527 break;
2528 default:
2529 WARN(1, "Unknown\n");
2530 return -EINVAL;
2531 }
2532 return 0;
2533}
2534
2535static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2536 struct snd_ctl_elem_value *ucontrol)
2537{
2538 int i;
2539 u16 port_id;
2540 enum afe_mad_type mad_type;
2541
2542 pr_debug("%s: enter\n", __func__);
2543 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2544 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2545 strlen(lsm_port_text[i])))
2546 break;
2547
2548 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2549 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2550 return -EINVAL;
2551 }
2552
2553 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2554 switch (ucontrol->value.integer.value[0]) {
2555 case MADNONE:
2556 mad_type = MAD_HW_NONE;
2557 break;
2558 case MADAUDIO:
2559 mad_type = MAD_HW_AUDIO;
2560 break;
2561 case MADBEACON:
2562 mad_type = MAD_HW_BEACON;
2563 break;
2564 case MADULTRASOUND:
2565 mad_type = MAD_HW_ULTRASOUND;
2566 break;
2567 case MADSWAUDIO:
2568 mad_type = MAD_SW_AUDIO;
2569 break;
2570 default:
2571 WARN(1, "Unknown\n");
2572 return -EINVAL;
2573 }
2574
2575 /*Check for Tertiary/Quaternary/INT3 TX port*/
2576 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2577 strlen(lsm_port_text[7])))
2578 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2579
2580 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2581 strlen(lsm_port_text[8])))
2582 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2583
2584 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2585 strlen(lsm_port_text[10])))
2586 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2587
2588 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2589 mad_type);
2590 return afe_port_set_mad_type(port_id, mad_type);
2591}
2592
2593static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2594
2595static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2596 adm_override_chs_text);
2597
2598static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2599{
2600 int backend_id;
2601
2602 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2603 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2604 } else {
2605 pr_err("%s: unsupported backend id: %s",
2606 __func__, kcontrol->id.name);
2607 return -EINVAL;
2608 }
2609
2610 return backend_id;
2611}
2612static int msm_routing_adm_channel_config_get(
2613 struct snd_kcontrol *kcontrol,
2614 struct snd_ctl_elem_value *ucontrol)
2615{
2616 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2617
2618 if (backend_id >= 0) {
2619 mutex_lock(&routing_lock);
2620 ucontrol->value.integer.value[0] =
2621 msm_bedais[backend_id].adm_override_ch;
2622 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2623 ucontrol->value.integer.value[0], backend_id);
2624 mutex_unlock(&routing_lock);
2625 }
2626
2627 return 0;
2628}
2629
2630static int msm_routing_adm_channel_config_put(
2631 struct snd_kcontrol *kcontrol,
2632 struct snd_ctl_elem_value *ucontrol)
2633{
2634 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2635
2636 if (backend_id >= 0) {
2637 mutex_lock(&routing_lock);
2638 msm_bedais[backend_id].adm_override_ch =
2639 ucontrol->value.integer.value[0];
2640 pr_debug("%s:updating BE :%d adm channels: %d\n",
2641 __func__, backend_id,
2642 msm_bedais[backend_id].adm_override_ch);
2643 mutex_unlock(&routing_lock);
2644 }
2645
2646 return 0;
2647}
2648
2649static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2650 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2651 msm_routing_adm_channel_config_get,
2652 msm_routing_adm_channel_config_put),
2653};
2654
2655static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2656 struct snd_ctl_elem_value *ucontrol)
2657{
2658
2659 mutex_lock(&routing_lock);
2660 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2661 mutex_unlock(&routing_lock);
2662 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2663 ucontrol->value.integer.value[0]);
2664 return 0;
2665};
2666
2667static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2668 struct snd_ctl_elem_value *ucontrol)
2669{
2670 struct aanc_data aanc_info;
2671
2672 mutex_lock(&routing_lock);
2673 memset(&aanc_info, 0x00, sizeof(aanc_info));
2674 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2675 ucontrol->value.integer.value[0]);
2676 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2677 if (ucontrol->value.integer.value[0] == 0) {
2678 aanc_info.aanc_active = false;
2679 aanc_info.aanc_tx_port = 0;
2680 aanc_info.aanc_rx_port = 0;
2681 } else {
2682 aanc_info.aanc_active = true;
2683 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2684 aanc_info.aanc_tx_port =
2685 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2686 }
2687 afe_set_aanc_info(&aanc_info);
2688 mutex_unlock(&routing_lock);
2689 return 0;
2690};
2691static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2692 struct snd_ctl_elem_value *ucontrol)
2693{
2694 int idx = 0, shift = 0;
2695 struct soc_mixer_control *mc =
2696 (struct soc_mixer_control *)kcontrol->private_value;
2697
2698 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2699 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2700
2701 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2702 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2703 return -EINVAL;
2704 }
2705
2706 if (test_bit(shift,
2707 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2708 ucontrol->value.integer.value[0] = 1;
2709 else
2710 ucontrol->value.integer.value[0] = 0;
2711
2712 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2713 ucontrol->value.integer.value[0]);
2714
2715 return 0;
2716}
2717
2718static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2719 struct snd_ctl_elem_value *ucontrol)
2720{
2721 int idx = 0, shift = 0;
2722 struct soc_mixer_control *mc =
2723 (struct soc_mixer_control *)kcontrol->private_value;
2724
2725 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2726 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2727
2728 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2729 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2730 return -EINVAL;
2731 }
2732
2733 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2734 __func__, mc->reg, mc->shift,
2735 ucontrol->value.integer.value[0], idx, shift);
2736
2737 if (ucontrol->value.integer.value[0]) {
2738 afe_loopback(1, msm_bedais[mc->reg].port_id,
2739 msm_bedais[mc->shift].port_id);
2740 set_bit(shift,
2741 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2742 } else {
2743 afe_loopback(0, msm_bedais[mc->reg].port_id,
2744 msm_bedais[mc->shift].port_id);
2745 clear_bit(shift,
2746 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2747 }
2748
2749 return 1;
2750}
2751
2752static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2753 struct snd_ctl_elem_value *ucontrol)
2754{
2755 u16 fe_id = 0;
2756
2757 fe_id = ((struct soc_mixer_control *)
2758 kcontrol->private_value)->shift;
2759 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2760 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2761 return -EINVAL;
2762 }
2763
2764 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2765
2766 return 0;
2767}
2768
2769static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2770 struct snd_ctl_elem_value *ucontrol)
2771{
2772 u16 fe_id = 0;
2773
2774 fe_id = ((struct soc_mixer_control *)
2775 kcontrol->private_value)->shift;
2776 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2777 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2778 return -EINVAL;
2779 }
2780
2781 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2782
2783 return 1;
2784}
2785
2786static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2787 struct snd_ctl_elem_value *ucontrol)
2788{
2789 u16 fe_id = 0;
2790
2791 fe_id = ((struct soc_multi_mixer_control *)
2792 kcontrol->private_value)->shift;
2793 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2794 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2795 return -EINVAL;
2796 }
2797
2798 ucontrol->value.integer.value[0] =
2799 channel_mixer[fe_id].output_channel;
2800 return 0;
2801}
2802
2803static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2804 struct snd_ctl_elem_value *ucontrol)
2805{
2806 u16 fe_id = 0;
2807
2808 fe_id = ((struct soc_multi_mixer_control *)
2809 kcontrol->private_value)->shift;
2810 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2811 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2812 return -EINVAL;
2813 }
2814
2815 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2816 fe_id,
2817 (unsigned int)(ucontrol->value.integer.value[0]));
2818 channel_mixer[fe_id].output_channel =
2819 (unsigned int)(ucontrol->value.integer.value[0]);
2820
2821 return 1;
2822}
2823
2824static const char *const ch_mixer[] = {"Disable", "Enable"};
2825
2826/* If new backend is added, need update this array */
2827static const char *const be_name[] = {
2828"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2829"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2830"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2831"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2832"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2833"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2834"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2835"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2836"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2837"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2838"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2839"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2840"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2841"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2842"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2843"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2844"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2845"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2846"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2847"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2848"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2849"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2850"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2851"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2852"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2853"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2854"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2855"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2856"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2857"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302858"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2859"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2860"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2861"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302862"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2863"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302864"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302865"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2866"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2867"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2868"INT6_MI2S_RX", "INT6_MI2S_TX"
2869};
2870
2871static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2872 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2873static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2874 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2875static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2876 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2877static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2878 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2879
2880static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
2881 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
2882static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
2883 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
2884static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
2885 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
2886static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
2887 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
2888static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
2889 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
2890static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
2891 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
2892static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
2893 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
2894static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
2895 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
2896
2897static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
2898 unsigned int channels,
2899 unsigned int items, const char *const names[])
2900{
2901 if (uinfo->value.enumerated.item >= items)
2902 uinfo->value.enumerated.item = items - 1;
2903
2904 WARN(strlen(names[uinfo->value.enumerated.item]) >=
2905 sizeof(uinfo->value.enumerated.name),
2906 "ALSA: too long item name '%s'\n",
2907 names[uinfo->value.enumerated.item]);
2908 strlcpy(uinfo->value.enumerated.name,
2909 names[uinfo->value.enumerated.item],
2910 sizeof(uinfo->value.enumerated.name));
2911 return 0;
2912}
2913
2914static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
2915 struct snd_ctl_elem_info *uinfo)
2916{
2917 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2918
2919 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2920 uinfo->count = 1;
2921
2922 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
2923 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2924
2925 return 0;
2926}
2927static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
2928 struct snd_ctl_elem_value *ucontrol)
2929{
2930 u16 fe_id = 0;
2931
2932 fe_id = ((struct soc_enum *)
2933 kcontrol->private_value)->shift_l;
2934 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2935 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2936 return -EINVAL;
2937 }
2938
2939 pr_debug("%s: FE %d %s\n", __func__,
2940 fe_id,
2941 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
2942 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
2943 return 0;
2944}
2945
2946static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
2947 struct snd_ctl_elem_value *ucontrol)
2948{
2949 u16 fe_id = 0;
2950
2951 fe_id = ((struct soc_enum *)
2952 kcontrol->private_value)->shift_l;
2953 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2954 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2955 return -EINVAL;
2956 }
2957
2958 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
2959 pr_debug("%s: %s FE %d\n", __func__,
2960 channel_mixer[fe_id].enable ? "Enable" : "Disable",
2961 fe_id);
2962 return 0;
2963}
2964
2965static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
2966 struct snd_ctl_elem_info *uinfo)
2967{
2968 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2969
2970 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2971 uinfo->count = 1;
2972
2973 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
2974 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2975
2976 return 0;
2977}
2978
2979static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
2980 struct snd_ctl_elem_value *ucontrol)
2981{
2982 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2983 u16 fe_id = 0, in_ch = 0;
2984
2985 fe_id = e->shift_l;
2986 in_ch = e->shift_r;
2987 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2988 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2989 return -EINVAL;
2990 }
2991 if (in_ch >= ADM_MAX_CHANNELS) {
2992 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
2993 return -EINVAL;
2994 }
2995
2996 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
2997 return 1;
2998}
2999
3000static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
3001 struct snd_ctl_elem_value *ucontrol)
3002{
3003 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3004 u16 fe_id = 0, in_ch = 0;
3005
3006 fe_id = e->shift_l;
3007 in_ch = e->shift_r;
3008 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3009 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3010 return -EINVAL;
3011 }
3012 if (in_ch >= ADM_MAX_CHANNELS) {
3013 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3014 return -EINVAL;
3015 }
3016
3017 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
3018 return 1;
3019}
3020
3021
3022static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
3023 struct snd_ctl_elem_info *uinfo)
3024{
3025 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3026 uinfo->count = ADM_MAX_CHANNELS;
3027 uinfo->value.integer.min = 0;
3028 uinfo->value.integer.max = WEIGHT_0_DB;
3029
3030 return 0;
3031}
3032
3033static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3034 struct snd_ctl_elem_value *ucontrol)
3035{
3036 u16 fe_id = 0, out_ch = 0;
3037 int i, weight;
3038
3039 fe_id = ((struct soc_multi_mixer_control *)
3040 kcontrol->private_value)->shift;
3041 out_ch = ((struct soc_multi_mixer_control *)
3042 kcontrol->private_value)->rshift;
3043 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3044 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3045 return -EINVAL;
3046 }
3047 if (out_ch >= ADM_MAX_CHANNELS) {
3048 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3049 return -EINVAL;
3050 }
3051
3052 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3053 __func__, fe_id,
3054 ucontrol->value.integer.value[0],
3055 ucontrol->value.integer.value[1],
3056 ucontrol->value.integer.value[2],
3057 ucontrol->value.integer.value[3],
3058 ucontrol->value.integer.value[4],
3059 ucontrol->value.integer.value[5],
3060 ucontrol->value.integer.value[6],
3061 ucontrol->value.integer.value[7]);
3062
3063 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3064 weight = ucontrol->value.integer.value[i];
3065 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3066 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3067 __func__, fe_id, out_ch, i,
3068 channel_mixer[fe_id].channel_weight[out_ch][i]);
3069 }
3070
3071 return 0;
3072}
3073
3074static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3075 struct snd_ctl_elem_value *ucontrol)
3076{
3077 u16 fe_id = 0, out_ch = 0;
3078 int i;
3079
3080 fe_id = ((struct soc_multi_mixer_control *)
3081 kcontrol->private_value)->shift;
3082 out_ch = ((struct soc_multi_mixer_control *)
3083 kcontrol->private_value)->rshift;
3084 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3085 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3086 return -EINVAL;
3087 }
3088 if (out_ch >= ADM_MAX_CHANNELS) {
3089 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3090 return -EINVAL;
3091 }
3092
3093 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3094 ucontrol->value.integer.value[i] =
3095 channel_mixer[fe_id].channel_weight[out_ch][i];
3096
3097 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3098 __func__, fe_id,
3099 ucontrol->value.integer.value[0],
3100 ucontrol->value.integer.value[1],
3101 ucontrol->value.integer.value[2],
3102 ucontrol->value.integer.value[3],
3103 ucontrol->value.integer.value[4],
3104 ucontrol->value.integer.value[5],
3105 ucontrol->value.integer.value[6],
3106 ucontrol->value.integer.value[7]);
3107
3108 return 0;
3109}
3110
3111static const struct snd_kcontrol_new channel_mixer_controls[] = {
3112 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3113 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3114 msm_pcm_get_channel_rule_index,
3115 msm_pcm_put_channel_rule_index),
3116 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3117 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3118 msm_pcm_get_channel_rule_index,
3119 msm_pcm_put_channel_rule_index),
3120 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3121 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3122 msm_pcm_get_channel_rule_index,
3123 msm_pcm_put_channel_rule_index),
3124 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3125 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3126 msm_pcm_get_channel_rule_index,
3127 msm_pcm_put_channel_rule_index),
3128 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3129 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3130 msm_pcm_get_channel_rule_index,
3131 msm_pcm_put_channel_rule_index),
3132 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3133 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3134 msm_pcm_get_channel_rule_index,
3135 msm_pcm_put_channel_rule_index),
3136
3137 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3138 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3139 msm_pcm_get_out_chs,
3140 msm_pcm_put_out_chs),
3141 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3142 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3143 msm_pcm_get_out_chs,
3144 msm_pcm_put_out_chs),
3145 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3146 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3147 msm_pcm_get_out_chs,
3148 msm_pcm_put_out_chs),
3149 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3150 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3151 msm_pcm_get_out_chs,
3152 msm_pcm_put_out_chs),
3153 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3154 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3155 msm_pcm_get_out_chs,
3156 msm_pcm_put_out_chs),
3157 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3158 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3159 msm_pcm_get_out_chs,
3160 msm_pcm_put_out_chs),
3161 {
3162 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3163 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3164 .name = "MultiMedia1 Channel Mixer",
3165 .info = msm_pcm_channel_mixer_info,
3166 .get = msm_pcm_channel_mixer_get,
3167 .put = msm_pcm_channel_mixer_put,
3168 .private_value = (unsigned long)&(mm1_channel_mux)
3169 },
3170 {
3171 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3172 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3173 .name = "MultiMedia2 Channel Mixer",
3174 .info = msm_pcm_channel_mixer_info,
3175 .get = msm_pcm_channel_mixer_get,
3176 .put = msm_pcm_channel_mixer_put,
3177 .private_value = (unsigned long)&(mm2_channel_mux)
3178 },
3179 {
3180 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3181 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3182 .name = "MultiMedia3 Channel Mixer",
3183 .info = msm_pcm_channel_mixer_info,
3184 .get = msm_pcm_channel_mixer_get,
3185 .put = msm_pcm_channel_mixer_put,
3186 .private_value = (unsigned long)&(mm3_channel_mux)
3187 },
3188 {
3189 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3190 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3191 .name = "MultiMedia4 Channel Mixer",
3192 .info = msm_pcm_channel_mixer_info,
3193 .get = msm_pcm_channel_mixer_get,
3194 .put = msm_pcm_channel_mixer_put,
3195 .private_value = (unsigned long)&(mm4_channel_mux)
3196 },
3197 {
3198 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3199 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3200 .name = "MultiMedia1 Output Channel1",
3201 .info = msm_pcm_channel_weight_info,
3202 .get = msm_pcm_channel_weight_get,
3203 .put = msm_pcm_channel_weight_put,
3204 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3205 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 0,}
3206 },
3207 {
3208 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3209 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3210 .name = "MultiMedia1 Output Channel2",
3211 .info = msm_pcm_channel_weight_info,
3212 .get = msm_pcm_channel_weight_get,
3213 .put = msm_pcm_channel_weight_put,
3214 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3215 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3216 },
3217 {
3218 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3219 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3220 .name = "MultiMedia1 Output Channel3",
3221 .info = msm_pcm_channel_weight_info,
3222 .get = msm_pcm_channel_weight_get,
3223 .put = msm_pcm_channel_weight_put,
3224 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3225 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3226 },
3227 {
3228 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3229 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3230 .name = "MultiMedia1 Output Channel4",
3231 .info = msm_pcm_channel_weight_info,
3232 .get = msm_pcm_channel_weight_get,
3233 .put = msm_pcm_channel_weight_put,
3234 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3235 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3236 },
3237 {
3238 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3239 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3240 .name = "MultiMedia1 Output Channel5",
3241 .info = msm_pcm_channel_weight_info,
3242 .get = msm_pcm_channel_weight_get,
3243 .put = msm_pcm_channel_weight_put,
3244 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3245 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3246 },
3247 {
3248 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3249 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3250 .name = "MultiMedia1 Output Channel6",
3251 .info = msm_pcm_channel_weight_info,
3252 .get = msm_pcm_channel_weight_get,
3253 .put = msm_pcm_channel_weight_put,
3254 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3255 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3256 },
3257 {
3258 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3259 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3260 .name = "MultiMedia1 Output Channel7",
3261 .info = msm_pcm_channel_weight_info,
3262 .get = msm_pcm_channel_weight_get,
3263 .put = msm_pcm_channel_weight_put,
3264 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3265 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3266 },
3267 {
3268 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3269 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3270 .name = "MultiMedia1 Output Channel8",
3271 .info = msm_pcm_channel_weight_info,
3272 .get = msm_pcm_channel_weight_get,
3273 .put = msm_pcm_channel_weight_put,
3274 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3275 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3276 },
3277 {
3278 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3279 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3280 .name = "MultiMedia2 Output Channel1",
3281 .info = msm_pcm_channel_weight_info,
3282 .get = msm_pcm_channel_weight_get,
3283 .put = msm_pcm_channel_weight_put,
3284 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3285 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3286 },
3287 {
3288 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3289 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3290 .name = "MultiMedia2 Output Channel2",
3291 .info = msm_pcm_channel_weight_info,
3292 .get = msm_pcm_channel_weight_get,
3293 .put = msm_pcm_channel_weight_put,
3294 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3295 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3296 },
3297 {
3298 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3299 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3300 .name = "MultiMedia2 Output Channel3",
3301 .info = msm_pcm_channel_weight_info,
3302 .get = msm_pcm_channel_weight_get,
3303 .put = msm_pcm_channel_weight_put,
3304 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3305 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3306 },
3307 {
3308 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3309 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3310 .name = "MultiMedia3 Output Channel1",
3311 .info = msm_pcm_channel_weight_info,
3312 .get = msm_pcm_channel_weight_get,
3313 .put = msm_pcm_channel_weight_put,
3314 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3315 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3316 },
3317 {
3318 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3319 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3320 .name = "MultiMedia3 Output Channel2",
3321 .info = msm_pcm_channel_weight_info,
3322 .get = msm_pcm_channel_weight_get,
3323 .put = msm_pcm_channel_weight_put,
3324 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3325 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3326 },
3327 {
3328 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3329 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3330 .name = "MultiMedia1 Channel1",
3331 .info = msm_pcm_channel_input_be_info,
3332 .get = msm_pcm_channel_input_be_get,
3333 .put = msm_pcm_channel_input_be_put,
3334 .private_value = (unsigned long)&(mm1_ch1_enum)
3335 },
3336 {
3337 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3338 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3339 .name = "MultiMedia1 Channel2",
3340 .info = msm_pcm_channel_input_be_info,
3341 .get = msm_pcm_channel_input_be_get,
3342 .put = msm_pcm_channel_input_be_put,
3343 .private_value = (unsigned long)&(mm1_ch2_enum)
3344 },
3345 {
3346 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3347 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3348 .name = "MultiMedia1 Channel3",
3349 .info = msm_pcm_channel_input_be_info,
3350 .get = msm_pcm_channel_input_be_get,
3351 .put = msm_pcm_channel_input_be_put,
3352 .private_value = (unsigned long)&(mm1_ch3_enum)
3353 },
3354 {
3355 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3356 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3357 .name = "MultiMedia1 Channel4",
3358 .info = msm_pcm_channel_input_be_info,
3359 .get = msm_pcm_channel_input_be_get,
3360 .put = msm_pcm_channel_input_be_put,
3361 .private_value = (unsigned long)&(mm1_ch4_enum)
3362 },
3363 {
3364 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3365 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3366 .name = "MultiMedia1 Channel5",
3367 .info = msm_pcm_channel_input_be_info,
3368 .get = msm_pcm_channel_input_be_get,
3369 .put = msm_pcm_channel_input_be_put,
3370 .private_value = (unsigned long)&(mm1_ch5_enum)
3371 },
3372 {
3373 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3374 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3375 .name = "MultiMedia1 Channel6",
3376 .info = msm_pcm_channel_input_be_info,
3377 .get = msm_pcm_channel_input_be_get,
3378 .put = msm_pcm_channel_input_be_put,
3379 .private_value = (unsigned long)&(mm1_ch6_enum)
3380 },
3381 {
3382 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3383 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3384 .name = "MultiMedia1 Channel7",
3385 .info = msm_pcm_channel_input_be_info,
3386 .get = msm_pcm_channel_input_be_get,
3387 .put = msm_pcm_channel_input_be_put,
3388 .private_value = (unsigned long)&(mm1_ch7_enum)
3389 },
3390 {
3391 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3392 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3393 .name = "MultiMedia1 Channel8",
3394 .info = msm_pcm_channel_input_be_info,
3395 .get = msm_pcm_channel_input_be_get,
3396 .put = msm_pcm_channel_input_be_put,
3397 .private_value = (unsigned long)&(mm1_ch8_enum)
3398 },
3399};
3400static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3401 struct snd_ctl_elem_value *ucontrol)
3402{
3403 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3404 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3405 ucontrol->value.integer.value[0]);
3406 return 0;
3407}
3408
3409static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3410 struct snd_ctl_elem_value *ucontrol)
3411{
3412 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3413 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3414 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3415 return 0;
3416}
3417
3418static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3419 "Four", "Five", "Six", "Seven", "Eight"};
3420
3421static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3422 struct snd_ctl_elem_value *ucontrol)
3423{
3424 switch (msm_ec_ref_bit_format) {
3425 case SNDRV_PCM_FORMAT_S24_LE:
3426 ucontrol->value.integer.value[0] = 2;
3427 break;
3428 case SNDRV_PCM_FORMAT_S16_LE:
3429 ucontrol->value.integer.value[0] = 1;
3430 break;
3431 default:
3432 ucontrol->value.integer.value[0] = 0;
3433 break;
3434 }
3435 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3436 __func__, ucontrol->value.integer.value[0]);
3437 return 0;
3438}
3439
3440static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3441 struct snd_ctl_elem_value *ucontrol)
3442{
3443 u16 bit_width = 0;
3444
3445 switch (ucontrol->value.integer.value[0]) {
3446 case 2:
3447 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3448 break;
3449 case 1:
3450 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3451 break;
3452 default:
3453 msm_ec_ref_bit_format = 0;
3454 break;
3455 }
3456
3457 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3458 bit_width = 16;
3459 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3460 bit_width = 24;
3461
3462 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3463 __func__, msm_ec_ref_bit_format);
3464 adm_ec_ref_rx_bit_width(bit_width);
3465 return 0;
3466}
3467
3468static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3469
3470static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3471 struct snd_ctl_elem_value *ucontrol)
3472{
3473 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3474 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3475 __func__, ucontrol->value.integer.value[0]);
3476 return 0;
3477}
3478
3479static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3480 struct snd_ctl_elem_value *ucontrol)
3481{
3482 switch (ucontrol->value.integer.value[0]) {
3483 case 0:
3484 msm_ec_ref_sampling_rate = 0;
3485 break;
3486 case 1:
3487 msm_ec_ref_sampling_rate = 8000;
3488 break;
3489 case 2:
3490 msm_ec_ref_sampling_rate = 16000;
3491 break;
3492 case 3:
3493 msm_ec_ref_sampling_rate = 32000;
3494 break;
3495 case 4:
3496 msm_ec_ref_sampling_rate = 44100;
3497 break;
3498 case 5:
3499 msm_ec_ref_sampling_rate = 48000;
3500 break;
3501 case 6:
3502 msm_ec_ref_sampling_rate = 96000;
3503 break;
3504 case 7:
3505 msm_ec_ref_sampling_rate = 192000;
3506 break;
3507 case 8:
3508 msm_ec_ref_sampling_rate = 384000;
3509 break;
3510 default:
3511 msm_ec_ref_sampling_rate = 48000;
3512 break;
3513 }
3514 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3515 __func__, msm_ec_ref_sampling_rate);
3516 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3517 return 0;
3518}
3519
3520static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3521 "32000", "44100", "48000", "96000", "192000", "384000"};
3522
3523static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3524 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3525 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3526 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3527};
3528
3529static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3530 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3531 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3532 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3533 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3534 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3535 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3536};
3537
3538static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3539 struct snd_ctl_elem_value *ucontrol)
3540{
3541 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3542 mutex_lock(&routing_lock);
3543 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3544 mutex_unlock(&routing_lock);
3545 return 0;
3546}
3547
3548static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3549 struct snd_ctl_elem_value *ucontrol)
3550{
3551 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303552 struct snd_soc_dapm_widget *widget =
3553 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303554 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3555 struct snd_soc_dapm_update *update = NULL;
3556
3557
3558 mutex_lock(&routing_lock);
3559 switch (ucontrol->value.integer.value[0]) {
3560 case 0:
3561 msm_route_ec_ref_rx = 0;
3562 ec_ref_port_id = AFE_PORT_INVALID;
3563 break;
3564 case 1:
3565 msm_route_ec_ref_rx = 1;
3566 ec_ref_port_id = SLIMBUS_0_RX;
3567 break;
3568 case 2:
3569 msm_route_ec_ref_rx = 2;
3570 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3571 break;
3572 case 3:
3573 msm_route_ec_ref_rx = 3;
3574 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3575 break;
3576 case 4:
3577 msm_route_ec_ref_rx = 4;
3578 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3579 break;
3580 case 5:
3581 msm_route_ec_ref_rx = 5;
3582 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3583 break;
3584 case 6:
3585 msm_route_ec_ref_rx = 6;
3586 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3587 break;
3588 case 7:
3589 msm_route_ec_ref_rx = 7;
3590 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3591 break;
3592 case 9:
3593 msm_route_ec_ref_rx = 9;
3594 ec_ref_port_id = SLIMBUS_5_RX;
3595 break;
3596 case 10:
3597 msm_route_ec_ref_rx = 10;
3598 ec_ref_port_id = SLIMBUS_1_TX;
3599 break;
3600 case 11:
3601 msm_route_ec_ref_rx = 11;
3602 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3603 break;
3604 case 12:
3605 msm_route_ec_ref_rx = 12;
3606 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3607 break;
3608 case 13:
3609 msm_route_ec_ref_rx = 13;
3610 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3611 break;
3612 case 14:
3613 msm_route_ec_ref_rx = 14;
3614 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3615 break;
3616 case 15:
3617 msm_route_ec_ref_rx = 15;
3618 ec_ref_port_id = SLIMBUS_6_RX;
3619 break;
3620 case 16:
3621 msm_route_ec_ref_rx = 16;
3622 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3623 break;
3624 case 17:
3625 msm_route_ec_ref_rx = 17;
3626 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3627 break;
3628 case 18:
3629 msm_route_ec_ref_rx = 18;
3630 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3631 break;
3632 case 19:
3633 msm_route_ec_ref_rx = 19;
3634 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3635 break;
3636 case 20:
3637 msm_route_ec_ref_rx = 20;
3638 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3639 break;
3640 case 21:
3641 msm_route_ec_ref_rx = 21;
3642 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3643 break;
3644 case 22:
3645 msm_route_ec_ref_rx = 22;
3646 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3647 break;
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003648 case 23:
3649 msm_route_ec_ref_rx = 23;
3650 ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
3651 break;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303652 default:
3653 msm_route_ec_ref_rx = 0; /* NONE */
3654 pr_err("%s EC ref rx %ld not valid\n",
3655 __func__, ucontrol->value.integer.value[0]);
3656 ec_ref_port_id = AFE_PORT_INVALID;
3657 break;
3658 }
3659 adm_ec_ref_rx_id(ec_ref_port_id);
3660 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3661 __func__, msm_route_ec_ref_rx);
3662 mutex_unlock(&routing_lock);
3663 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3664 msm_route_ec_ref_rx, e, update);
3665 return 0;
3666}
3667
3668static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3669 "PRI_MI2S_TX", "SEC_MI2S_TX",
3670 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3671 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3672 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3673 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003674 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT"};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303675
3676static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3677 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3678};
3679
3680static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3681 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3682 msm_route_ec_ref_rx_enum[0],
3683 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3684
3685static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3686 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3687 msm_route_ec_ref_rx_enum[0],
3688 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3689
3690static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3691 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3692 msm_route_ec_ref_rx_enum[0],
3693 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3694
3695static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3696 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3697 msm_route_ec_ref_rx_enum[0],
3698 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3699
3700static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3701 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3702 msm_route_ec_ref_rx_enum[0],
3703 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3704
3705static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3706 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3707 msm_route_ec_ref_rx_enum[0],
3708 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3709
3710static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3711 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3712 msm_route_ec_ref_rx_enum[0],
3713 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3714
3715static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3716 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3717 msm_route_ec_ref_rx_enum[0],
3718 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3719
Asish Bhattacharya34504582017-08-08 12:55:01 +05303720static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3721 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3722 msm_route_ec_ref_rx_enum[0],
3723 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3724
Laxminath Kasam38070be2017-08-17 18:21:59 +05303725static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3726 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3727 msm_route_ec_ref_rx_enum[0],
3728 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3729
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303730static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3731 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3732 msm_route_ec_ref_rx_enum[0],
3733 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3734
3735static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3736 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3737 msm_route_ec_ref_rx_enum[0],
3738 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3739
3740static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3741 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3742 msm_route_ec_ref_rx_enum[0],
3743 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3744
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303745static const struct snd_kcontrol_new ext_ec_ref_mux_ul28 =
3746 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL28 MUX Mux",
3747 msm_route_ec_ref_rx_enum[0],
3748 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3749
3750static const struct snd_kcontrol_new ext_ec_ref_mux_ul29 =
3751 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL29 MUX Mux",
3752 msm_route_ec_ref_rx_enum[0],
3753 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3754
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303755static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3756 struct snd_ctl_elem_value *ucontrol)
3757{
3758 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3759
3760 mutex_lock(&routing_lock);
3761 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3762 mutex_unlock(&routing_lock);
3763 return 0;
3764}
3765
3766static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3767 struct snd_ctl_elem_value *ucontrol)
3768{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303769 struct snd_soc_dapm_widget *widget =
3770 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303771 int mux = ucontrol->value.enumerated.item[0];
3772 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3773 int ret = 1;
3774 bool state = true;
3775 uint16_t ext_ec_ref_port_id;
3776 struct snd_soc_dapm_update *update = NULL;
3777
3778 if (mux >= e->items) {
3779 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3780 return -EINVAL;
3781 }
3782
3783 mutex_lock(&routing_lock);
3784 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3785
3786 switch (msm_route_ext_ec_ref) {
3787 case EXT_EC_REF_PRI_MI2S_TX:
3788 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3789 break;
3790 case EXT_EC_REF_SEC_MI2S_TX:
3791 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3792 break;
3793 case EXT_EC_REF_TERT_MI2S_TX:
3794 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3795 break;
3796 case EXT_EC_REF_QUAT_MI2S_TX:
3797 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3798 break;
3799 case EXT_EC_REF_QUIN_MI2S_TX:
3800 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3801 break;
3802 case EXT_EC_REF_SLIM_1_TX:
3803 ext_ec_ref_port_id = SLIMBUS_1_TX;
3804 break;
3805 case EXT_EC_REF_NONE:
3806 default:
3807 ext_ec_ref_port_id = AFE_PORT_INVALID;
3808 state = false;
3809 break;
3810 }
3811
3812 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3813 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3814
3815 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3816 mutex_unlock(&routing_lock);
3817 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3818 update);
3819 } else {
3820 ret = -EINVAL;
3821 mutex_unlock(&routing_lock);
3822 }
3823 return ret;
3824}
3825
3826static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3827 "SEC_MI2S_TX", "TERT_MI2S_TX",
3828 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3829 "SLIM_1_TX"};
3830
3831static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3832 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3833};
3834
3835static const struct snd_kcontrol_new voc_ext_ec_mux =
3836 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3837 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3838
3839
3840static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3841 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3842 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3843 msm_routing_put_audio_mixer),
3844 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3845 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3846 msm_routing_put_audio_mixer),
3847 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3848 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3849 msm_routing_put_audio_mixer),
3850 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3851 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3852 msm_routing_put_audio_mixer),
3853 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3854 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3855 msm_routing_put_audio_mixer),
3856 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3857 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3858 msm_routing_put_audio_mixer),
3859 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3860 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3861 msm_routing_put_audio_mixer),
3862 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3863 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3864 msm_routing_put_audio_mixer),
3865 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3866 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3867 msm_routing_put_audio_mixer),
3868 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3869 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3870 msm_routing_put_audio_mixer),
3871 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3872 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3873 msm_routing_put_audio_mixer),
3874 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
3875 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3876 msm_routing_put_audio_mixer),
3877 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
3878 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3879 msm_routing_put_audio_mixer),
3880 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
3881 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3882 msm_routing_put_audio_mixer),
3883 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
3884 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3885 msm_routing_put_audio_mixer),
3886 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
3887 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3888 msm_routing_put_audio_mixer),
3889 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
3890 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3891 msm_routing_put_audio_mixer),
3892 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
3893 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3894 msm_routing_put_audio_mixer),
3895 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
3896 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3897 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303898 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_I2S_RX,
3899 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
3900 msm_routing_put_audio_mixer),
3901 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_I2S_RX,
3902 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
3903 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303904};
3905
3906static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
3907 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
3908 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3909 msm_routing_put_audio_mixer),
3910 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
3911 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3912 msm_routing_put_audio_mixer),
3913 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
3914 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3915 msm_routing_put_audio_mixer),
3916 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
3917 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3918 msm_routing_put_audio_mixer),
3919 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
3920 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3921 msm_routing_put_audio_mixer),
3922 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
3923 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3924 msm_routing_put_audio_mixer),
3925 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
3926 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3927 msm_routing_put_audio_mixer),
3928 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
3929 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3930 msm_routing_put_audio_mixer),
3931 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
3932 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3933 msm_routing_put_audio_mixer),
3934 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
3935 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3936 msm_routing_put_audio_mixer),
3937 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
3938 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3939 msm_routing_put_audio_mixer),
3940 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
3941 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3942 msm_routing_put_audio_mixer),
3943 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
3944 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3945 msm_routing_put_audio_mixer),
3946 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
3947 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3948 msm_routing_put_audio_mixer),
3949 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
3950 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3951 msm_routing_put_audio_mixer),
3952 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
3953 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3954 msm_routing_put_audio_mixer),
3955 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
3956 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3957 msm_routing_put_audio_mixer),
3958 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
3959 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3960 msm_routing_put_audio_mixer),
3961 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
3962 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3963 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303964 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_I2S_RX,
3965 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
3966 msm_routing_put_audio_mixer),
3967 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_I2S_RX,
3968 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
3969 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303970};
3971
3972static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
3973 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
3974 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3975 msm_routing_put_audio_mixer),
3976 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
3977 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3978 msm_routing_put_audio_mixer),
3979 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
3980 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3981 msm_routing_put_audio_mixer),
3982 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
3983 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3984 msm_routing_put_audio_mixer),
3985 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
3986 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3987 msm_routing_put_audio_mixer),
3988 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
3989 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3990 msm_routing_put_audio_mixer),
3991 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
3992 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3993 msm_routing_put_audio_mixer),
3994 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
3995 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3996 msm_routing_put_audio_mixer),
3997 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
3998 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3999 msm_routing_put_audio_mixer),
4000 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
4001 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4002 msm_routing_put_audio_mixer),
4003 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
4004 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4005 msm_routing_put_audio_mixer),
4006 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
4007 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4008 msm_routing_put_audio_mixer),
4009 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
4010 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4011 msm_routing_put_audio_mixer),
4012 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
4013 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4014 msm_routing_put_audio_mixer),
4015 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
4016 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4017 msm_routing_put_audio_mixer),
4018 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
4019 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4020 msm_routing_put_audio_mixer),
4021 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
4022 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4023 msm_routing_put_audio_mixer),
4024 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
4025 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4026 msm_routing_put_audio_mixer),
4027 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
4028 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4029 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304030 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SPDIF_RX,
4031 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4032 msm_routing_put_audio_mixer),
4033 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SPDIF_RX,
4034 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4035 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304036};
4037
4038static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
4039 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4040 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4041 msm_routing_put_audio_mixer),
4042 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4043 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4044 msm_routing_put_audio_mixer),
4045 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4046 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4047 msm_routing_put_audio_mixer),
4048 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4049 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4050 msm_routing_put_audio_mixer),
4051 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4052 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4053 msm_routing_put_audio_mixer),
4054 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4055 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4056 msm_routing_put_audio_mixer),
4057 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4058 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4059 msm_routing_put_audio_mixer),
4060 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4061 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4062 msm_routing_put_audio_mixer),
4063 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4064 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4065 msm_routing_put_audio_mixer),
4066 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4067 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4068 msm_routing_put_audio_mixer),
4069 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4070 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4071 msm_routing_put_audio_mixer),
4072 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4073 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4074 msm_routing_put_audio_mixer),
4075 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4076 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4077 msm_routing_put_audio_mixer),
4078 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4079 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4080 msm_routing_put_audio_mixer),
4081 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4082 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4083 msm_routing_put_audio_mixer),
4084 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4085 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4086 msm_routing_put_audio_mixer),
4087};
4088
4089static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4090 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4091 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4092 msm_routing_put_audio_mixer),
4093 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4094 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4095 msm_routing_put_audio_mixer),
4096 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4097 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4098 msm_routing_put_audio_mixer),
4099 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4100 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4101 msm_routing_put_audio_mixer),
4102 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4103 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4104 msm_routing_put_audio_mixer),
4105 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4106 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4107 msm_routing_put_audio_mixer),
4108 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4109 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4110 msm_routing_put_audio_mixer),
4111 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4112 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4113 msm_routing_put_audio_mixer),
4114 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4115 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4116 msm_routing_put_audio_mixer),
4117 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4118 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4119 msm_routing_put_audio_mixer),
4120 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4121 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4122 msm_routing_put_audio_mixer),
4123 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4124 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4125 msm_routing_put_audio_mixer),
4126 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4127 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4128 msm_routing_put_audio_mixer),
4129 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4130 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4131 msm_routing_put_audio_mixer),
4132 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4133 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4134 msm_routing_put_audio_mixer),
4135 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4136 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4137 msm_routing_put_audio_mixer),
4138 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4139 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4140 msm_routing_put_audio_mixer),
4141 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4142 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4143 msm_routing_put_audio_mixer),
4144 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4145 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4146 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304147 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4148 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4149 msm_routing_put_audio_mixer),
4150 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4151 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4152 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304153};
4154
4155static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4156 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4157 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4158 msm_routing_put_audio_mixer),
4159 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4160 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4161 msm_routing_put_audio_mixer),
4162 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4163 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4164 msm_routing_put_audio_mixer),
4165 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4166 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4167 msm_routing_put_audio_mixer),
4168 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4169 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4170 msm_routing_put_audio_mixer),
4171 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4172 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4173 msm_routing_put_audio_mixer),
4174 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4175 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4176 msm_routing_put_audio_mixer),
4177 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4178 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4179 msm_routing_put_audio_mixer),
4180 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4181 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4182 msm_routing_put_audio_mixer),
4183 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4184 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4185 msm_routing_put_audio_mixer),
4186 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4187 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4188 msm_routing_put_audio_mixer),
4189 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4190 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4191 msm_routing_put_audio_mixer),
4192 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4193 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4194 msm_routing_put_audio_mixer),
4195 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4196 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4197 msm_routing_put_audio_mixer),
4198 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4199 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4200 msm_routing_put_audio_mixer),
4201 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4202 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4203 msm_routing_put_audio_mixer),
4204 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4205 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4206 msm_routing_put_audio_mixer),
4207 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4208 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4209 msm_routing_put_audio_mixer),
4210 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4211 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4212 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304213 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4214 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4215 msm_routing_put_audio_mixer),
4216 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4217 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4218 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304219};
4220
4221static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4222 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4223 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4224 msm_routing_put_audio_mixer),
4225 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4226 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4227 msm_routing_put_audio_mixer),
4228 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4229 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4230 msm_routing_put_audio_mixer),
4231 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4232 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4233 msm_routing_put_audio_mixer),
4234 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4235 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4236 msm_routing_put_audio_mixer),
4237 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4238 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4239 msm_routing_put_audio_mixer),
4240 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4241 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4242 msm_routing_put_audio_mixer),
4243 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4244 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4245 msm_routing_put_audio_mixer),
4246 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4247 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4248 msm_routing_put_audio_mixer),
4249 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4250 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4251 msm_routing_put_audio_mixer),
4252 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4253 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4254 msm_routing_put_audio_mixer),
4255 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4256 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4257 msm_routing_put_audio_mixer),
4258 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4259 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4260 msm_routing_put_audio_mixer),
4261 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4262 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4263 msm_routing_put_audio_mixer),
4264 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4265 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4266 msm_routing_put_audio_mixer),
4267 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4268 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4269 msm_routing_put_audio_mixer),
4270 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4271 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4272 msm_routing_put_audio_mixer),
4273 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4274 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4275 msm_routing_put_audio_mixer),
4276 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4277 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4278 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304279 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_MI2S_RX,
4280 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4281 msm_routing_put_audio_mixer),
4282 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_MI2S_RX,
4283 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4284 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304285};
4286
4287static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4288 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4289 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4290 msm_routing_put_audio_mixer),
4291 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4292 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4293 msm_routing_put_audio_mixer),
4294 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4295 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4296 msm_routing_put_audio_mixer),
4297 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4298 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4299 msm_routing_put_audio_mixer),
4300 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4301 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4302 msm_routing_put_audio_mixer),
4303 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4304 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4305 msm_routing_put_audio_mixer),
4306 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4307 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4308 msm_routing_put_audio_mixer),
4309 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4310 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4311 msm_routing_put_audio_mixer),
4312 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4313 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4314 msm_routing_put_audio_mixer),
4315 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4316 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4317 msm_routing_put_audio_mixer),
4318 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4319 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4320 msm_routing_put_audio_mixer),
4321 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4322 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4323 msm_routing_put_audio_mixer),
4324 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4325 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4326 msm_routing_put_audio_mixer),
4327 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4328 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4329 msm_routing_put_audio_mixer),
4330 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4331 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4332 msm_routing_put_audio_mixer),
4333 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4334 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4335 msm_routing_put_audio_mixer),
4336 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4337 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4338 msm_routing_put_audio_mixer),
4339 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4340 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4341 msm_routing_put_audio_mixer),
4342 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4343 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4344 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304345 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4346 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4347 msm_routing_put_audio_mixer),
4348 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4349 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4350 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304351};
4352
4353static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4354 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4355 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4356 msm_routing_put_audio_mixer),
4357 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4358 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4359 msm_routing_put_audio_mixer),
4360 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4361 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4362 msm_routing_put_audio_mixer),
4363 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4364 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4365 msm_routing_put_audio_mixer),
4366 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4367 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4368 msm_routing_put_audio_mixer),
4369 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4370 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4371 msm_routing_put_audio_mixer),
4372 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4373 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4374 msm_routing_put_audio_mixer),
4375 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4376 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4377 msm_routing_put_audio_mixer),
4378 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4379 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4380 msm_routing_put_audio_mixer),
4381 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4382 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4383 msm_routing_put_audio_mixer),
4384 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4385 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4386 msm_routing_put_audio_mixer),
4387 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4388 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4389 msm_routing_put_audio_mixer),
4390 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4391 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4392 msm_routing_put_audio_mixer),
4393 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4394 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4395 msm_routing_put_audio_mixer),
4396 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4397 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4398 msm_routing_put_audio_mixer),
4399 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4400 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4401 msm_routing_put_audio_mixer),
4402 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4403 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4404 msm_routing_put_audio_mixer),
4405 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4406 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4407 msm_routing_put_audio_mixer),
4408 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4409 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4410 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304411 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4412 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4413 msm_routing_put_audio_mixer),
4414 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4415 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4416 msm_routing_put_audio_mixer),
4417
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304418};
4419
4420static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4421 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4422 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4423 msm_routing_put_audio_mixer),
4424 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4425 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4426 msm_routing_put_audio_mixer),
4427 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4428 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4429 msm_routing_put_audio_mixer),
4430 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4431 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4432 msm_routing_put_audio_mixer),
4433 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4434 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4435 msm_routing_put_audio_mixer),
4436 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4437 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4438 msm_routing_put_audio_mixer),
4439 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4440 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4441 msm_routing_put_audio_mixer),
4442 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4443 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4444 msm_routing_put_audio_mixer),
4445 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4446 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4447 msm_routing_put_audio_mixer),
4448 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4449 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4450 msm_routing_put_audio_mixer),
4451 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4452 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4453 msm_routing_put_audio_mixer),
4454 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4455 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4456 msm_routing_put_audio_mixer),
4457 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4458 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4459 msm_routing_put_audio_mixer),
4460 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4461 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4462 msm_routing_put_audio_mixer),
4463 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4464 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4465 msm_routing_put_audio_mixer),
4466 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4467 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4468 msm_routing_put_audio_mixer),
4469 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4470 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4471 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304472 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4473 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4474 msm_routing_put_audio_mixer),
4475 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4476 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4477 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304478};
4479
4480static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4481 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4482 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4483 msm_routing_put_audio_mixer),
4484};
4485
4486static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4487 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4488 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4489 msm_routing_put_audio_mixer),
4490 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4491 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4492 msm_routing_put_audio_mixer),
4493 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4494 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4495 msm_routing_put_audio_mixer),
4496 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4497 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4498 msm_routing_put_audio_mixer),
4499 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4500 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4501 msm_routing_put_audio_mixer),
4502 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4503 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4504 msm_routing_put_audio_mixer),
4505 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4506 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4507 msm_routing_put_audio_mixer),
4508 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4509 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4510 msm_routing_put_audio_mixer),
4511 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4512 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4513 msm_routing_put_audio_mixer),
4514 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4515 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4516 msm_routing_put_audio_mixer),
4517 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4518 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4519 msm_routing_put_audio_mixer),
4520 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4521 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4522 msm_routing_put_audio_mixer),
4523 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4524 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4525 msm_routing_put_audio_mixer),
4526 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4527 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4528 msm_routing_put_audio_mixer),
4529 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4530 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4531 msm_routing_put_audio_mixer),
4532 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4533 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4534 msm_routing_put_audio_mixer),
4535 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4536 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4537 msm_routing_put_audio_mixer),
4538 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4539 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4540 msm_routing_put_audio_mixer),
4541 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4542 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4543 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304544 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4545 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4546 msm_routing_put_audio_mixer),
4547 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4548 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4549 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304550};
4551
4552static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4553 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4554 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4555 msm_routing_put_audio_mixer),
4556 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4557 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4558 msm_routing_put_audio_mixer),
4559 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4560 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4561 msm_routing_put_audio_mixer),
4562 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4563 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4564 msm_routing_put_audio_mixer),
4565 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4566 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4567 msm_routing_put_audio_mixer),
4568 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4569 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4570 msm_routing_put_audio_mixer),
4571 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4572 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4573 msm_routing_put_audio_mixer),
4574 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4575 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4576 msm_routing_put_audio_mixer),
4577 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4578 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4579 msm_routing_put_audio_mixer),
4580 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4581 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4582 msm_routing_put_audio_mixer),
4583 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4584 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4585 msm_routing_put_audio_mixer),
4586 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4587 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4588 msm_routing_put_audio_mixer),
4589 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4590 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4591 msm_routing_put_audio_mixer),
4592 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4593 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4594 msm_routing_put_audio_mixer),
4595 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4596 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4597 msm_routing_put_audio_mixer),
4598 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4599 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4600 msm_routing_put_audio_mixer),
4601 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4602 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4603 msm_routing_put_audio_mixer),
4604 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4605 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4606 msm_routing_put_audio_mixer),
4607 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4608 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4609 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304610 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_MI2S_RX,
4611 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4612 msm_routing_put_audio_mixer),
4613 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_MI2S_RX,
4614 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4615 msm_routing_put_audio_mixer),
4616
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304617};
4618
4619static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4620 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4621 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4622 msm_routing_put_audio_mixer),
4623 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4624 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4625 msm_routing_put_audio_mixer),
4626 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4627 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4628 msm_routing_put_audio_mixer),
4629 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4630 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4631 msm_routing_put_audio_mixer),
4632 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4633 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4634 msm_routing_put_audio_mixer),
4635 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4636 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4637 msm_routing_put_audio_mixer),
4638 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4639 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4640 msm_routing_put_audio_mixer),
4641 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4642 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4643 msm_routing_put_audio_mixer),
4644 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4645 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4646 msm_routing_put_audio_mixer),
4647 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4648 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4649 msm_routing_put_audio_mixer),
4650 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4651 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4652 msm_routing_put_audio_mixer),
4653 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4654 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4655 msm_routing_put_audio_mixer),
4656 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4657 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4658 msm_routing_put_audio_mixer),
4659 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4660 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4661 msm_routing_put_audio_mixer),
4662 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4663 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4664 msm_routing_put_audio_mixer),
4665 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4666 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4667 msm_routing_put_audio_mixer),
4668};
4669
4670static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4671 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4672 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4673 msm_routing_put_audio_mixer),
4674 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4675 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4676 msm_routing_put_audio_mixer),
4677 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4678 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4679 msm_routing_put_audio_mixer),
4680 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4681 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4682 msm_routing_put_audio_mixer),
4683 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4684 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4685 msm_routing_put_audio_mixer),
4686 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4687 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4688 msm_routing_put_audio_mixer),
4689 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4690 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4691 msm_routing_put_audio_mixer),
4692 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4693 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4694 msm_routing_put_audio_mixer),
4695 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4696 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4697 msm_routing_put_audio_mixer),
4698 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4699 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4700 msm_routing_put_audio_mixer),
4701 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4702 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4703 msm_routing_put_audio_mixer),
4704 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4705 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4706 msm_routing_put_audio_mixer),
4707 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4708 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4709 msm_routing_put_audio_mixer),
4710 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4711 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4712 msm_routing_put_audio_mixer),
4713 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4714 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4715 msm_routing_put_audio_mixer),
4716 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4717 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4718 msm_routing_put_audio_mixer),
4719};
4720
4721static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4722 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4723 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4724 msm_routing_put_audio_mixer),
4725 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4726 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4727 msm_routing_put_audio_mixer),
4728 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4729 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4730 msm_routing_put_audio_mixer),
4731 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4732 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4733 msm_routing_put_audio_mixer),
4734 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4735 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4736 msm_routing_put_audio_mixer),
4737 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4738 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4739 msm_routing_put_audio_mixer),
4740 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4741 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4742 msm_routing_put_audio_mixer),
4743 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4744 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4745 msm_routing_put_audio_mixer),
4746 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4747 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4748 msm_routing_put_audio_mixer),
4749 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4750 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4751 msm_routing_put_audio_mixer),
4752 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4753 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4754 msm_routing_put_audio_mixer),
4755 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4756 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4757 msm_routing_put_audio_mixer),
4758 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4759 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4760 msm_routing_put_audio_mixer),
4761 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4762 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4763 msm_routing_put_audio_mixer),
4764 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4765 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4766 msm_routing_put_audio_mixer),
4767 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4768 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4769 msm_routing_put_audio_mixer),
4770 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4771 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4772 msm_routing_put_audio_mixer),
4773 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4774 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4775 msm_routing_put_audio_mixer),
4776 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4777 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4778 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304779 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_HDMI_RX,
4780 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4781 msm_routing_put_audio_mixer),
4782 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_HDMI_RX,
4783 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4784 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304785};
4786
4787static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4788 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4789 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4790 msm_routing_put_audio_mixer),
4791 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4792 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4793 msm_routing_put_audio_mixer),
4794 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4795 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4796 msm_routing_put_audio_mixer),
4797 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4798 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4799 msm_routing_put_audio_mixer),
4800 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4801 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4802 msm_routing_put_audio_mixer),
4803 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4804 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4805 msm_routing_put_audio_mixer),
4806 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4807 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4808 msm_routing_put_audio_mixer),
4809 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4810 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4811 msm_routing_put_audio_mixer),
4812 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4813 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4814 msm_routing_put_audio_mixer),
4815 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4816 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4817 msm_routing_put_audio_mixer),
4818 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4819 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4820 msm_routing_put_audio_mixer),
4821 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4822 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4823 msm_routing_put_audio_mixer),
4824 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4825 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4826 msm_routing_put_audio_mixer),
4827 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4828 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4829 msm_routing_put_audio_mixer),
4830 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4831 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4832 msm_routing_put_audio_mixer),
4833 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4834 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4835 msm_routing_put_audio_mixer),
4836};
4837
4838 /* incall music delivery mixer */
4839static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4840 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4841 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4842 msm_routing_put_audio_mixer),
4843 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4844 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4845 msm_routing_put_audio_mixer),
4846 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4847 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4848 msm_routing_put_audio_mixer),
4849 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4850 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4851 msm_routing_put_audio_mixer),
4852};
4853
4854static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4855 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4856 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4857 msm_routing_put_audio_mixer),
4858 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4859 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4860 msm_routing_put_audio_mixer),
4861 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4862 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4863 msm_routing_put_audio_mixer),
4864 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4865 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4866 msm_routing_put_audio_mixer),
4867};
4868
4869static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4870 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4871 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4872 msm_routing_put_audio_mixer),
4873 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4874 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4875 msm_routing_put_audio_mixer),
4876 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4877 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4878 msm_routing_put_audio_mixer),
4879 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4880 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4881 msm_routing_put_audio_mixer),
4882};
4883
4884static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
4885 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4886 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4887 msm_routing_put_audio_mixer),
4888 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4889 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4890 msm_routing_put_audio_mixer),
4891 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4892 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4893 msm_routing_put_audio_mixer),
4894 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4895 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4896 msm_routing_put_audio_mixer),
4897 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4898 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4899 msm_routing_put_audio_mixer),
4900 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4901 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4902 msm_routing_put_audio_mixer),
4903 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4904 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4905 msm_routing_put_audio_mixer),
4906 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4907 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4908 msm_routing_put_audio_mixer),
4909 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4910 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4911 msm_routing_put_audio_mixer),
4912 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4913 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4914 msm_routing_put_audio_mixer),
4915 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4916 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4917 msm_routing_put_audio_mixer),
4918 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4919 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4920 msm_routing_put_audio_mixer),
4921 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4922 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4923 msm_routing_put_audio_mixer),
4924 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4925 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4926 msm_routing_put_audio_mixer),
4927 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4928 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4929 msm_routing_put_audio_mixer),
4930 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4931 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4932 msm_routing_put_audio_mixer),
4933};
4934
4935static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
4936 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4937 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4938 msm_routing_put_audio_mixer),
4939 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4940 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4941 msm_routing_put_audio_mixer),
4942 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4943 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4944 msm_routing_put_audio_mixer),
4945 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4946 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4947 msm_routing_put_audio_mixer),
4948 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4949 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4950 msm_routing_put_audio_mixer),
4951 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4952 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4953 msm_routing_put_audio_mixer),
4954 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4955 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4956 msm_routing_put_audio_mixer),
4957 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4958 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4959 msm_routing_put_audio_mixer),
4960 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4961 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4962 msm_routing_put_audio_mixer),
4963 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4964 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4965 msm_routing_put_audio_mixer),
4966 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4967 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4968 msm_routing_put_audio_mixer),
4969 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4970 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4971 msm_routing_put_audio_mixer),
4972 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4973 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4974 msm_routing_put_audio_mixer),
4975 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4976 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4977 msm_routing_put_audio_mixer),
4978 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4979 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4980 msm_routing_put_audio_mixer),
4981 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4982 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4983 msm_routing_put_audio_mixer),
4984};
4985
4986static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
4987 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
4988 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4989 msm_routing_put_audio_mixer),
4990 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
4991 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4992 msm_routing_put_audio_mixer),
4993 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
4994 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4995 msm_routing_put_audio_mixer),
4996 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
4997 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4998 msm_routing_put_audio_mixer),
4999 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
5000 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5001 msm_routing_put_audio_mixer),
5002 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
5003 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5004 msm_routing_put_audio_mixer),
5005 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
5006 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5007 msm_routing_put_audio_mixer),
5008 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
5009 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5010 msm_routing_put_audio_mixer),
5011 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
5012 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5013 msm_routing_put_audio_mixer),
5014 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
5015 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5016 msm_routing_put_audio_mixer),
5017 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
5018 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5019 msm_routing_put_audio_mixer),
5020 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
5021 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5022 msm_routing_put_audio_mixer),
5023 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
5024 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5025 msm_routing_put_audio_mixer),
5026 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
5027 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5028 msm_routing_put_audio_mixer),
5029 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
5030 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5031 msm_routing_put_audio_mixer),
5032 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
5033 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5034 msm_routing_put_audio_mixer),
5035};
5036
5037static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
5038 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5039 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5040 msm_routing_put_audio_mixer),
5041 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5042 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5043 msm_routing_put_audio_mixer),
5044 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5045 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5046 msm_routing_put_audio_mixer),
5047 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5048 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5049 msm_routing_put_audio_mixer),
5050 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5051 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5052 msm_routing_put_audio_mixer),
5053 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5054 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5055 msm_routing_put_audio_mixer),
5056 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5057 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5058 msm_routing_put_audio_mixer),
5059 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5060 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5061 msm_routing_put_audio_mixer),
5062 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5063 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5064 msm_routing_put_audio_mixer),
5065 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5066 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5067 msm_routing_put_audio_mixer),
5068 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5069 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5070 msm_routing_put_audio_mixer),
5071 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5072 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5073 msm_routing_put_audio_mixer),
5074 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5075 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5076 msm_routing_put_audio_mixer),
5077 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5078 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5079 msm_routing_put_audio_mixer),
5080 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5081 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5082 msm_routing_put_audio_mixer),
5083 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5084 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5085 msm_routing_put_audio_mixer),
5086 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5087 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5088 msm_routing_put_audio_mixer),
5089 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5090 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5091 msm_routing_put_audio_mixer),
5092 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5093 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5094 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305095 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5096 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5097 msm_routing_put_audio_mixer),
5098 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5099 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5100 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305101};
5102
5103static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
5104 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5105 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5106 msm_routing_put_audio_mixer),
5107 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5108 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5109 msm_routing_put_audio_mixer),
5110 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5111 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5112 msm_routing_put_audio_mixer),
5113 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5114 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5115 msm_routing_put_audio_mixer),
5116 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5117 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5118 msm_routing_put_audio_mixer),
5119 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5120 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5121 msm_routing_put_audio_mixer),
5122 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5123 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5124 msm_routing_put_audio_mixer),
5125 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5126 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5127 msm_routing_put_audio_mixer),
5128 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5129 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5130 msm_routing_put_audio_mixer),
5131 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5132 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5133 msm_routing_put_audio_mixer),
5134 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5135 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5136 msm_routing_put_audio_mixer),
5137 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5138 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5139 msm_routing_put_audio_mixer),
5140 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5141 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5142 msm_routing_put_audio_mixer),
5143 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5144 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5145 msm_routing_put_audio_mixer),
5146 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5147 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5148 msm_routing_put_audio_mixer),
5149 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5150 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5151 msm_routing_put_audio_mixer),
5152};
5153
5154static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5155 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5156 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5157 msm_routing_put_audio_mixer),
5158 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5159 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5160 msm_routing_put_audio_mixer),
5161 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5162 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5163 msm_routing_put_audio_mixer),
5164 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5165 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5166 msm_routing_put_audio_mixer),
5167 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5168 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5169 msm_routing_put_audio_mixer),
5170 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5171 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5172 msm_routing_put_audio_mixer),
5173 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5174 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5175 msm_routing_put_audio_mixer),
5176 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5177 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5178 msm_routing_put_audio_mixer),
5179 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5180 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5181 msm_routing_put_audio_mixer),
5182 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5183 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5184 msm_routing_put_audio_mixer),
5185 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5186 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5187 msm_routing_put_audio_mixer),
5188 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5189 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5190 msm_routing_put_audio_mixer),
5191 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5192 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5193 msm_routing_put_audio_mixer),
5194 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5195 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5196 msm_routing_put_audio_mixer),
5197 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5198 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5199 msm_routing_put_audio_mixer),
5200 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5201 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5202 msm_routing_put_audio_mixer),
5203 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5204 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5205 msm_routing_put_audio_mixer),
5206 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5207 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5208 msm_routing_put_audio_mixer),
5209 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5210 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5211 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305212 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_FM_RX,
5213 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5214 msm_routing_put_audio_mixer),
5215 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_FM_RX,
5216 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5217 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305218};
5219
5220static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5221 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5222 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5223 msm_routing_put_audio_mixer),
5224 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5225 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5226 msm_routing_put_audio_mixer),
5227 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5228 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5229 msm_routing_put_audio_mixer),
5230 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5231 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5232 msm_routing_put_audio_mixer),
5233 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5234 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5235 msm_routing_put_audio_mixer),
5236 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5237 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5238 msm_routing_put_audio_mixer),
5239 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5240 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5241 msm_routing_put_audio_mixer),
5242 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5243 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5244 msm_routing_put_audio_mixer),
5245 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5246 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5247 msm_routing_put_audio_mixer),
5248 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5249 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5250 msm_routing_put_audio_mixer),
5251 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5252 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5253 msm_routing_put_audio_mixer),
5254 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5255 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5256 msm_routing_put_audio_mixer),
5257 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5258 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5259 msm_routing_put_audio_mixer),
5260 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5261 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5262 msm_routing_put_audio_mixer),
5263 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5264 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5265 msm_routing_put_audio_mixer),
5266 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5267 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5268 msm_routing_put_audio_mixer),
5269 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5270 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5271 msm_routing_put_audio_mixer),
5272 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5273 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5274 msm_routing_put_audio_mixer),
5275 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5276 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5277 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305278 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AFE_PCM_RX,
5279 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5280 msm_routing_put_audio_mixer),
5281 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AFE_PCM_RX,
5282 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5283 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305284};
5285
5286static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5287 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5288 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5289 msm_routing_put_audio_mixer),
5290 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5291 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5292 msm_routing_put_audio_mixer),
5293 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5294 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5295 msm_routing_put_audio_mixer),
5296 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5297 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5298 msm_routing_put_audio_mixer),
5299 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5300 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5301 msm_routing_put_audio_mixer),
5302 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5303 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5304 msm_routing_put_audio_mixer),
5305 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5306 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5307 msm_routing_put_audio_mixer),
5308 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5309 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5310 msm_routing_put_audio_mixer),
5311 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5312 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5313 msm_routing_put_audio_mixer),
5314 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5315 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5316 msm_routing_put_audio_mixer),
5317 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5318 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5319 msm_routing_put_audio_mixer),
5320 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5321 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5322 msm_routing_put_audio_mixer),
5323 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5324 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5325 msm_routing_put_audio_mixer),
5326 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5327 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5328 msm_routing_put_audio_mixer),
5329 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5330 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5331 msm_routing_put_audio_mixer),
5332 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5333 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5334 msm_routing_put_audio_mixer),
5335 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5336 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5337 msm_routing_put_audio_mixer),
5338 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5339 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5340 msm_routing_put_audio_mixer),
5341 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5342 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5343 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305344 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AUXPCM_RX,
5345 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5346 msm_routing_put_audio_mixer),
5347 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AUXPCM_RX,
5348 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5349 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305350};
5351
5352static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5353 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5354 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5355 msm_routing_put_audio_mixer),
5356 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5357 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5358 msm_routing_put_audio_mixer),
5359 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5360 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5361 msm_routing_put_audio_mixer),
5362 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5363 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5364 msm_routing_put_audio_mixer),
5365 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5366 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5367 msm_routing_put_audio_mixer),
5368 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5369 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5370 msm_routing_put_audio_mixer),
5371 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5372 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5373 msm_routing_put_audio_mixer),
5374 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5375 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5376 msm_routing_put_audio_mixer),
5377 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5378 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5379 msm_routing_put_audio_mixer),
5380 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5381 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5382 msm_routing_put_audio_mixer),
5383 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5384 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5385 msm_routing_put_audio_mixer),
5386 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5387 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5388 msm_routing_put_audio_mixer),
5389 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5390 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5391 msm_routing_put_audio_mixer),
5392 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5393 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5394 msm_routing_put_audio_mixer),
5395 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5396 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5397 msm_routing_put_audio_mixer),
5398 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5399 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5400 msm_routing_put_audio_mixer),
5401 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5402 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5403 msm_routing_put_audio_mixer),
5404 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5405 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5406 msm_routing_put_audio_mixer),
5407 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5408 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5409 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305410 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5411 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5412 msm_routing_put_audio_mixer),
5413 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5414 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5415 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305416};
5417
5418static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5419 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5420 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5421 msm_routing_put_audio_mixer),
5422 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5423 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5424 msm_routing_put_audio_mixer),
5425 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5426 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5427 msm_routing_put_audio_mixer),
5428 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5429 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5430 msm_routing_put_audio_mixer),
5431 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5432 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5433 msm_routing_put_audio_mixer),
5434 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5435 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5436 msm_routing_put_audio_mixer),
5437 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5438 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5439 msm_routing_put_audio_mixer),
5440 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5441 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5442 msm_routing_put_audio_mixer),
5443 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5444 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5445 msm_routing_put_audio_mixer),
5446 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5447 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5448 msm_routing_put_audio_mixer),
5449 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5450 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5451 msm_routing_put_audio_mixer),
5452 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5453 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5454 msm_routing_put_audio_mixer),
5455 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5456 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5457 msm_routing_put_audio_mixer),
5458 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5459 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5460 msm_routing_put_audio_mixer),
5461 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5462 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5463 msm_routing_put_audio_mixer),
5464 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5465 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5466 msm_routing_put_audio_mixer),
5467};
5468
5469static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5470 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5471 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5472 msm_routing_put_audio_mixer),
5473 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5474 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5475 msm_routing_put_audio_mixer),
5476 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5477 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5478 msm_routing_put_audio_mixer),
5479 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5480 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5481 msm_routing_put_audio_mixer),
5482 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5483 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5484 msm_routing_put_audio_mixer),
5485 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5486 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5487 msm_routing_put_audio_mixer),
5488 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5489 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5490 msm_routing_put_audio_mixer),
5491 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5492 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5493 msm_routing_put_audio_mixer),
5494 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5495 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5496 msm_routing_put_audio_mixer),
5497 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5498 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5499 msm_routing_put_audio_mixer),
5500 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5501 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5502 msm_routing_put_audio_mixer),
5503 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5504 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5505 msm_routing_put_audio_mixer),
5506 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5507 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5508 msm_routing_put_audio_mixer),
5509 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5510 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5511 msm_routing_put_audio_mixer),
5512 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5513 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5514 msm_routing_put_audio_mixer),
5515 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5516 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5517 msm_routing_put_audio_mixer),
5518};
5519
Rohit Kumara5077932017-09-10 22:05:05 +05305520static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5521 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5522 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5523 msm_routing_put_audio_mixer),
5524 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5525 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5526 msm_routing_put_audio_mixer),
5527 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5528 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5529 msm_routing_put_audio_mixer),
5530 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5531 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5532 msm_routing_put_audio_mixer),
5533 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5534 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5535 msm_routing_put_audio_mixer),
5536 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5537 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5538 msm_routing_put_audio_mixer),
5539 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5540 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5541 msm_routing_put_audio_mixer),
5542 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5543 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5544 msm_routing_put_audio_mixer),
5545 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5546 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5547 msm_routing_put_audio_mixer),
5548 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5549 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5550 msm_routing_put_audio_mixer),
5551 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5552 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5553 msm_routing_put_audio_mixer),
5554 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5555 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5556 msm_routing_put_audio_mixer),
5557 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5558 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5559 msm_routing_put_audio_mixer),
5560 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5561 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5562 msm_routing_put_audio_mixer),
5563 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5564 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5565 msm_routing_put_audio_mixer),
5566 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5567 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5568 msm_routing_put_audio_mixer),
5569};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305570static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5571 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5572 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5573 msm_routing_put_audio_mixer),
5574 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5575 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5576 msm_routing_put_audio_mixer),
5577 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5578 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5579 msm_routing_put_audio_mixer),
5580 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5581 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5582 msm_routing_put_audio_mixer),
5583 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5584 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5585 msm_routing_put_audio_mixer),
5586 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5587 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5588 msm_routing_put_audio_mixer),
5589 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5590 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5591 msm_routing_put_audio_mixer),
5592 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5593 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5594 msm_routing_put_audio_mixer),
5595 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5596 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5597 msm_routing_put_audio_mixer),
5598 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5599 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5600 msm_routing_put_audio_mixer),
5601 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5602 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5603 msm_routing_put_audio_mixer),
5604 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5605 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5606 msm_routing_put_audio_mixer),
5607 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5608 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5609 msm_routing_put_audio_mixer),
5610 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5611 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5612 msm_routing_put_audio_mixer),
5613 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5614 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5615 msm_routing_put_audio_mixer),
5616 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5617 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5618 msm_routing_put_audio_mixer),
5619};
5620
5621static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5622 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5623 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5624 msm_routing_put_audio_mixer),
5625 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5626 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5627 msm_routing_put_audio_mixer),
5628 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5629 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5630 msm_routing_put_audio_mixer),
5631 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5632 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5633 msm_routing_put_audio_mixer),
5634 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5635 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5636 msm_routing_put_audio_mixer),
5637 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5638 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5639 msm_routing_put_audio_mixer),
5640 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5641 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5642 msm_routing_put_audio_mixer),
5643 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5644 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5645 msm_routing_put_audio_mixer),
5646 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5647 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5648 msm_routing_put_audio_mixer),
5649 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5650 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5651 msm_routing_put_audio_mixer),
5652 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5653 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5654 msm_routing_put_audio_mixer),
5655 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5656 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5657 msm_routing_put_audio_mixer),
5658 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5659 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5660 msm_routing_put_audio_mixer),
5661 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5662 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5663 msm_routing_put_audio_mixer),
5664 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5665 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5666 msm_routing_put_audio_mixer),
5667 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5668 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5669 msm_routing_put_audio_mixer),
5670};
5671
5672static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5673 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5674 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5675 msm_routing_put_audio_mixer),
5676 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5677 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5678 msm_routing_put_audio_mixer),
5679 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5680 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5681 msm_routing_put_audio_mixer),
5682 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5683 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5684 msm_routing_put_audio_mixer),
5685 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5686 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5687 msm_routing_put_audio_mixer),
5688 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5689 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5690 msm_routing_put_audio_mixer),
5691 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5692 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5693 msm_routing_put_audio_mixer),
5694 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5695 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5696 msm_routing_put_audio_mixer),
5697 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5698 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5699 msm_routing_put_audio_mixer),
5700 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5701 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5702 msm_routing_put_audio_mixer),
5703 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5704 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5705 msm_routing_put_audio_mixer),
5706 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5707 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5708 msm_routing_put_audio_mixer),
5709 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5710 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5711 msm_routing_put_audio_mixer),
5712 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5713 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5714 msm_routing_put_audio_mixer),
5715 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5716 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5717 msm_routing_put_audio_mixer),
5718 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5719 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5720 msm_routing_put_audio_mixer),
5721};
5722
5723static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5724 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5725 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5726 msm_routing_put_audio_mixer),
5727 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5728 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5729 msm_routing_put_audio_mixer),
5730 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5731 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5732 msm_routing_put_audio_mixer),
5733 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5734 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5735 msm_routing_put_audio_mixer),
5736 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5737 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5738 msm_routing_put_audio_mixer),
5739 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5740 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5741 msm_routing_put_audio_mixer),
5742 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5743 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5744 msm_routing_put_audio_mixer),
5745 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5746 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5747 msm_routing_put_audio_mixer),
5748 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5749 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5750 msm_routing_put_audio_mixer),
5751 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5752 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5753 msm_routing_put_audio_mixer),
5754 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5755 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5756 msm_routing_put_audio_mixer),
5757 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5758 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5759 msm_routing_put_audio_mixer),
5760 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5761 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5762 msm_routing_put_audio_mixer),
5763 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5764 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5765 msm_routing_put_audio_mixer),
5766 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5767 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5768 msm_routing_put_audio_mixer),
5769 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5770 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5771 msm_routing_put_audio_mixer),
5772};
5773
5774static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5775 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5776 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5777 msm_routing_put_audio_mixer),
5778 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5779 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5780 msm_routing_put_audio_mixer),
5781 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5782 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5783 msm_routing_put_audio_mixer),
5784 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5785 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5786 msm_routing_put_audio_mixer),
5787 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5788 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5789 msm_routing_put_audio_mixer),
5790 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5791 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5792 msm_routing_put_audio_mixer),
5793 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5794 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5795 msm_routing_put_audio_mixer),
5796 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5797 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5798 msm_routing_put_audio_mixer),
5799 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5800 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5801 msm_routing_put_audio_mixer),
5802 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5803 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5804 msm_routing_put_audio_mixer),
5805 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5806 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5807 msm_routing_put_audio_mixer),
5808 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5809 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5810 msm_routing_put_audio_mixer),
5811 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5812 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5813 msm_routing_put_audio_mixer),
5814 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5815 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5816 msm_routing_put_audio_mixer),
5817 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5818 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5819 msm_routing_put_audio_mixer),
5820 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5821 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5822 msm_routing_put_audio_mixer),
5823};
5824
5825static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5826 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5827 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5828 msm_routing_put_audio_mixer),
5829 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5830 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5831 msm_routing_put_audio_mixer),
5832 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5833 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5834 msm_routing_put_audio_mixer),
5835 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5836 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5837 msm_routing_put_audio_mixer),
5838 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5839 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5840 msm_routing_put_audio_mixer),
5841 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5842 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5843 msm_routing_put_audio_mixer),
5844 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5845 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5846 msm_routing_put_audio_mixer),
5847 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5848 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5849 msm_routing_put_audio_mixer),
5850 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5851 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5852 msm_routing_put_audio_mixer),
5853 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5854 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5855 msm_routing_put_audio_mixer),
5856 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5857 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5858 msm_routing_put_audio_mixer),
5859 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5860 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5861 msm_routing_put_audio_mixer),
5862 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5863 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5864 msm_routing_put_audio_mixer),
5865 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5866 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5867 msm_routing_put_audio_mixer),
5868 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5869 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5870 msm_routing_put_audio_mixer),
5871 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5872 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5873 msm_routing_put_audio_mixer),
5874};
5875
5876static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
5877 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5878 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5879 msm_routing_put_audio_mixer),
5880 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5881 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5882 msm_routing_put_audio_mixer),
5883 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5884 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5885 msm_routing_put_audio_mixer),
5886 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5887 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5888 msm_routing_put_audio_mixer),
5889 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5890 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5891 msm_routing_put_audio_mixer),
5892 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5893 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5894 msm_routing_put_audio_mixer),
5895 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5896 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5897 msm_routing_put_audio_mixer),
5898 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5899 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5900 msm_routing_put_audio_mixer),
5901 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5902 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5903 msm_routing_put_audio_mixer),
5904 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5905 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5906 msm_routing_put_audio_mixer),
5907 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5908 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5909 msm_routing_put_audio_mixer),
5910 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5911 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5912 msm_routing_put_audio_mixer),
5913 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5914 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5915 msm_routing_put_audio_mixer),
5916 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5917 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5918 msm_routing_put_audio_mixer),
5919 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5920 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5921 msm_routing_put_audio_mixer),
5922 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5923 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5924 msm_routing_put_audio_mixer),
5925};
5926
5927static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
5928 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5929 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5930 msm_routing_put_audio_mixer),
5931 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5932 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5933 msm_routing_put_audio_mixer),
5934 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5935 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5936 msm_routing_put_audio_mixer),
5937 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5938 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5939 msm_routing_put_audio_mixer),
5940 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5941 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5942 msm_routing_put_audio_mixer),
5943 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5944 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5945 msm_routing_put_audio_mixer),
5946 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5947 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5948 msm_routing_put_audio_mixer),
5949 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5950 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5951 msm_routing_put_audio_mixer),
5952 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5953 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5954 msm_routing_put_audio_mixer),
5955 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5956 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5957 msm_routing_put_audio_mixer),
5958 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5959 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5960 msm_routing_put_audio_mixer),
5961 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5962 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5963 msm_routing_put_audio_mixer),
5964 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5965 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5966 msm_routing_put_audio_mixer),
5967 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5968 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5969 msm_routing_put_audio_mixer),
5970 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5971 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5972 msm_routing_put_audio_mixer),
5973 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5974 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5975 msm_routing_put_audio_mixer),
5976};
5977
5978static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
5979 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5980 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5981 msm_routing_put_audio_mixer),
5982 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5983 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5984 msm_routing_put_audio_mixer),
5985 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5986 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5987 msm_routing_put_audio_mixer),
5988 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5989 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5990 msm_routing_put_audio_mixer),
5991 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5992 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5993 msm_routing_put_audio_mixer),
5994 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5995 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5996 msm_routing_put_audio_mixer),
5997 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5998 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5999 msm_routing_put_audio_mixer),
6000 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6001 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6002 msm_routing_put_audio_mixer),
6003 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6004 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6005 msm_routing_put_audio_mixer),
6006 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6007 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6008 msm_routing_put_audio_mixer),
6009 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6010 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6011 msm_routing_put_audio_mixer),
6012 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6013 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6014 msm_routing_put_audio_mixer),
6015 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6016 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6017 msm_routing_put_audio_mixer),
6018 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6019 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6020 msm_routing_put_audio_mixer),
6021 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6022 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6023 msm_routing_put_audio_mixer),
6024 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6025 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6026 msm_routing_put_audio_mixer),
6027};
6028
6029static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
6030 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6031 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6032 msm_routing_put_audio_mixer),
6033 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6034 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6035 msm_routing_put_audio_mixer),
6036 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6037 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6038 msm_routing_put_audio_mixer),
6039 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6040 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6041 msm_routing_put_audio_mixer),
6042 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6043 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6044 msm_routing_put_audio_mixer),
6045 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6046 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6047 msm_routing_put_audio_mixer),
6048 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6049 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6050 msm_routing_put_audio_mixer),
6051 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6052 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6053 msm_routing_put_audio_mixer),
6054 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6055 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6056 msm_routing_put_audio_mixer),
6057 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6058 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6059 msm_routing_put_audio_mixer),
6060 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6061 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6062 msm_routing_put_audio_mixer),
6063 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6064 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6065 msm_routing_put_audio_mixer),
6066 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6067 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6068 msm_routing_put_audio_mixer),
6069 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6070 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6071 msm_routing_put_audio_mixer),
6072 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6073 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6074 msm_routing_put_audio_mixer),
6075 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6076 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6077 msm_routing_put_audio_mixer),
6078};
6079
6080static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
6081 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6082 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6083 msm_routing_put_audio_mixer),
6084 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6085 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6086 msm_routing_put_audio_mixer),
6087 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6088 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6089 msm_routing_put_audio_mixer),
6090 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6091 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6092 msm_routing_put_audio_mixer),
6093 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6094 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6095 msm_routing_put_audio_mixer),
6096 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6097 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6098 msm_routing_put_audio_mixer),
6099 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6100 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6101 msm_routing_put_audio_mixer),
6102 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6103 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6104 msm_routing_put_audio_mixer),
6105 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6106 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6107 msm_routing_put_audio_mixer),
6108 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6109 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6110 msm_routing_put_audio_mixer),
6111 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6112 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6113 msm_routing_put_audio_mixer),
6114 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6115 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6116 msm_routing_put_audio_mixer),
6117 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6118 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6119 msm_routing_put_audio_mixer),
6120 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6121 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6122 msm_routing_put_audio_mixer),
6123 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6124 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6125 msm_routing_put_audio_mixer),
6126 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6127 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6128 msm_routing_put_audio_mixer),
6129};
6130
6131static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
6132 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6133 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6134 msm_routing_put_audio_mixer),
6135 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6136 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6137 msm_routing_put_audio_mixer),
6138 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6139 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6140 msm_routing_put_audio_mixer),
6141 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6142 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6143 msm_routing_put_audio_mixer),
6144 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6145 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6146 msm_routing_put_audio_mixer),
6147 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6148 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6149 msm_routing_put_audio_mixer),
6150 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6151 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6152 msm_routing_put_audio_mixer),
6153 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6154 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6155 msm_routing_put_audio_mixer),
6156 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6157 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6158 msm_routing_put_audio_mixer),
6159 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6160 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6161 msm_routing_put_audio_mixer),
6162 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6163 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6164 msm_routing_put_audio_mixer),
6165 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6166 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6167 msm_routing_put_audio_mixer),
6168 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6169 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6170 msm_routing_put_audio_mixer),
6171 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6172 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6173 msm_routing_put_audio_mixer),
6174 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6175 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6176 msm_routing_put_audio_mixer),
6177 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6178 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6179 msm_routing_put_audio_mixer),
6180};
6181
6182static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
6183 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6184 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6185 msm_routing_put_audio_mixer),
6186 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6187 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6188 msm_routing_put_audio_mixer),
6189 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6190 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6191 msm_routing_put_audio_mixer),
6192 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6193 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6194 msm_routing_put_audio_mixer),
6195 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6196 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6197 msm_routing_put_audio_mixer),
6198 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6199 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6200 msm_routing_put_audio_mixer),
6201 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6202 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6203 msm_routing_put_audio_mixer),
6204 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6205 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6206 msm_routing_put_audio_mixer),
6207 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6208 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6209 msm_routing_put_audio_mixer),
6210 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6211 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6212 msm_routing_put_audio_mixer),
6213 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6214 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6215 msm_routing_put_audio_mixer),
6216 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6217 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6218 msm_routing_put_audio_mixer),
6219 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6220 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6221 msm_routing_put_audio_mixer),
6222 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6223 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6224 msm_routing_put_audio_mixer),
6225 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6226 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6227 msm_routing_put_audio_mixer),
6228 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6229 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6230 msm_routing_put_audio_mixer),
6231};
6232
6233static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
6234 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6235 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6236 msm_routing_put_audio_mixer),
6237 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6238 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6239 msm_routing_put_audio_mixer),
6240 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6241 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6242 msm_routing_put_audio_mixer),
6243 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6244 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6245 msm_routing_put_audio_mixer),
6246 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6247 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6248 msm_routing_put_audio_mixer),
6249 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6250 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6251 msm_routing_put_audio_mixer),
6252 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6253 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6254 msm_routing_put_audio_mixer),
6255 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6256 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6257 msm_routing_put_audio_mixer),
6258 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6259 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6260 msm_routing_put_audio_mixer),
6261 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6262 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6263 msm_routing_put_audio_mixer),
6264 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6265 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6266 msm_routing_put_audio_mixer),
6267 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6268 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6269 msm_routing_put_audio_mixer),
6270 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6271 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6272 msm_routing_put_audio_mixer),
6273 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6274 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6275 msm_routing_put_audio_mixer),
6276 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6277 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6278 msm_routing_put_audio_mixer),
6279 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6280 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6281 msm_routing_put_audio_mixer),
6282};
6283
6284static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6285 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6286 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6287 msm_routing_put_audio_mixer),
6288 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6289 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6290 msm_routing_put_audio_mixer),
6291 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6292 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6293 msm_routing_put_audio_mixer),
6294 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6295 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6296 msm_routing_put_audio_mixer),
6297 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6298 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6299 msm_routing_put_audio_mixer),
6300 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6301 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6302 msm_routing_put_audio_mixer),
6303 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6304 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6305 msm_routing_put_audio_mixer),
6306 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6307 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6308 msm_routing_put_audio_mixer),
6309 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6310 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6311 msm_routing_put_audio_mixer),
6312 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6313 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6314 msm_routing_put_audio_mixer),
6315 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6316 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6317 msm_routing_put_audio_mixer),
6318 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6319 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6320 msm_routing_put_audio_mixer),
6321 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6322 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6323 msm_routing_put_audio_mixer),
6324 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6325 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6326 msm_routing_put_audio_mixer),
6327 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6328 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6329 msm_routing_put_audio_mixer),
6330 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6331 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6332 msm_routing_put_audio_mixer),
6333};
6334
6335static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6336 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6337 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6338 msm_routing_put_audio_mixer),
6339 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6340 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6341 msm_routing_put_audio_mixer),
6342 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6343 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6344 msm_routing_put_audio_mixer),
6345 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6346 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6347 msm_routing_put_audio_mixer),
6348 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6349 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6350 msm_routing_put_audio_mixer),
6351 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6352 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6353 msm_routing_put_audio_mixer),
6354 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6355 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6356 msm_routing_put_audio_mixer),
6357 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6358 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6359 msm_routing_put_audio_mixer),
6360 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6361 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6362 msm_routing_put_audio_mixer),
6363 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6364 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6365 msm_routing_put_audio_mixer),
6366 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6367 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6368 msm_routing_put_audio_mixer),
6369 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6370 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6371 msm_routing_put_audio_mixer),
6372 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6373 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6374 msm_routing_put_audio_mixer),
6375 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6376 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6377 msm_routing_put_audio_mixer),
6378 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6379 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6380 msm_routing_put_audio_mixer),
6381 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6382 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6383 msm_routing_put_audio_mixer),
6384};
6385
6386static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6387 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6388 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6389 msm_routing_put_audio_mixer),
6390 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6391 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6392 msm_routing_put_audio_mixer),
6393 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6394 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6395 msm_routing_put_audio_mixer),
6396 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6397 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6398 msm_routing_put_audio_mixer),
6399 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6400 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6401 msm_routing_put_audio_mixer),
6402 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6403 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6404 msm_routing_put_audio_mixer),
6405 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6406 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6407 msm_routing_put_audio_mixer),
6408 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6409 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6410 msm_routing_put_audio_mixer),
6411 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6412 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6413 msm_routing_put_audio_mixer),
6414 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6415 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6416 msm_routing_put_audio_mixer),
6417 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6418 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6419 msm_routing_put_audio_mixer),
6420 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6421 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6422 msm_routing_put_audio_mixer),
6423 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6424 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6425 msm_routing_put_audio_mixer),
6426 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6427 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6428 msm_routing_put_audio_mixer),
6429 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6430 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6431 msm_routing_put_audio_mixer),
6432 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6433 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6434 msm_routing_put_audio_mixer),
6435 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6436 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6437 msm_routing_put_audio_mixer),
6438};
6439
6440static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6441 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6442 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6443 msm_routing_put_audio_mixer),
6444 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6445 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6446 msm_routing_put_audio_mixer),
6447 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6448 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6449 msm_routing_put_audio_mixer),
6450 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6451 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6452 msm_routing_put_audio_mixer),
6453 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6454 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6455 msm_routing_put_audio_mixer),
6456 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6457 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6458 msm_routing_put_audio_mixer),
6459 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6460 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6461 msm_routing_put_audio_mixer),
6462 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6463 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6464 msm_routing_put_audio_mixer),
6465 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6466 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6467 msm_routing_put_audio_mixer),
6468 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6469 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6470 msm_routing_put_audio_mixer),
6471 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6472 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6473 msm_routing_put_audio_mixer),
6474 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6475 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6476 msm_routing_put_audio_mixer),
6477 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6478 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6479 msm_routing_put_audio_mixer),
6480 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6481 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6482 msm_routing_put_audio_mixer),
6483 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6484 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6485 msm_routing_put_audio_mixer),
6486 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6487 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6488 msm_routing_put_audio_mixer),
6489};
6490
6491static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6492 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6493 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6494 msm_routing_put_audio_mixer),
6495 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6496 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6497 msm_routing_put_audio_mixer),
6498 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6499 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6500 msm_routing_put_audio_mixer),
6501 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6502 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6503 msm_routing_put_audio_mixer),
6504 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6505 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6506 msm_routing_put_audio_mixer),
6507 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6508 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6509 msm_routing_put_audio_mixer),
6510 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6511 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6512 msm_routing_put_audio_mixer),
6513 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6514 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6515 msm_routing_put_audio_mixer),
6516 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6517 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6518 msm_routing_put_audio_mixer),
6519 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6520 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6521 msm_routing_put_audio_mixer),
6522 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6523 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6524 msm_routing_put_audio_mixer),
6525 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6526 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6527 msm_routing_put_audio_mixer),
6528 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6529 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6530 msm_routing_put_audio_mixer),
6531 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6532 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6533 msm_routing_put_audio_mixer),
6534 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6535 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6536 msm_routing_put_audio_mixer),
6537 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6538 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6539 msm_routing_put_audio_mixer),
6540 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6541 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6542 msm_routing_put_audio_mixer),
6543};
6544
6545static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6546 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6547 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6548 msm_routing_put_audio_mixer),
6549 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6550 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6551 msm_routing_put_audio_mixer),
6552 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6553 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6554 msm_routing_put_audio_mixer),
6555 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6556 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6557 msm_routing_put_audio_mixer),
6558 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6559 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6560 msm_routing_put_audio_mixer),
6561 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6562 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6563 msm_routing_put_audio_mixer),
6564 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6565 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6566 msm_routing_put_audio_mixer),
6567 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6568 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6569 msm_routing_put_audio_mixer),
6570 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6571 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6572 msm_routing_put_audio_mixer),
6573 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6574 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6575 msm_routing_put_audio_mixer),
6576 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6577 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6578 msm_routing_put_audio_mixer),
6579 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6580 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6581 msm_routing_put_audio_mixer),
6582 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6583 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6584 msm_routing_put_audio_mixer),
6585 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6586 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6587 msm_routing_put_audio_mixer),
6588 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6589 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6590 msm_routing_put_audio_mixer),
6591 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6592 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6593 msm_routing_put_audio_mixer),
6594 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6595 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6596 msm_routing_put_audio_mixer),
6597};
6598
6599static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6600 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6601 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6602 msm_routing_put_audio_mixer),
6603 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6604 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6605 msm_routing_put_audio_mixer),
6606 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6607 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6608 msm_routing_put_audio_mixer),
6609 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6610 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6611 msm_routing_put_audio_mixer),
6612 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6613 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6614 msm_routing_put_audio_mixer),
6615 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6616 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6617 msm_routing_put_audio_mixer),
6618 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6619 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6620 msm_routing_put_audio_mixer),
6621 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6622 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6623 msm_routing_put_audio_mixer),
6624 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6625 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6626 msm_routing_put_audio_mixer),
6627 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6628 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6629 msm_routing_put_audio_mixer),
6630 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6631 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6632 msm_routing_put_audio_mixer),
6633 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6634 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6635 msm_routing_put_audio_mixer),
6636 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6637 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6638 msm_routing_put_audio_mixer),
6639 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6640 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6641 msm_routing_put_audio_mixer),
6642 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6643 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6644 msm_routing_put_audio_mixer),
6645 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6646 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6647 msm_routing_put_audio_mixer),
6648 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6649 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6650 msm_routing_put_audio_mixer),
6651};
6652
Rohit Kumara5077932017-09-10 22:05:05 +05306653static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6654 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6655 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6656 msm_routing_put_audio_mixer),
6657 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6658 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6659 msm_routing_put_audio_mixer),
6660 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6661 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6662 msm_routing_put_audio_mixer),
6663 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6664 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6665 msm_routing_put_audio_mixer),
6666 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6667 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6668 msm_routing_put_audio_mixer),
6669 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6670 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6671 msm_routing_put_audio_mixer),
6672 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6673 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6674 msm_routing_put_audio_mixer),
6675 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6676 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6677 msm_routing_put_audio_mixer),
6678 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6679 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6680 msm_routing_put_audio_mixer),
6681 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6682 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6683 msm_routing_put_audio_mixer),
6684 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6685 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6686 msm_routing_put_audio_mixer),
6687 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6688 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6689 msm_routing_put_audio_mixer),
6690 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6691 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6692 msm_routing_put_audio_mixer),
6693 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6694 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6695 msm_routing_put_audio_mixer),
6696 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6697 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6698 msm_routing_put_audio_mixer),
6699 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6700 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6701 msm_routing_put_audio_mixer),
6702 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6703 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6704 msm_routing_put_audio_mixer),
6705};
6706
6707static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6708 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6709 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6710 msm_routing_put_audio_mixer),
6711 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6712 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6713 msm_routing_put_audio_mixer),
6714 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6715 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6716 msm_routing_put_audio_mixer),
6717 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6718 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6719 msm_routing_put_audio_mixer),
6720 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6721 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6722 msm_routing_put_audio_mixer),
6723 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6724 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6725 msm_routing_put_audio_mixer),
6726 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6727 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6728 msm_routing_put_audio_mixer),
6729 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6730 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6731 msm_routing_put_audio_mixer),
6732 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6733 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6734 msm_routing_put_audio_mixer),
6735 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6736 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6737 msm_routing_put_audio_mixer),
6738 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6739 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6740 msm_routing_put_audio_mixer),
6741 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6742 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6743 msm_routing_put_audio_mixer),
6744 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6745 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6746 msm_routing_put_audio_mixer),
6747 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6748 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6749 msm_routing_put_audio_mixer),
6750 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6751 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6752 msm_routing_put_audio_mixer),
6753 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6754 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6755 msm_routing_put_audio_mixer),
6756};
6757
6758static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6759 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6760 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6761 msm_routing_put_audio_mixer),
6762 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6763 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6764 msm_routing_put_audio_mixer),
6765 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6766 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6767 msm_routing_put_audio_mixer),
6768 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6769 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6770 msm_routing_put_audio_mixer),
6771 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6772 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6773 msm_routing_put_audio_mixer),
6774 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6775 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6776 msm_routing_put_audio_mixer),
6777 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6778 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6779 msm_routing_put_audio_mixer),
6780 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6781 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6782 msm_routing_put_audio_mixer),
6783 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6784 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6785 msm_routing_put_audio_mixer),
6786 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6787 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6788 msm_routing_put_audio_mixer),
6789 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6790 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6791 msm_routing_put_audio_mixer),
6792 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6793 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6794 msm_routing_put_audio_mixer),
6795 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6796 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6797 msm_routing_put_audio_mixer),
6798 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6799 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6800 msm_routing_put_audio_mixer),
6801 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6802 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6803 msm_routing_put_audio_mixer),
6804 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6805 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6806 msm_routing_put_audio_mixer),
6807 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6808 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6809 msm_routing_put_audio_mixer),
6810};
6811
6812static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6813 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6814 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6815 msm_routing_put_audio_mixer),
6816 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6817 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6818 msm_routing_put_audio_mixer),
6819 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6820 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6821 msm_routing_put_audio_mixer),
6822 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6823 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6824 msm_routing_put_audio_mixer),
6825 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6826 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6827 msm_routing_put_audio_mixer),
6828 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6829 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6830 msm_routing_put_audio_mixer),
6831 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6832 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6833 msm_routing_put_audio_mixer),
6834 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6835 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6836 msm_routing_put_audio_mixer),
6837 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6838 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6839 msm_routing_put_audio_mixer),
6840 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6841 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6842 msm_routing_put_audio_mixer),
6843 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6844 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6845 msm_routing_put_audio_mixer),
6846 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6847 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6848 msm_routing_put_audio_mixer),
6849 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6850 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6851 msm_routing_put_audio_mixer),
6852 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6853 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6854 msm_routing_put_audio_mixer),
6855 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6856 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6857 msm_routing_put_audio_mixer),
6858 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6859 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6860 msm_routing_put_audio_mixer),
6861 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6862 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6863 msm_routing_put_audio_mixer),
6864};
6865
6866static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
6867 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6868 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6869 msm_routing_put_audio_mixer),
6870 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6871 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6872 msm_routing_put_audio_mixer),
6873 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6874 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6875 msm_routing_put_audio_mixer),
6876 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6877 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6878 msm_routing_put_audio_mixer),
6879 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6880 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6881 msm_routing_put_audio_mixer),
6882 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6883 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6884 msm_routing_put_audio_mixer),
6885 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6886 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6887 msm_routing_put_audio_mixer),
6888 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6889 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6890 msm_routing_put_audio_mixer),
6891 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6892 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6893 msm_routing_put_audio_mixer),
6894 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6895 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6896 msm_routing_put_audio_mixer),
6897 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6898 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6899 msm_routing_put_audio_mixer),
6900 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6901 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6902 msm_routing_put_audio_mixer),
6903 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6904 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6905 msm_routing_put_audio_mixer),
6906 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6907 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6908 msm_routing_put_audio_mixer),
6909 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6910 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6911 msm_routing_put_audio_mixer),
6912 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6913 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6914 msm_routing_put_audio_mixer),
6915 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6916 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6917 msm_routing_put_audio_mixer),
6918};
6919
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306920static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
6921 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
6922 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6923 msm_routing_put_audio_mixer),
6924 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6925 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6926 msm_routing_put_audio_mixer),
6927 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6928 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6929 msm_routing_put_audio_mixer),
6930 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6931 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6932 msm_routing_put_audio_mixer),
6933 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6934 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6935 msm_routing_put_audio_mixer),
6936 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6937 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6938 msm_routing_put_audio_mixer),
6939 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6940 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6941 msm_routing_put_audio_mixer),
6942 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6943 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6944 msm_routing_put_audio_mixer),
6945 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6946 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6947 msm_routing_put_audio_mixer),
6948 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6949 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6950 msm_routing_put_audio_mixer),
6951 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6952 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6953 msm_routing_put_audio_mixer),
6954 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6955 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6956 msm_routing_put_audio_mixer),
6957 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6958 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6959 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306960 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
6961 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6962 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306963 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6964 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6965 msm_routing_put_audio_mixer),
6966 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6967 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6968 msm_routing_put_audio_mixer),
6969 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6970 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6971 msm_routing_put_audio_mixer),
6972 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
6973 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6974 msm_routing_put_audio_mixer),
6975 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
6976 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6977 msm_routing_put_audio_mixer),
6978 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
6979 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6980 msm_routing_put_audio_mixer),
6981 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6982 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6983 msm_routing_put_audio_mixer),
6984 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6985 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6986 msm_routing_put_audio_mixer),
6987 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6988 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6989 msm_routing_put_audio_mixer),
6990 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6991 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6992 msm_routing_put_audio_mixer),
6993 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6994 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6995 msm_routing_put_audio_mixer),
6996 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6997 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6998 msm_routing_put_audio_mixer),
6999 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7000 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7001 msm_routing_put_audio_mixer),
7002 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7003 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7004 msm_routing_put_audio_mixer),
7005 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7006 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7007 msm_routing_put_audio_mixer),
7008 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7009 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7010 msm_routing_put_audio_mixer),
7011 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7012 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7013 msm_routing_put_audio_mixer),
7014 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7015 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7016 msm_routing_put_audio_mixer),
7017 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7018 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7019 msm_routing_put_audio_mixer),
7020 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7021 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7022 msm_routing_put_audio_mixer),
7023 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7024 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7025 msm_routing_put_audio_mixer),
7026 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7027 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7028 msm_routing_put_audio_mixer),
7029 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7030 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7031 msm_routing_put_audio_mixer),
7032 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7033 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7034 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307035 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7036 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7037 msm_routing_put_audio_mixer),
7038 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7039 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7040 msm_routing_put_audio_mixer),
7041 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7042 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7043 msm_routing_put_audio_mixer),
7044 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7045 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7046 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307047 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7048 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7049 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307050 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7051 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7052 msm_routing_put_audio_mixer),
7053 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7054 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7055 msm_routing_put_audio_mixer),
7056 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7057 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7058 msm_routing_put_audio_mixer),
7059};
7060
7061static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
7062 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7063 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7064 msm_routing_put_audio_mixer),
7065 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7066 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7067 msm_routing_put_audio_mixer),
7068 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7069 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7070 msm_routing_put_audio_mixer),
7071 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7072 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7073 msm_routing_put_audio_mixer),
7074 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7075 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7076 msm_routing_put_audio_mixer),
7077 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7078 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7079 msm_routing_put_audio_mixer),
7080 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7081 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7082 msm_routing_put_audio_mixer),
7083 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7084 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7085 msm_routing_put_audio_mixer),
7086 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7087 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7088 msm_routing_put_audio_mixer),
7089 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7090 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7091 msm_routing_put_audio_mixer),
7092 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
7093 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7094 msm_routing_put_audio_mixer),
7095 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7096 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7097 msm_routing_put_audio_mixer),
7098 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7099 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7100 msm_routing_put_audio_mixer),
7101 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7102 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7103 msm_routing_put_audio_mixer),
7104 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7105 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7106 msm_routing_put_audio_mixer),
7107 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7108 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7109 msm_routing_put_audio_mixer),
7110 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7111 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7112 msm_routing_put_audio_mixer),
7113 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7114 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7115 msm_routing_put_audio_mixer),
7116 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7117 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7118 msm_routing_put_audio_mixer),
7119 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7120 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7121 msm_routing_put_audio_mixer),
7122 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7123 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7124 msm_routing_put_audio_mixer),
7125 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7126 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7127 msm_routing_put_audio_mixer),
7128 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7129 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7130 msm_routing_put_audio_mixer),
7131 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7132 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7133 msm_routing_put_audio_mixer),
7134 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7135 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7136 msm_routing_put_audio_mixer),
7137 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7138 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7139 msm_routing_put_audio_mixer),
7140 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7141 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7142 msm_routing_put_audio_mixer),
7143 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7144 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7145 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307146 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7147 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7148 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307149 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7150 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7151 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307152 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7153 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7154 msm_routing_put_audio_mixer),
7155 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7156 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7157 msm_routing_put_audio_mixer),
7158 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7159 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7160 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307161 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7162 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7163 msm_routing_put_audio_mixer),
7164 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7165 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7166 msm_routing_put_audio_mixer),
7167};
7168
7169static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7170 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7171 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7172 msm_routing_put_audio_mixer),
7173 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7174 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7175 msm_routing_put_audio_mixer),
7176 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7177 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7178 msm_routing_put_audio_mixer),
7179 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7180 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7181 msm_routing_put_audio_mixer),
7182 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7183 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7184 msm_routing_put_audio_mixer),
7185 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7186 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7187 msm_routing_put_audio_mixer),
7188 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7189 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7190 msm_routing_put_audio_mixer),
7191 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7192 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7193 msm_routing_put_audio_mixer),
7194 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7195 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7196 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307197 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7198 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7199 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307200 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7201 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7202 msm_routing_put_audio_mixer),
7203 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7204 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7205 msm_routing_put_audio_mixer),
7206 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7207 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7208 msm_routing_put_audio_mixer),
7209 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7210 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7211 msm_routing_put_audio_mixer),
7212 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7213 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7214 msm_routing_put_audio_mixer),
7215 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7216 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7217 msm_routing_put_audio_mixer),
7218 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7219 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7220 msm_routing_put_audio_mixer),
7221 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7222 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7223 msm_routing_put_audio_mixer),
7224 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7225 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7226 msm_routing_put_audio_mixer),
7227 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7228 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7229 msm_routing_put_audio_mixer),
7230 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7231 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7232 msm_routing_put_audio_mixer),
7233 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7234 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7235 msm_routing_put_audio_mixer),
7236 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7237 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7238 msm_routing_put_audio_mixer),
7239 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7240 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7241 msm_routing_put_audio_mixer),
7242 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7243 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7244 msm_routing_put_audio_mixer),
7245 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7246 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7247 msm_routing_put_audio_mixer),
7248 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7249 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7250 msm_routing_put_audio_mixer),
7251 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7252 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7253 msm_routing_put_audio_mixer),
7254 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7255 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7256 msm_routing_put_audio_mixer),
7257 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7258 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7259 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307260 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7261 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7262 msm_routing_put_audio_mixer),
7263 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7264 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7265 msm_routing_put_audio_mixer),
7266 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7267 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7268 msm_routing_put_audio_mixer),
7269 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7270 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7271 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307272 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7273 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7274 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307275};
7276
7277static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7278 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7279 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7280 msm_routing_put_audio_mixer),
7281 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7282 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7283 msm_routing_put_audio_mixer),
7284 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7285 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7286 msm_routing_put_audio_mixer),
7287 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7288 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7289 msm_routing_put_audio_mixer),
7290 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7291 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7292 msm_routing_put_audio_mixer),
7293 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7294 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7295 msm_routing_put_audio_mixer),
7296 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7297 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7298 msm_routing_put_audio_mixer),
7299 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7300 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7301 msm_routing_put_audio_mixer),
7302 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7303 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7304 msm_routing_put_audio_mixer),
7305 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7306 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7307 msm_routing_put_audio_mixer),
7308 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7309 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7310 msm_routing_put_audio_mixer),
7311 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7312 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7313 msm_routing_put_audio_mixer),
7314 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7315 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7316 msm_routing_put_audio_mixer),
7317 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7318 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7319 msm_routing_put_audio_mixer),
7320 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7321 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7322 msm_routing_put_audio_mixer),
7323 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7324 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7325 msm_routing_put_audio_mixer),
7326 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7327 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7328 msm_routing_put_audio_mixer),
7329 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7330 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7331 msm_routing_put_audio_mixer),
7332 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7333 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7334 msm_routing_put_audio_mixer),
7335 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7336 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7337 msm_routing_put_audio_mixer),
7338 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7339 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7340 msm_routing_put_audio_mixer),
7341 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7342 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7343 msm_routing_put_audio_mixer),
7344 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7345 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7346 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307347 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7348 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7349 msm_routing_put_audio_mixer),
7350 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7351 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7352 msm_routing_put_audio_mixer),
7353 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7354 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7355 msm_routing_put_audio_mixer),
7356 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7357 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7358 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307359 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7360 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7361 msm_routing_put_audio_mixer),
7362 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7363 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7364 msm_routing_put_audio_mixer),
7365 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7366 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7367 msm_routing_put_audio_mixer),
7368 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7369 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7370 msm_routing_put_audio_mixer),
7371 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7372 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7373 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307374 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7375 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7376 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307377 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7378 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7379 msm_routing_put_audio_mixer),
7380};
7381
7382static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7383 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7384 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7385 msm_routing_put_audio_mixer),
7386 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7387 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7388 msm_routing_put_audio_mixer),
7389 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7390 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7391 msm_routing_put_audio_mixer),
7392 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7393 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7394 msm_routing_put_audio_mixer),
7395 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7396 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7397 msm_routing_put_audio_mixer),
7398 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7399 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7400 msm_routing_put_audio_mixer),
7401 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7402 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7403 msm_routing_put_audio_mixer),
7404 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7405 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7406 msm_routing_put_audio_mixer),
7407 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7408 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7409 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307410 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7411 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7412 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307413 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7414 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7415 msm_routing_put_audio_mixer),
7416 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7417 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7418 msm_routing_put_audio_mixer),
7419 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7420 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7421 msm_routing_put_audio_mixer),
7422 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7423 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7424 msm_routing_put_audio_mixer),
7425 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7426 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7427 msm_routing_put_audio_mixer),
7428 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7429 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7430 msm_routing_put_audio_mixer),
7431 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7432 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7433 msm_routing_put_audio_mixer),
7434 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7435 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7436 msm_routing_put_audio_mixer),
7437 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7438 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7439 msm_routing_put_audio_mixer),
7440 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7441 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7442 msm_routing_put_audio_mixer),
7443 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7444 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7445 msm_routing_put_audio_mixer),
7446 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7447 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7448 msm_routing_put_audio_mixer),
7449 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7450 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7451 msm_routing_put_audio_mixer),
7452 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7453 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7454 msm_routing_put_audio_mixer),
7455 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7456 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7457 msm_routing_put_audio_mixer),
7458 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7459 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7460 msm_routing_put_audio_mixer),
7461 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7462 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7463 msm_routing_put_audio_mixer),
7464 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7465 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7466 msm_routing_put_audio_mixer),
7467 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7468 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7469 msm_routing_put_audio_mixer),
7470 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7471 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7472 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307473 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7474 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7475 msm_routing_put_audio_mixer),
7476 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7477 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7478 msm_routing_put_audio_mixer),
7479 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7480 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7481 msm_routing_put_audio_mixer),
7482 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7483 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7484 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307485 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7486 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7487 msm_routing_put_audio_mixer),
7488 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7489 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7490 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307491 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7492 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7493 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307494 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7495 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7496 msm_routing_put_audio_mixer),
7497 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7498 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7499 msm_routing_put_audio_mixer),
7500 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7501 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7502 msm_routing_put_audio_mixer),
7503};
7504
7505static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7506 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7507 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7508 msm_routing_put_audio_mixer),
7509 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7510 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7511 msm_routing_put_audio_mixer),
7512 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7513 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7514 msm_routing_put_audio_mixer),
7515 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7516 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7517 msm_routing_put_audio_mixer),
7518 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7519 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7520 msm_routing_put_audio_mixer),
7521 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7522 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7523 msm_routing_put_audio_mixer),
7524 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7525 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7526 msm_routing_put_audio_mixer),
7527 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7528 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7529 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307530 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7531 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7532 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307533 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7534 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7535 msm_routing_put_audio_mixer),
7536 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7537 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7538 msm_routing_put_audio_mixer),
7539 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7540 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7541 msm_routing_put_audio_mixer),
7542 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7543 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7544 msm_routing_put_audio_mixer),
7545 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7546 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7547 msm_routing_put_audio_mixer),
7548 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7549 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7550 msm_routing_put_audio_mixer),
7551 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7552 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7553 msm_routing_put_audio_mixer),
7554 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7555 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7556 msm_routing_put_audio_mixer),
7557 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7558 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7559 msm_routing_put_audio_mixer),
7560 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7561 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7562 msm_routing_put_audio_mixer),
7563 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7564 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7565 msm_routing_put_audio_mixer),
7566 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7567 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7568 msm_routing_put_audio_mixer),
7569 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7570 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7571 msm_routing_put_audio_mixer),
7572 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7573 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7574 msm_routing_put_audio_mixer),
7575 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7576 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7577 msm_routing_put_audio_mixer),
7578 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7579 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7580 msm_routing_put_audio_mixer),
7581 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7582 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7583 msm_routing_put_audio_mixer),
7584 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7585 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7586 msm_routing_put_audio_mixer),
7587 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7588 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7589 msm_routing_put_audio_mixer),
7590 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7591 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7592 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307593 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7594 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7595 msm_routing_put_audio_mixer),
7596 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7597 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7598 msm_routing_put_audio_mixer),
7599 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7600 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7601 msm_routing_put_audio_mixer),
7602 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7603 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7604 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307605 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7606 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7607 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307608 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7609 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7610 msm_routing_put_audio_mixer),
7611};
7612
7613static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7614 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7615 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7616 msm_routing_put_audio_mixer),
7617 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7618 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7619 msm_routing_put_audio_mixer),
7620 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7621 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7622 msm_routing_put_audio_mixer),
7623 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7624 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7625 msm_routing_put_audio_mixer),
7626 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7627 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7628 msm_routing_put_audio_mixer),
7629 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7630 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7631 msm_routing_put_audio_mixer),
7632 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7633 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7634 msm_routing_put_audio_mixer),
7635 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7636 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7637 msm_routing_put_audio_mixer),
7638 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7639 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7640 msm_routing_put_audio_mixer),
7641 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7642 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7643 msm_routing_put_audio_mixer),
7644 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7645 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7646 msm_routing_put_audio_mixer),
7647 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7648 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7649 msm_routing_put_audio_mixer),
7650 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7651 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7652 msm_routing_put_audio_mixer),
7653 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7654 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7655 msm_routing_put_audio_mixer),
7656 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7657 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7658 msm_routing_put_audio_mixer),
7659 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7660 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7661 msm_routing_put_audio_mixer),
7662 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7663 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7664 msm_routing_put_audio_mixer),
7665 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7666 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7667 msm_routing_put_audio_mixer),
7668 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7669 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7670 msm_routing_put_audio_mixer),
7671 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7672 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7673 msm_routing_put_audio_mixer),
7674 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7675 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7676 msm_routing_put_audio_mixer),
7677 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7678 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7679 msm_routing_put_audio_mixer),
7680 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7681 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7682 msm_routing_put_audio_mixer),
7683 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7684 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7685 msm_routing_put_audio_mixer),
7686 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7687 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7688 msm_routing_put_audio_mixer),
7689 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7690 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7691 msm_routing_put_audio_mixer),
7692 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7693 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7694 msm_routing_put_audio_mixer),
7695 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7696 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7697 msm_routing_put_audio_mixer),
7698 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7699 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7700 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307701 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7702 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7703 msm_routing_put_audio_mixer),
7704 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7705 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7706 msm_routing_put_audio_mixer),
7707 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7708 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7709 msm_routing_put_audio_mixer),
7710 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7711 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7712 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307713 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7714 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7715 msm_routing_put_audio_mixer),
7716 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7717 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7718 msm_routing_put_audio_mixer),
7719};
7720
Asish Bhattacharya34504582017-08-08 12:55:01 +05307721static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7722 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7723 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7724 msm_routing_put_audio_mixer),
7725 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7726 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7727 msm_routing_put_audio_mixer),
7728 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7729 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7730 msm_routing_put_audio_mixer),
7731 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7732 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7733 msm_routing_put_audio_mixer),
7734 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7735 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7736 msm_routing_put_audio_mixer),
7737 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7738 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7739 msm_routing_put_audio_mixer),
7740 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7741 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7742 msm_routing_put_audio_mixer),
7743 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7744 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7745 msm_routing_put_audio_mixer),
7746 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7747 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7748 msm_routing_put_audio_mixer),
7749 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7750 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7751 msm_routing_put_audio_mixer),
7752 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7753 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7754 msm_routing_put_audio_mixer),
7755 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7756 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7757 msm_routing_put_audio_mixer),
7758 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7759 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7760 msm_routing_put_audio_mixer),
7761 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7762 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7763 msm_routing_put_audio_mixer),
7764 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7765 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7766 msm_routing_put_audio_mixer),
7767 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7768 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7769 msm_routing_put_audio_mixer),
7770 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7771 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7772 msm_routing_put_audio_mixer),
7773 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7774 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7775 msm_routing_put_audio_mixer),
7776 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7777 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7778 msm_routing_put_audio_mixer),
7779 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7780 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7781 msm_routing_put_audio_mixer),
7782 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7783 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7784 msm_routing_put_audio_mixer),
7785 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7786 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7787 msm_routing_put_audio_mixer),
7788 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7789 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7790 msm_routing_put_audio_mixer),
7791 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7792 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7793 msm_routing_put_audio_mixer),
7794 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7795 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7796 msm_routing_put_audio_mixer),
7797 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7798 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7799 msm_routing_put_audio_mixer),
7800 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7801 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7802 msm_routing_put_audio_mixer),
7803 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7804 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7805 msm_routing_put_audio_mixer),
7806 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7807 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7808 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307809 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7810 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7811 msm_routing_put_audio_mixer),
Asish Bhattacharya34504582017-08-08 12:55:01 +05307812 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7813 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7814 msm_routing_put_audio_mixer),
7815 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7816 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7817 msm_routing_put_audio_mixer),
7818 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7819 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7820 msm_routing_put_audio_mixer),
7821 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7822 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7823 msm_routing_put_audio_mixer),
7824 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7825 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7826 msm_routing_put_audio_mixer),
7827 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7828 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7829 msm_routing_put_audio_mixer),
7830};
7831
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307832static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7833 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7834 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7835 msm_routing_put_audio_mixer),
7836 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7837 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7838 msm_routing_put_audio_mixer),
7839 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7840 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7841 msm_routing_put_audio_mixer),
7842 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7843 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7844 msm_routing_put_audio_mixer),
7845 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7846 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7847 msm_routing_put_audio_mixer),
7848 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7849 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7850 msm_routing_put_audio_mixer),
7851 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7852 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7853 msm_routing_put_audio_mixer),
7854 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7855 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7856 msm_routing_put_audio_mixer),
7857 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7858 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7859 msm_routing_put_audio_mixer),
7860 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7861 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7862 msm_routing_put_audio_mixer),
7863 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7864 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7865 msm_routing_put_audio_mixer),
7866 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7867 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7868 msm_routing_put_audio_mixer),
7869 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7870 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7871 msm_routing_put_audio_mixer),
7872 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7873 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7874 msm_routing_put_audio_mixer),
7875 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7876 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7877 msm_routing_put_audio_mixer),
7878 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7879 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7880 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307881 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7882 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7883 msm_routing_put_audio_mixer),
7884 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7885 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7886 msm_routing_put_audio_mixer),
7887 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7888 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7889 msm_routing_put_audio_mixer),
7890 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7891 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7892 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307893};
7894
Laxminath Kasam38070be2017-08-17 18:21:59 +05307895static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
7896 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7897 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7898 msm_routing_put_audio_mixer),
7899 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7900 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7901 msm_routing_put_audio_mixer),
7902 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7903 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7904 msm_routing_put_audio_mixer),
7905 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7906 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7907 msm_routing_put_audio_mixer),
7908 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7909 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7910 msm_routing_put_audio_mixer),
7911 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7912 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7913 msm_routing_put_audio_mixer),
7914 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7915 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7916 msm_routing_put_audio_mixer),
7917 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7918 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7919 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07007920 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7921 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7922 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307923 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7924 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7925 msm_routing_put_audio_mixer),
7926 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7927 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7928 msm_routing_put_audio_mixer),
7929 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7930 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7931 msm_routing_put_audio_mixer),
7932 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7933 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7934 msm_routing_put_audio_mixer),
7935 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7936 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7937 msm_routing_put_audio_mixer),
7938 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7939 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7940 msm_routing_put_audio_mixer),
7941 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7942 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7943 msm_routing_put_audio_mixer),
7944 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7945 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7946 msm_routing_put_audio_mixer),
7947 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7948 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7949 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007950 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7951 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7952 msm_routing_put_audio_mixer),
7953 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
Raja Mallik425e1d32018-05-20 19:21:10 +05307954 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7955 msm_routing_put_audio_mixer),
7956 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007957 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7958 msm_routing_put_audio_mixer),
7959 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7960 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7961 msm_routing_put_audio_mixer),
7962 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7963 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7964 msm_routing_put_audio_mixer),
7965 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7966 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7967 msm_routing_put_audio_mixer),
7968 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7969 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7970 msm_routing_put_audio_mixer),
7971 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7972 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7973 msm_routing_put_audio_mixer),
7974 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7975 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7976 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307977};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307978static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
7979 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7980 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7981 msm_routing_put_audio_mixer),
7982 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7983 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7984 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05307985 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7986 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7987 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307988 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7989 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7990 msm_routing_put_audio_mixer),
7991 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7992 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7993 msm_routing_put_audio_mixer),
7994 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7995 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7996 msm_routing_put_audio_mixer),
7997 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7998 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7999 msm_routing_put_audio_mixer),
8000 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8001 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8002 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008003 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8004 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8005 msm_routing_put_audio_mixer),
8006 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8007 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8008 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308009};
8010
8011static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
8012 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8013 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8014 msm_routing_put_audio_mixer),
8015 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8016 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8017 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308018 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8019 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8020 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008021 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8022 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8023 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308024 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8025 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8026 msm_routing_put_audio_mixer),
8027 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8028 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8029 msm_routing_put_audio_mixer),
8030 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8031 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8032 msm_routing_put_audio_mixer),
8033 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8034 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8035 msm_routing_put_audio_mixer),
8036 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8037 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8038 msm_routing_put_audio_mixer),
8039 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8040 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8041 msm_routing_put_audio_mixer),
8042};
8043
8044static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
8045 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8046 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8047 msm_routing_put_audio_mixer),
8048 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8049 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8050 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308051 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8052 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8053 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308054 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8055 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8056 msm_routing_put_audio_mixer),
8057 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8058 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8059 msm_routing_put_audio_mixer),
8060 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8061 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8062 msm_routing_put_audio_mixer),
8063 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8064 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8065 msm_routing_put_audio_mixer),
8066 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8067 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8068 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008069 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8070 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8071 msm_routing_put_audio_mixer),
8072 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8073 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8074 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308075};
8076
8077static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
8078 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8079 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8080 msm_routing_put_audio_mixer),
8081 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
8082 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8083 msm_routing_put_audio_mixer),
8084 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8085 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8086 msm_routing_put_audio_mixer),
8087 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8088 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8089 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308090 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
8091 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8092 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308093 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
8094 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8095 msm_routing_put_audio_mixer),
8096 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
8097 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8098 msm_routing_put_audio_mixer),
8099 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
8100 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8101 msm_routing_put_audio_mixer),
8102 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
8103 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8104 msm_routing_put_audio_mixer),
8105 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
8106 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8107 msm_routing_put_audio_mixer),
8108 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
8109 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8110 msm_routing_put_audio_mixer),
8111 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
8112 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8113 msm_routing_put_audio_mixer),
8114 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
8115 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8116 msm_routing_put_audio_mixer),
8117 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
8118 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8119 msm_routing_put_audio_mixer),
8120 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
8121 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8122 msm_routing_put_audio_mixer),
8123 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
8124 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8125 msm_routing_put_audio_mixer),
8126 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
8127 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8128 msm_routing_put_audio_mixer),
8129 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
8130 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8131 msm_routing_put_audio_mixer),
8132 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
8133 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8134 msm_routing_put_audio_mixer),
8135 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
8136 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8137 msm_routing_put_audio_mixer),
8138 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
8139 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8140 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308141 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
8142 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8143 msm_routing_put_audio_mixer),
8144 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
8145 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8146 msm_routing_put_audio_mixer),
8147 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
8148 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8149 msm_routing_put_audio_mixer),
8150 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
8151 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8152 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308153};
8154
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308155static const struct snd_kcontrol_new mmul28_mixer_controls[] = {
8156 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8157 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8158 msm_routing_put_audio_mixer),
8159 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8160 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8161 msm_routing_put_audio_mixer),
8162 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8163 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8164 msm_routing_put_audio_mixer),
8165 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8166 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8167 msm_routing_put_audio_mixer),
8168 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8169 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8170 msm_routing_put_audio_mixer),
8171 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8172 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8173 msm_routing_put_audio_mixer),
8174 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8175 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8176 msm_routing_put_audio_mixer),
8177 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8178 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8179 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008180 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8181 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8182 msm_routing_put_audio_mixer),
8183 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8184 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8185 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308186};
8187
8188static const struct snd_kcontrol_new mmul29_mixer_controls[] = {
8189 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8190 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8191 msm_routing_put_audio_mixer),
8192 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8193 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8194 msm_routing_put_audio_mixer),
8195 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8196 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8197 msm_routing_put_audio_mixer),
8198 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8199 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8200 msm_routing_put_audio_mixer),
8201 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8202 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8203 msm_routing_put_audio_mixer),
8204 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8205 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8206 msm_routing_put_audio_mixer),
8207 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8208 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8209 msm_routing_put_audio_mixer),
8210 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8211 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8212 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008213 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8214 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8215 msm_routing_put_audio_mixer),
8216 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8217 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8218 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308219};
8220
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308221static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308222 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
8223 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8224 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308225 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
8226 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8227 msm_routing_put_voice_mixer),
8228 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
8229 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8230 msm_routing_put_voice_mixer),
8231 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
8232 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8233 msm_routing_put_voice_mixer),
8234 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
8235 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8236 msm_routing_put_voice_mixer),
8237};
8238
8239static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308240 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
8241 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8242 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308243 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
8244 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8245 msm_routing_put_voice_mixer),
8246 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
8247 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8248 msm_routing_put_voice_mixer),
8249};
8250
8251static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308252 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8253 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8254 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308255 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8256 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8257 msm_routing_put_voice_mixer),
8258 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8259 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8260 msm_routing_put_voice_mixer),
8261 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8262 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8263 msm_routing_put_voice_mixer),
8264 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8265 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8266 msm_routing_put_voice_mixer),
8267};
8268
8269static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308270 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8271 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8272 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308273 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8274 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8275 msm_routing_put_voice_mixer),
8276 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8277 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8278 msm_routing_put_voice_mixer),
8279 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8280 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8281 msm_routing_put_voice_mixer),
8282 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8283 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8284 msm_routing_put_voice_mixer),
8285};
8286
8287static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308288 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8289 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8290 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308291 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8292 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8293 msm_routing_put_voice_mixer),
8294 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8295 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8296 msm_routing_put_voice_mixer),
8297 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8298 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8299 msm_routing_put_voice_mixer),
8300 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8301 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8302 msm_routing_put_voice_mixer),
8303};
8304
8305static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308306 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8307 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8308 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308309 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8310 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8311 msm_routing_put_voice_mixer),
8312 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8313 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8314 msm_routing_put_voice_mixer),
8315 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8316 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8317 msm_routing_put_voice_mixer),
8318 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8319 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8320 msm_routing_put_voice_mixer),
8321};
8322
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008323static const struct snd_kcontrol_new display_port_rx_voice_mixer_controls[] = {
8324 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8325 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8326 msm_routing_put_voice_mixer),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008327 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8328 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8329 msm_routing_put_voice_mixer),
8330 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8331 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8332 msm_routing_put_voice_mixer),
8333 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8334 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8335 msm_routing_put_voice_mixer),
8336 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8337 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8338 msm_routing_put_voice_mixer),
8339};
8340
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308341static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308342 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8343 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8344 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308345 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8346 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8347 msm_routing_put_voice_mixer),
8348 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8349 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8350 msm_routing_put_voice_mixer),
8351 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8352 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8353 msm_routing_put_voice_mixer),
8354 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8355 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8356 msm_routing_put_voice_mixer),
8357};
8358
8359static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308360 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8361 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8362 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308363 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8364 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8365 msm_routing_put_voice_mixer),
8366 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8367 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8368 msm_routing_put_voice_mixer),
8369 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8370 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8371 msm_routing_put_voice_mixer),
8372 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8373 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8374 msm_routing_put_voice_mixer),
8375};
8376
8377static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308378 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8379 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8380 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308381 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8382 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8383 msm_routing_put_voice_mixer),
8384 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8385 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8386 msm_routing_put_voice_mixer),
8387 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8388 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8389 msm_routing_put_voice_mixer),
8390 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8391 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8392 msm_routing_put_voice_mixer),
8393};
8394
8395static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8396 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8397 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8398 msm_routing_put_voice_mixer),
8399 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8400 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8401 msm_routing_put_voice_mixer),
8402 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8403 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8404 msm_routing_put_voice_mixer),
8405 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8406 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8407 msm_routing_put_voice_mixer),
8408 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8409 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8410 msm_routing_put_voice_mixer),
8411};
8412
8413static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8414 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8415 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8416 msm_routing_put_voice_mixer),
8417 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8418 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8419 msm_routing_put_voice_mixer),
8420 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8421 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8422 msm_routing_put_voice_mixer),
8423 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8424 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8425 msm_routing_put_voice_mixer),
8426 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8427 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8428 msm_routing_put_voice_mixer),
8429};
8430
8431static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308432 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8433 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8434 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308435 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8436 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8437 msm_routing_put_voice_mixer),
8438 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8439 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8440 msm_routing_put_voice_mixer),
8441 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8442 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8443 msm_routing_put_voice_mixer),
8444 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8445 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8446 msm_routing_put_voice_mixer),
8447};
8448
8449static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308450 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8451 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8452 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308453 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8454 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8455 msm_routing_put_voice_mixer),
8456 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8457 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8458 msm_routing_put_voice_mixer),
8459 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8460 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8461 msm_routing_put_voice_mixer),
8462 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8463 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8464 msm_routing_put_voice_mixer),
8465};
8466
8467static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308468 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8469 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8470 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308471 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8472 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8473 msm_routing_put_voice_mixer),
8474 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8475 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8476 msm_routing_put_voice_mixer),
8477 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8478 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8479 msm_routing_put_voice_mixer),
8480 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8481 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8482 msm_routing_put_voice_mixer),
8483};
8484
8485static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308486 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8487 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8488 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308489 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8490 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8491 msm_routing_put_voice_mixer),
8492 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8493 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8494 msm_routing_put_voice_mixer),
8495 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8496 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8497 msm_routing_put_voice_mixer),
8498 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8499 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8500 msm_routing_put_voice_mixer),
8501};
8502
8503static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308504 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8505 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8506 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308507 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8508 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8509 msm_routing_put_voice_mixer),
8510 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8511 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8512 msm_routing_put_voice_mixer),
8513 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8514 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8515 msm_routing_put_voice_mixer),
8516 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8517 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8518 msm_routing_put_voice_mixer),
8519};
8520
8521static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308522 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8523 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8524 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308525 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8526 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8527 msm_routing_put_voice_mixer),
8528 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8529 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8530 msm_routing_put_voice_mixer),
8531 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8532 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8533 msm_routing_put_voice_mixer),
8534 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8535 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8536 msm_routing_put_voice_mixer),
8537};
8538
8539static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308540 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8541 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8542 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308543 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8544 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8545 msm_routing_put_voice_mixer),
8546 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8547 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8548 msm_routing_put_voice_mixer),
8549 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8550 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8551 msm_routing_put_voice_mixer),
8552 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8553 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8554 msm_routing_put_voice_mixer),
8555};
8556
8557static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308558 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8559 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8560 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308561 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8562 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8563 msm_routing_put_voice_mixer),
8564 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8565 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8566 msm_routing_put_voice_mixer),
8567 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8568 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8569 msm_routing_put_voice_mixer),
8570 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8571 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8572 msm_routing_put_voice_mixer),
8573};
8574
Rohit Kumara5077932017-09-10 22:05:05 +05308575static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Rohit Kumara5077932017-09-10 22:05:05 +05308576 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8577 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8578 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308579 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8580 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8581 msm_routing_put_voice_mixer),
8582 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8583 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8584 msm_routing_put_voice_mixer),
8585 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8586 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8587 msm_routing_put_voice_mixer),
8588 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8589 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8590 msm_routing_put_voice_mixer),
8591};
8592
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308593static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308594 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8595 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8596 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308597 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8598 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8599 msm_routing_put_voice_mixer),
8600 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8601 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8602 msm_routing_put_voice_mixer),
8603 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8604 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8605 msm_routing_put_voice_mixer),
8606 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8607 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8608 msm_routing_put_voice_mixer),
8609};
8610
Raja Mallik321d5712018-05-04 17:22:11 +05308611static const struct snd_kcontrol_new pri_tdm_rx_0_voice_mixer_controls[] = {
8612 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8613 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8614 msm_routing_put_voice_mixer),
8615 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8616 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8617 msm_routing_put_voice_stub_mixer),
8618 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8619 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8620 msm_routing_put_voice_stub_mixer),
8621 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8622 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8623 msm_routing_put_voice_mixer),
8624 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8625 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8626 msm_routing_put_voice_mixer),
8627 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8628 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8629 msm_routing_put_voice_mixer),
8630 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8631 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8632 msm_routing_put_voice_mixer),
8633 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8634 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8635 msm_routing_put_voice_mixer),
8636};
8637
8638static const struct snd_kcontrol_new pri_tdm_rx_1_voice_mixer_controls[] = {
8639 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8640 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8641 msm_routing_put_voice_mixer),
8642 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8643 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8644 msm_routing_put_voice_stub_mixer),
8645 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8646 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8647 msm_routing_put_voice_stub_mixer),
8648 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8649 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8650 msm_routing_put_voice_mixer),
8651 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8652 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8653 msm_routing_put_voice_mixer),
8654 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8655 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8656 msm_routing_put_voice_mixer),
8657 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8658 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8659 msm_routing_put_voice_mixer),
8660 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8661 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8662 msm_routing_put_voice_mixer),
8663};
8664
8665static const struct snd_kcontrol_new pri_tdm_rx_2_voice_mixer_controls[] = {
8666 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8667 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8668 msm_routing_put_voice_mixer),
8669 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8670 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8671 msm_routing_put_voice_stub_mixer),
8672 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8673 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8674 msm_routing_put_voice_stub_mixer),
8675 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8676 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8677 msm_routing_put_voice_mixer),
8678 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8679 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8680 msm_routing_put_voice_mixer),
8681 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8682 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8683 msm_routing_put_voice_mixer),
8684 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8685 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8686 msm_routing_put_voice_mixer),
8687 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8688 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8689 msm_routing_put_voice_mixer),
8690};
8691
8692static const struct snd_kcontrol_new pri_tdm_rx_3_voice_mixer_controls[] = {
8693 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8694 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8695 msm_routing_put_voice_mixer),
8696 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8697 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8698 msm_routing_put_voice_stub_mixer),
8699 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8700 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8701 msm_routing_put_voice_stub_mixer),
8702 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8703 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8704 msm_routing_put_voice_mixer),
8705 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8706 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8707 msm_routing_put_voice_mixer),
8708 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8709 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8710 msm_routing_put_voice_mixer),
8711 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8712 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8713 msm_routing_put_voice_mixer),
8714 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8715 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8716 msm_routing_put_voice_mixer),
8717};
8718
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308719static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308720 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8721 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8722 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308723 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8724 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8725 msm_routing_put_voice_mixer),
8726 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8727 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8728 msm_routing_put_voice_mixer),
8729 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8730 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8731 msm_routing_put_voice_mixer),
8732 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8733 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8734 msm_routing_put_voice_mixer),
8735};
8736
8737static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308738 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8739 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8740 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308741 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8742 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8743 msm_routing_put_voice_mixer),
8744 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8745 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8746 msm_routing_put_voice_mixer),
8747 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8748 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8749 msm_routing_put_voice_mixer),
8750 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8751 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8752 msm_routing_put_voice_mixer),
8753};
8754
8755static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8756 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8757 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8758 msm_routing_put_voice_mixer),
8759};
8760
8761static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008762 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_EXTPROC_RX,
8763 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8764 msm_routing_put_voice_mixer),
8765 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_EXTPROC_RX,
8766 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8767 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308768};
8769
8770static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008771 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8772 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8773 msm_routing_put_voice_mixer),
8774 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8775 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8776 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308777};
8778
8779static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008780 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8781 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8782 msm_routing_put_voice_mixer),
8783 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8784 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8785 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308786};
8787
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308788static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8789 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8790 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8791 msm_routing_put_voice_mixer),
8792 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8793 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8794 msm_routing_put_voice_mixer),
8795 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8796 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8797 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8798 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8799 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8800 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8801 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8802 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8803 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8804 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8805 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8806 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8807 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8808 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8809 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8810 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8811 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8812 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8813 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8814 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8815 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308816 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
8817 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8818 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308819 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8820 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8821 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8822 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8823 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8824 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8825 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8826 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8827 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8828 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8829 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8830 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8831 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8832 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8833 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8834 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8835 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8836 msm_routing_put_voice_mixer),
8837 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8838 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8839 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05308840 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode1",
8841 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE1,
8842 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308843 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode1",
8844 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8845 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8846 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode1",
8847 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8848 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308849};
8850
8851static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8852 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8853 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8854 msm_routing_put_voice_mixer),
8855 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8856 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8857 msm_routing_put_voice_mixer),
8858 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8859 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8860 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8861 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
8862 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8863 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8864 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
8865 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8866 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8867 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
8868 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8869 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8870 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
8871 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8872 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8873 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
8874 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8875 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8876 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
8877 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8878 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308879 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
8880 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8881 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308882 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
8883 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8884 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8885 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
8886 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8887 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05308888 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode2",
8889 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE2,
8890 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308891 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
8892 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8893 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8894 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
8895 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8896 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8897 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
8898 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8899 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8900 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
8901 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8902 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308903 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode2",
8904 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8905 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8906 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode2",
8907 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8908 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308909};
8910
8911static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
8912 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
8913 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8914 msm_routing_put_voice_mixer),
8915 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
8916 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8917 msm_routing_put_voice_mixer),
8918 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8919 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8920 msm_routing_put_voice_mixer),
8921 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8922 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8923 msm_routing_put_voice_mixer),
8924 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
8925 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8926 msm_routing_put_voice_mixer),
8927 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
8928 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8929 msm_routing_put_voice_mixer),
8930 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8931 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8932 msm_routing_put_voice_mixer),
8933 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8934 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8935 msm_routing_put_voice_mixer),
8936 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8937 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8938 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308939 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8940 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8941 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308942 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
8943 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8944 msm_routing_put_voice_mixer),
8945 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8946 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8947 msm_routing_put_voice_mixer),
8948 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
8949 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8950 msm_routing_put_voice_mixer),
8951 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8952 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8953 msm_routing_put_voice_mixer),
8954 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8955 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8956 msm_routing_put_voice_mixer),
8957 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
8958 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8959 msm_routing_put_voice_mixer),
Bala Kishore Pati38de3862018-06-15 17:38:40 +05308960 SOC_SINGLE_EXT("PRI_TDM_TX_3_Voip", MSM_BACKEND_DAI_PRI_TDM_TX_3,
8961 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8962 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308963};
8964
8965static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
8966 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8967 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8968 msm_routing_put_voice_stub_mixer),
8969 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8970 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8971 msm_routing_put_voice_stub_mixer),
8972 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8973 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8974 msm_routing_put_voice_stub_mixer),
8975 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8976 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8977 msm_routing_put_voice_stub_mixer),
8978 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
8979 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8980 msm_routing_put_voice_stub_mixer),
8981 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8982 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8983 msm_routing_put_voice_stub_mixer),
8984 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8985 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8986 msm_routing_put_voice_stub_mixer),
8987 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8988 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8989 msm_routing_put_voice_stub_mixer),
8990 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8991 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8992 msm_routing_put_voice_stub_mixer),
8993 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8994 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8995 msm_routing_put_voice_stub_mixer),
8996 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8997 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8998 msm_routing_put_voice_stub_mixer),
8999 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9000 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9001 msm_routing_put_voice_stub_mixer),
9002 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9003 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9004 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309005 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9006 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9007 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309008 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9009 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9010 msm_routing_put_voice_stub_mixer),
9011 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9012 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9013 msm_routing_put_voice_stub_mixer),
9014 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9015 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9016 msm_routing_put_voice_stub_mixer),
9017 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9018 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9019 msm_routing_put_voice_stub_mixer),
9020 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9021 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9022 msm_routing_put_voice_stub_mixer),
9023};
9024
9025static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
9026 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9027 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9028 msm_routing_put_voice_stub_mixer),
9029 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9030 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9031 msm_routing_put_voice_stub_mixer),
9032 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9033 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9034 msm_routing_put_voice_stub_mixer),
9035 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9036 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9037 msm_routing_put_voice_stub_mixer),
9038 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9039 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9040 msm_routing_put_voice_stub_mixer),
9041 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9042 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9043 msm_routing_put_voice_stub_mixer),
9044 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9045 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9046 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309047 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9048 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9049 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309050 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9051 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9052 msm_routing_put_voice_stub_mixer),
9053 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9054 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9055 msm_routing_put_voice_stub_mixer),
9056 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9057 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9058 msm_routing_put_voice_stub_mixer),
9059 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9060 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9061 msm_routing_put_voice_stub_mixer),
9062 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9063 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9064 msm_routing_put_voice_stub_mixer),
9065 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9066 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9067 msm_routing_put_voice_stub_mixer),
9068 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9069 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9070 msm_routing_put_voice_stub_mixer),
9071};
9072
9073static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
9074 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9075 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9076 msm_routing_put_voice_stub_mixer),
9077 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9078 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9079 msm_routing_put_voice_stub_mixer),
9080 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9081 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9082 msm_routing_put_voice_stub_mixer),
9083 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9084 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9085 msm_routing_put_voice_stub_mixer),
9086 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9087 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9088 msm_routing_put_voice_stub_mixer),
9089 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9090 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9091 msm_routing_put_voice_stub_mixer),
9092 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9093 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9094 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309095 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9096 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9097 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309098 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9099 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9100 msm_routing_put_voice_stub_mixer),
9101 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9102 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9103 msm_routing_put_voice_stub_mixer),
9104 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9105 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9106 msm_routing_put_voice_stub_mixer),
9107 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9108 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9109 msm_routing_put_voice_stub_mixer),
9110 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9111 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9112 msm_routing_put_voice_stub_mixer),
9113 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9114 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9115 msm_routing_put_voice_stub_mixer),
9116 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9117 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9118 msm_routing_put_voice_stub_mixer),
9119};
9120
9121static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
9122 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
9123 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9124 msm_routing_put_voice_mixer),
9125 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9126 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9127 msm_routing_put_voice_mixer),
9128 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
9129 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
9130 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9131 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
9132 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9133 msm_routing_put_voice_mixer),
9134 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
9135 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9136 msm_routing_put_voice_mixer),
9137 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9138 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9139 msm_routing_put_voice_mixer),
9140 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9141 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9142 msm_routing_put_voice_mixer),
9143 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9144 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9145 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309146 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9147 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9148 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309149 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
9150 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9151 msm_routing_put_voice_mixer),
9152 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
9153 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9154 msm_routing_put_voice_mixer),
9155 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9156 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9157 msm_routing_put_voice_mixer),
9158 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
9159 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9160 msm_routing_put_voice_mixer),
9161 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9162 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9163 msm_routing_put_voice_mixer),
9164 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9165 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9166 msm_routing_put_voice_mixer),
9167 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
9168 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9169 msm_routing_put_voice_mixer),
9170};
9171
9172static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
9173 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9174 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9175 msm_routing_put_port_mixer),
9176 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9177 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9178 msm_routing_put_port_mixer),
9179 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9180 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9181 msm_routing_put_port_mixer),
9182 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9183 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9184 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309185 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9186 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9187 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309188 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9189 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9190 msm_routing_put_port_mixer),
9191 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9192 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9193 msm_routing_put_port_mixer),
9194 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9195 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9196 msm_routing_put_port_mixer),
9197 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9198 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9199 msm_routing_put_port_mixer),
9200 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9201 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9202 msm_routing_put_port_mixer),
9203};
9204
9205static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
9206 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9207 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9208 msm_routing_put_port_mixer),
9209 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9210 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9211 msm_routing_put_port_mixer),
9212 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9213 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9214 msm_routing_put_port_mixer),
9215 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9216 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9217 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309218 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9219 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9220 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309221 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9222 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9223 msm_routing_put_port_mixer),
9224 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9225 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9226 msm_routing_put_port_mixer),
9227 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9228 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9229 msm_routing_put_port_mixer),
9230 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9231 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9232 msm_routing_put_port_mixer),
9233 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9234 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9235 msm_routing_put_port_mixer),
9236};
9237
9238static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
9239 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9240 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9241 msm_routing_put_port_mixer),
9242 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9243 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9244 msm_routing_put_port_mixer),
9245 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9246 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9247 msm_routing_put_port_mixer),
9248 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9249 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9250 msm_routing_put_port_mixer),
9251 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9252 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9253 msm_routing_put_port_mixer),
9254 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9255 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9256 msm_routing_put_port_mixer),
9257 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9258 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9259 msm_routing_put_port_mixer),
9260 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9261 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9262 msm_routing_put_port_mixer),
9263 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9264 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9265 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309266 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9267 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9268 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309269 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9270 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9271 msm_routing_put_port_mixer),
9272 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9273 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9274 msm_routing_put_port_mixer),
9275 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9276 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9277 msm_routing_put_port_mixer),
9278 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9279 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9280 msm_routing_put_port_mixer),
9281 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9282 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9283 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309284 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9285 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9286 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309287 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9288 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9289 msm_routing_put_port_mixer),
9290 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9291 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9292 msm_routing_put_port_mixer),
9293 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9294 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9295 msm_routing_put_port_mixer),
9296 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9297 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9298 msm_routing_put_port_mixer),
9299 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9300 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9301 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309302 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9303 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9304 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309305};
9306
9307static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
9308 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9309 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9310 msm_routing_put_port_mixer),
9311 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9312 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9313 msm_routing_put_port_mixer),
9314 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9315 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9316 msm_routing_put_port_mixer),
9317 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9318 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9319 msm_routing_put_port_mixer),
9320 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
9321 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
9322 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009323 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9324 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9325 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309326};
9327
9328static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
9329 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9330 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9331 msm_routing_put_port_mixer),
9332 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9333 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9334 msm_routing_put_port_mixer),
9335 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9336 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9337 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009338 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9339 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9340 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309341};
9342
9343static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
9344 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9345 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9346 msm_routing_put_port_mixer),
9347 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9348 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9349 msm_routing_put_port_mixer),
9350 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9351 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9352 msm_routing_put_port_mixer),
9353};
9354
9355static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
9356 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9357 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9358 msm_routing_put_port_mixer),
9359 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9360 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9361 msm_routing_put_port_mixer),
9362 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9363 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9364 msm_routing_put_port_mixer),
9365};
9366
Rohit Kumara5077932017-09-10 22:05:05 +05309367static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
9368 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9369 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9370 msm_routing_put_port_mixer),
9371 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9372 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9373 msm_routing_put_port_mixer),
9374 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9375 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9376 msm_routing_put_port_mixer),
9377};
9378
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309379static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9380 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9381 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9382 msm_routing_put_port_mixer),
9383 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9384 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9385 msm_routing_put_port_mixer),
9386 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9387 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9388 msm_routing_put_port_mixer),
9389 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9390 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9391 msm_routing_put_port_mixer),
9392 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9393 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9394 msm_routing_put_port_mixer),
9395 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9396 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9397 msm_routing_put_port_mixer),
9398};
9399
9400static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9401 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9402 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9403 msm_routing_put_port_mixer),
9404 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9405 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9406 msm_routing_put_port_mixer),
9407 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9408 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9409 msm_routing_put_port_mixer),
9410 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9411 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9412 msm_routing_put_port_mixer),
9413 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9414 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9415 msm_routing_put_port_mixer),
9416};
9417
9418static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9419 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9420 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9421 msm_routing_put_port_mixer),
9422 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9423 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9424 msm_routing_put_port_mixer),
9425 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9426 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9427 msm_routing_put_port_mixer),
9428 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9429 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9430 msm_routing_put_port_mixer),
9431 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9432 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9433 msm_routing_put_port_mixer),
9434 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9435 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9436 msm_routing_put_port_mixer),
9437 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9438 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9439 msm_routing_put_port_mixer),
9440 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9441 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9442 msm_routing_put_port_mixer),
9443 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9444 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9445 msm_routing_put_port_mixer),
9446 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9447 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9448 msm_routing_put_port_mixer),
9449 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9450 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9451 msm_routing_put_port_mixer),
9452 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9453 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9454 msm_routing_put_port_mixer),
9455};
9456
9457static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9458 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9459 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9460 msm_routing_put_port_mixer),
9461 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9462 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9463 msm_routing_put_port_mixer),
9464};
9465
9466static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9467 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9468 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9469 msm_routing_put_port_mixer),
9470 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9471 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9472 msm_routing_put_port_mixer),
9473};
9474
9475
9476static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9477 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9478 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9479 msm_routing_put_port_mixer),
9480};
9481
9482static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9483 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9484 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9485 msm_routing_put_port_mixer),
9486};
9487
9488static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9489 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9490 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9491 msm_routing_put_port_mixer),
9492};
9493
9494static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9495 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9496 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9497 msm_routing_put_port_mixer),
9498 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9499 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9500 msm_routing_put_port_mixer),
9501};
9502
9503static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9504 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9505 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9506 msm_routing_put_port_mixer),
9507 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9508 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9509 msm_routing_put_port_mixer),
9510 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_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("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9514 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9515 msm_routing_put_port_mixer),
9516 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9517 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9518 msm_routing_put_port_mixer),
9519 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9520 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9521 msm_routing_put_port_mixer),
9522 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9523 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9524 msm_routing_put_port_mixer),
9525 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9526 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9527 msm_routing_put_port_mixer),
9528 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9529 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9530 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009531 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9532 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9533 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309534};
9535
9536static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9537 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9538 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9539 msm_routing_put_port_mixer),
9540};
9541
9542static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9543 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9544 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9545 msm_routing_put_port_mixer),
9546 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9547 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9548 msm_routing_put_port_mixer),
9549 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9550 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9551 msm_routing_put_port_mixer),
9552 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9553 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9554 msm_routing_put_port_mixer),
9555 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9556 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9557 msm_routing_put_port_mixer),
9558 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9559 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9560 msm_routing_put_port_mixer),
9561 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9562 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9563 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309564 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9565 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9566 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309567 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9568 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9569 msm_routing_put_port_mixer),
9570};
9571
Rohit Kumara5077932017-09-10 22:05:05 +05309572static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9573 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9574 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9575 msm_routing_put_port_mixer),
9576 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9577 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9578 msm_routing_put_port_mixer),
9579 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9580 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9581 msm_routing_put_port_mixer),
9582 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9583 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9584 msm_routing_put_port_mixer),
9585 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9586 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9587 msm_routing_put_port_mixer),
9588 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9589 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9590 msm_routing_put_port_mixer),
9591 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9592 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9593 msm_routing_put_port_mixer),
9594};
9595
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309596static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9597 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9598 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9599 msm_routing_get_port_mixer,
9600 msm_routing_put_port_mixer),
9601 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9602 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9603 msm_routing_get_port_mixer,
9604 msm_routing_put_port_mixer),
9605 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9606 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9607 msm_routing_get_port_mixer,
9608 msm_routing_put_port_mixer),
9609 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9610 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9611 msm_routing_get_port_mixer,
9612 msm_routing_put_port_mixer),
9613 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9614 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9615 msm_routing_get_port_mixer,
9616 msm_routing_put_port_mixer),
9617 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9618 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9619 msm_routing_get_port_mixer,
9620 msm_routing_put_port_mixer),
9621 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9622 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9623 msm_routing_get_port_mixer,
9624 msm_routing_put_port_mixer),
9625 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9626 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9627 msm_routing_get_port_mixer,
9628 msm_routing_put_port_mixer),
9629 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9630 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9631 msm_routing_get_port_mixer,
9632 msm_routing_put_port_mixer),
9633 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9634 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9635 msm_routing_get_port_mixer,
9636 msm_routing_put_port_mixer),
9637 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9638 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9639 msm_routing_get_port_mixer,
9640 msm_routing_put_port_mixer),
9641 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9642 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9643 msm_routing_get_port_mixer,
9644 msm_routing_put_port_mixer),
9645 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9646 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9647 msm_routing_get_port_mixer,
9648 msm_routing_put_port_mixer),
9649 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9650 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9651 msm_routing_get_port_mixer,
9652 msm_routing_put_port_mixer),
9653 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9654 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9655 msm_routing_get_port_mixer,
9656 msm_routing_put_port_mixer),
9657 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9658 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9659 msm_routing_get_port_mixer,
9660 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309661 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9662 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9663 msm_routing_get_port_mixer,
9664 msm_routing_put_port_mixer),
9665 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9666 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9667 msm_routing_get_port_mixer,
9668 msm_routing_put_port_mixer),
9669 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9670 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9671 msm_routing_get_port_mixer,
9672 msm_routing_put_port_mixer),
9673 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9674 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9675 msm_routing_get_port_mixer,
9676 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309677};
9678
9679static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9680 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9681 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9682 msm_routing_get_port_mixer,
9683 msm_routing_put_port_mixer),
9684 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9685 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9686 msm_routing_get_port_mixer,
9687 msm_routing_put_port_mixer),
9688 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9689 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9690 msm_routing_get_port_mixer,
9691 msm_routing_put_port_mixer),
9692 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9693 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9694 msm_routing_get_port_mixer,
9695 msm_routing_put_port_mixer),
9696 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9697 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9698 msm_routing_get_port_mixer,
9699 msm_routing_put_port_mixer),
9700 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9701 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9702 msm_routing_get_port_mixer,
9703 msm_routing_put_port_mixer),
9704 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9705 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9706 msm_routing_get_port_mixer,
9707 msm_routing_put_port_mixer),
9708 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9709 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9710 msm_routing_get_port_mixer,
9711 msm_routing_put_port_mixer),
9712 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9713 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9714 msm_routing_get_port_mixer,
9715 msm_routing_put_port_mixer),
9716 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9717 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9718 msm_routing_get_port_mixer,
9719 msm_routing_put_port_mixer),
9720 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9721 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9722 msm_routing_get_port_mixer,
9723 msm_routing_put_port_mixer),
9724 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9725 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9726 msm_routing_get_port_mixer,
9727 msm_routing_put_port_mixer),
9728 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9729 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9730 msm_routing_get_port_mixer,
9731 msm_routing_put_port_mixer),
9732 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9733 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9734 msm_routing_get_port_mixer,
9735 msm_routing_put_port_mixer),
9736 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9737 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9738 msm_routing_get_port_mixer,
9739 msm_routing_put_port_mixer),
9740 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9741 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9742 msm_routing_get_port_mixer,
9743 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309744 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9745 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9746 msm_routing_get_port_mixer,
9747 msm_routing_put_port_mixer),
9748 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9749 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9750 msm_routing_get_port_mixer,
9751 msm_routing_put_port_mixer),
9752 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9753 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9754 msm_routing_get_port_mixer,
9755 msm_routing_put_port_mixer),
9756 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9757 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9758 msm_routing_get_port_mixer,
9759 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309760};
9761
9762static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9763 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9764 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9765 msm_routing_get_port_mixer,
9766 msm_routing_put_port_mixer),
9767 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9768 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9769 msm_routing_get_port_mixer,
9770 msm_routing_put_port_mixer),
9771 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9772 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9773 msm_routing_get_port_mixer,
9774 msm_routing_put_port_mixer),
9775 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9776 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9777 msm_routing_get_port_mixer,
9778 msm_routing_put_port_mixer),
9779 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9780 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9781 msm_routing_get_port_mixer,
9782 msm_routing_put_port_mixer),
9783 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9784 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9785 msm_routing_get_port_mixer,
9786 msm_routing_put_port_mixer),
9787 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9788 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9789 msm_routing_get_port_mixer,
9790 msm_routing_put_port_mixer),
9791 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9792 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9793 msm_routing_get_port_mixer,
9794 msm_routing_put_port_mixer),
9795 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9796 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9797 msm_routing_get_port_mixer,
9798 msm_routing_put_port_mixer),
9799 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9800 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9801 msm_routing_get_port_mixer,
9802 msm_routing_put_port_mixer),
9803 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9804 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9805 msm_routing_get_port_mixer,
9806 msm_routing_put_port_mixer),
9807 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9808 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9809 msm_routing_get_port_mixer,
9810 msm_routing_put_port_mixer),
9811 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9812 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9813 msm_routing_get_port_mixer,
9814 msm_routing_put_port_mixer),
9815 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9816 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9817 msm_routing_get_port_mixer,
9818 msm_routing_put_port_mixer),
9819 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9820 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9821 msm_routing_get_port_mixer,
9822 msm_routing_put_port_mixer),
9823 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9824 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9825 msm_routing_get_port_mixer,
9826 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309827 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9828 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9829 msm_routing_get_port_mixer,
9830 msm_routing_put_port_mixer),
9831 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9832 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9833 msm_routing_get_port_mixer,
9834 msm_routing_put_port_mixer),
9835 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9836 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9837 msm_routing_get_port_mixer,
9838 msm_routing_put_port_mixer),
9839 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9840 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9841 msm_routing_get_port_mixer,
9842 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309843};
9844
9845static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9846 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9847 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9848 msm_routing_get_port_mixer,
9849 msm_routing_put_port_mixer),
9850 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9851 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9852 msm_routing_get_port_mixer,
9853 msm_routing_put_port_mixer),
9854 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9855 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9856 msm_routing_get_port_mixer,
9857 msm_routing_put_port_mixer),
9858 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9859 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9860 msm_routing_get_port_mixer,
9861 msm_routing_put_port_mixer),
9862 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9863 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9864 msm_routing_get_port_mixer,
9865 msm_routing_put_port_mixer),
9866 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9867 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9868 msm_routing_get_port_mixer,
9869 msm_routing_put_port_mixer),
9870 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9871 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9872 msm_routing_get_port_mixer,
9873 msm_routing_put_port_mixer),
9874 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9875 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9876 msm_routing_get_port_mixer,
9877 msm_routing_put_port_mixer),
9878 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9879 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9880 msm_routing_get_port_mixer,
9881 msm_routing_put_port_mixer),
9882 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9883 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9884 msm_routing_get_port_mixer,
9885 msm_routing_put_port_mixer),
9886 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9887 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9888 msm_routing_get_port_mixer,
9889 msm_routing_put_port_mixer),
9890 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9891 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9892 msm_routing_get_port_mixer,
9893 msm_routing_put_port_mixer),
9894 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9895 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9896 msm_routing_get_port_mixer,
9897 msm_routing_put_port_mixer),
9898 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9899 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9900 msm_routing_get_port_mixer,
9901 msm_routing_put_port_mixer),
9902 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9903 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9904 msm_routing_get_port_mixer,
9905 msm_routing_put_port_mixer),
9906 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9907 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9908 msm_routing_get_port_mixer,
9909 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309910 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9911 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9912 msm_routing_get_port_mixer,
9913 msm_routing_put_port_mixer),
9914 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9915 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9916 msm_routing_get_port_mixer,
9917 msm_routing_put_port_mixer),
9918 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9919 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9920 msm_routing_get_port_mixer,
9921 msm_routing_put_port_mixer),
9922 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9923 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9924 msm_routing_get_port_mixer,
9925 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309926};
9927
9928static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
9929 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9930 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9931 msm_routing_get_port_mixer,
9932 msm_routing_put_port_mixer),
9933 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9934 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9935 msm_routing_get_port_mixer,
9936 msm_routing_put_port_mixer),
9937 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9938 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9939 msm_routing_get_port_mixer,
9940 msm_routing_put_port_mixer),
9941 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9942 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9943 msm_routing_get_port_mixer,
9944 msm_routing_put_port_mixer),
9945 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9946 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9947 msm_routing_get_port_mixer,
9948 msm_routing_put_port_mixer),
9949 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9950 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9951 msm_routing_get_port_mixer,
9952 msm_routing_put_port_mixer),
9953 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9954 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9955 msm_routing_get_port_mixer,
9956 msm_routing_put_port_mixer),
9957 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9958 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9959 msm_routing_get_port_mixer,
9960 msm_routing_put_port_mixer),
9961 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9962 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9963 msm_routing_get_port_mixer,
9964 msm_routing_put_port_mixer),
9965 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9966 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9967 msm_routing_get_port_mixer,
9968 msm_routing_put_port_mixer),
9969 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9970 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9971 msm_routing_get_port_mixer,
9972 msm_routing_put_port_mixer),
9973 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9974 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9975 msm_routing_get_port_mixer,
9976 msm_routing_put_port_mixer),
9977 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9978 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9979 msm_routing_get_port_mixer,
9980 msm_routing_put_port_mixer),
9981 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9982 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9983 msm_routing_get_port_mixer,
9984 msm_routing_put_port_mixer),
9985 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9986 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9987 msm_routing_get_port_mixer,
9988 msm_routing_put_port_mixer),
9989 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9990 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9991 msm_routing_get_port_mixer,
9992 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309993 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9994 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9995 msm_routing_get_port_mixer,
9996 msm_routing_put_port_mixer),
9997 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9998 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9999 msm_routing_get_port_mixer,
10000 msm_routing_put_port_mixer),
10001 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10002 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10003 msm_routing_get_port_mixer,
10004 msm_routing_put_port_mixer),
10005 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10006 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10007 msm_routing_get_port_mixer,
10008 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010009};
10010
10011static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
10012 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10013 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10014 msm_routing_get_port_mixer,
10015 msm_routing_put_port_mixer),
10016 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10017 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10018 msm_routing_get_port_mixer,
10019 msm_routing_put_port_mixer),
10020 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10021 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10022 msm_routing_get_port_mixer,
10023 msm_routing_put_port_mixer),
10024 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10025 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10026 msm_routing_get_port_mixer,
10027 msm_routing_put_port_mixer),
10028 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10029 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10030 msm_routing_get_port_mixer,
10031 msm_routing_put_port_mixer),
10032 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10033 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10034 msm_routing_get_port_mixer,
10035 msm_routing_put_port_mixer),
10036 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10037 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10038 msm_routing_get_port_mixer,
10039 msm_routing_put_port_mixer),
10040 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10041 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10042 msm_routing_get_port_mixer,
10043 msm_routing_put_port_mixer),
10044 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10045 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10046 msm_routing_get_port_mixer,
10047 msm_routing_put_port_mixer),
10048 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10049 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10050 msm_routing_get_port_mixer,
10051 msm_routing_put_port_mixer),
10052 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10053 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10054 msm_routing_get_port_mixer,
10055 msm_routing_put_port_mixer),
10056 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10057 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10058 msm_routing_get_port_mixer,
10059 msm_routing_put_port_mixer),
10060 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10061 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10062 msm_routing_get_port_mixer,
10063 msm_routing_put_port_mixer),
10064 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10065 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10066 msm_routing_get_port_mixer,
10067 msm_routing_put_port_mixer),
10068 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10069 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10070 msm_routing_get_port_mixer,
10071 msm_routing_put_port_mixer),
10072 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10073 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10074 msm_routing_get_port_mixer,
10075 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010076 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10077 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10078 msm_routing_get_port_mixer,
10079 msm_routing_put_port_mixer),
10080 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10081 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10082 msm_routing_get_port_mixer,
10083 msm_routing_put_port_mixer),
10084 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10085 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10086 msm_routing_get_port_mixer,
10087 msm_routing_put_port_mixer),
10088 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10089 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10090 msm_routing_get_port_mixer,
10091 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010092};
10093
10094static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
10095 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10096 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10097 msm_routing_get_port_mixer,
10098 msm_routing_put_port_mixer),
10099 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10100 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10101 msm_routing_get_port_mixer,
10102 msm_routing_put_port_mixer),
10103 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10104 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10105 msm_routing_get_port_mixer,
10106 msm_routing_put_port_mixer),
10107 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10108 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10109 msm_routing_get_port_mixer,
10110 msm_routing_put_port_mixer),
10111 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10112 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10113 msm_routing_get_port_mixer,
10114 msm_routing_put_port_mixer),
10115 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10116 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10117 msm_routing_get_port_mixer,
10118 msm_routing_put_port_mixer),
10119 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10120 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10121 msm_routing_get_port_mixer,
10122 msm_routing_put_port_mixer),
10123 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10124 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10125 msm_routing_get_port_mixer,
10126 msm_routing_put_port_mixer),
10127 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10128 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10129 msm_routing_get_port_mixer,
10130 msm_routing_put_port_mixer),
10131 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10132 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10133 msm_routing_get_port_mixer,
10134 msm_routing_put_port_mixer),
10135 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10136 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10137 msm_routing_get_port_mixer,
10138 msm_routing_put_port_mixer),
10139 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10140 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10141 msm_routing_get_port_mixer,
10142 msm_routing_put_port_mixer),
10143 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10144 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10145 msm_routing_get_port_mixer,
10146 msm_routing_put_port_mixer),
10147 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10148 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10149 msm_routing_get_port_mixer,
10150 msm_routing_put_port_mixer),
10151 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10152 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10153 msm_routing_get_port_mixer,
10154 msm_routing_put_port_mixer),
10155 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10156 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10157 msm_routing_get_port_mixer,
10158 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010159 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10160 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10161 msm_routing_get_port_mixer,
10162 msm_routing_put_port_mixer),
10163 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10164 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10165 msm_routing_get_port_mixer,
10166 msm_routing_put_port_mixer),
10167 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10168 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10169 msm_routing_get_port_mixer,
10170 msm_routing_put_port_mixer),
10171 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10172 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10173 msm_routing_get_port_mixer,
10174 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010175};
10176
10177static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
10178 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10179 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10180 msm_routing_get_port_mixer,
10181 msm_routing_put_port_mixer),
10182 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10183 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10184 msm_routing_get_port_mixer,
10185 msm_routing_put_port_mixer),
10186 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10187 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10188 msm_routing_get_port_mixer,
10189 msm_routing_put_port_mixer),
10190 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10191 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10192 msm_routing_get_port_mixer,
10193 msm_routing_put_port_mixer),
10194 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10195 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10196 msm_routing_get_port_mixer,
10197 msm_routing_put_port_mixer),
10198 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10199 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10200 msm_routing_get_port_mixer,
10201 msm_routing_put_port_mixer),
10202 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10203 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10204 msm_routing_get_port_mixer,
10205 msm_routing_put_port_mixer),
10206 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10207 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10208 msm_routing_get_port_mixer,
10209 msm_routing_put_port_mixer),
10210 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10211 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10212 msm_routing_get_port_mixer,
10213 msm_routing_put_port_mixer),
10214 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10215 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10216 msm_routing_get_port_mixer,
10217 msm_routing_put_port_mixer),
10218 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10219 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10220 msm_routing_get_port_mixer,
10221 msm_routing_put_port_mixer),
10222 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10223 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10224 msm_routing_get_port_mixer,
10225 msm_routing_put_port_mixer),
10226 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10227 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10228 msm_routing_get_port_mixer,
10229 msm_routing_put_port_mixer),
10230 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10231 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10232 msm_routing_get_port_mixer,
10233 msm_routing_put_port_mixer),
10234 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10235 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10236 msm_routing_get_port_mixer,
10237 msm_routing_put_port_mixer),
10238 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10239 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10240 msm_routing_get_port_mixer,
10241 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010242 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10243 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10244 msm_routing_get_port_mixer,
10245 msm_routing_put_port_mixer),
10246 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10247 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10248 msm_routing_get_port_mixer,
10249 msm_routing_put_port_mixer),
10250 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10251 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10252 msm_routing_get_port_mixer,
10253 msm_routing_put_port_mixer),
10254 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10255 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10256 msm_routing_get_port_mixer,
10257 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010258};
10259
10260static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
10261 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10262 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10263 msm_routing_get_port_mixer,
10264 msm_routing_put_port_mixer),
10265 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10266 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10267 msm_routing_get_port_mixer,
10268 msm_routing_put_port_mixer),
10269 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10270 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10271 msm_routing_get_port_mixer,
10272 msm_routing_put_port_mixer),
10273 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10274 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10275 msm_routing_get_port_mixer,
10276 msm_routing_put_port_mixer),
10277 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10278 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10279 msm_routing_get_port_mixer,
10280 msm_routing_put_port_mixer),
10281 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10282 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10283 msm_routing_get_port_mixer,
10284 msm_routing_put_port_mixer),
10285 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10286 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10287 msm_routing_get_port_mixer,
10288 msm_routing_put_port_mixer),
10289 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10290 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10291 msm_routing_get_port_mixer,
10292 msm_routing_put_port_mixer),
10293 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10294 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10295 msm_routing_get_port_mixer,
10296 msm_routing_put_port_mixer),
10297 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10298 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10299 msm_routing_get_port_mixer,
10300 msm_routing_put_port_mixer),
10301 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10302 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10303 msm_routing_get_port_mixer,
10304 msm_routing_put_port_mixer),
10305 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10306 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10307 msm_routing_get_port_mixer,
10308 msm_routing_put_port_mixer),
10309 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10310 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10311 msm_routing_get_port_mixer,
10312 msm_routing_put_port_mixer),
10313 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10314 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10315 msm_routing_get_port_mixer,
10316 msm_routing_put_port_mixer),
10317 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10318 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10319 msm_routing_get_port_mixer,
10320 msm_routing_put_port_mixer),
10321 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10322 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10323 msm_routing_get_port_mixer,
10324 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010325 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10326 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10327 msm_routing_get_port_mixer,
10328 msm_routing_put_port_mixer),
10329 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10330 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10331 msm_routing_get_port_mixer,
10332 msm_routing_put_port_mixer),
10333 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10334 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10335 msm_routing_get_port_mixer,
10336 msm_routing_put_port_mixer),
10337 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10338 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10339 msm_routing_get_port_mixer,
10340 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010341};
10342
10343static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
10344 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10345 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10346 msm_routing_get_port_mixer,
10347 msm_routing_put_port_mixer),
10348 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10349 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10350 msm_routing_get_port_mixer,
10351 msm_routing_put_port_mixer),
10352 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10353 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10354 msm_routing_get_port_mixer,
10355 msm_routing_put_port_mixer),
10356 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10357 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10358 msm_routing_get_port_mixer,
10359 msm_routing_put_port_mixer),
10360 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10361 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10362 msm_routing_get_port_mixer,
10363 msm_routing_put_port_mixer),
10364 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10365 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10366 msm_routing_get_port_mixer,
10367 msm_routing_put_port_mixer),
10368 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10369 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10370 msm_routing_get_port_mixer,
10371 msm_routing_put_port_mixer),
10372 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10373 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10374 msm_routing_get_port_mixer,
10375 msm_routing_put_port_mixer),
10376 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10377 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10378 msm_routing_get_port_mixer,
10379 msm_routing_put_port_mixer),
10380 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10381 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10382 msm_routing_get_port_mixer,
10383 msm_routing_put_port_mixer),
10384 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10385 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10386 msm_routing_get_port_mixer,
10387 msm_routing_put_port_mixer),
10388 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10389 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10390 msm_routing_get_port_mixer,
10391 msm_routing_put_port_mixer),
10392 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10393 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10394 msm_routing_get_port_mixer,
10395 msm_routing_put_port_mixer),
10396 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10397 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10398 msm_routing_get_port_mixer,
10399 msm_routing_put_port_mixer),
10400 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10401 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10402 msm_routing_get_port_mixer,
10403 msm_routing_put_port_mixer),
10404 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10405 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10406 msm_routing_get_port_mixer,
10407 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010408 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10409 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10410 msm_routing_get_port_mixer,
10411 msm_routing_put_port_mixer),
10412 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10413 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10414 msm_routing_get_port_mixer,
10415 msm_routing_put_port_mixer),
10416 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10417 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10418 msm_routing_get_port_mixer,
10419 msm_routing_put_port_mixer),
10420 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10421 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10422 msm_routing_get_port_mixer,
10423 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010424};
10425
10426static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10427 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10428 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10429 msm_routing_get_port_mixer,
10430 msm_routing_put_port_mixer),
10431 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10432 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10433 msm_routing_get_port_mixer,
10434 msm_routing_put_port_mixer),
10435 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10436 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10437 msm_routing_get_port_mixer,
10438 msm_routing_put_port_mixer),
10439 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10440 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10441 msm_routing_get_port_mixer,
10442 msm_routing_put_port_mixer),
10443 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10444 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10445 msm_routing_get_port_mixer,
10446 msm_routing_put_port_mixer),
10447 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10448 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10449 msm_routing_get_port_mixer,
10450 msm_routing_put_port_mixer),
10451 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10452 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10453 msm_routing_get_port_mixer,
10454 msm_routing_put_port_mixer),
10455 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10456 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10457 msm_routing_get_port_mixer,
10458 msm_routing_put_port_mixer),
10459 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10460 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10461 msm_routing_get_port_mixer,
10462 msm_routing_put_port_mixer),
10463 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10464 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10465 msm_routing_get_port_mixer,
10466 msm_routing_put_port_mixer),
10467 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10468 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10469 msm_routing_get_port_mixer,
10470 msm_routing_put_port_mixer),
10471 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10472 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10473 msm_routing_get_port_mixer,
10474 msm_routing_put_port_mixer),
10475 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10476 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10477 msm_routing_get_port_mixer,
10478 msm_routing_put_port_mixer),
10479 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10480 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10481 msm_routing_get_port_mixer,
10482 msm_routing_put_port_mixer),
10483 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10484 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10485 msm_routing_get_port_mixer,
10486 msm_routing_put_port_mixer),
10487 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10488 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10489 msm_routing_get_port_mixer,
10490 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010491 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10492 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10493 msm_routing_get_port_mixer,
10494 msm_routing_put_port_mixer),
10495 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10496 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10497 msm_routing_get_port_mixer,
10498 msm_routing_put_port_mixer),
10499 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10500 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10501 msm_routing_get_port_mixer,
10502 msm_routing_put_port_mixer),
10503 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10504 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10505 msm_routing_get_port_mixer,
10506 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010507};
10508
10509static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10510 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10511 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10512 msm_routing_get_port_mixer,
10513 msm_routing_put_port_mixer),
10514 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10515 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10516 msm_routing_get_port_mixer,
10517 msm_routing_put_port_mixer),
10518 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10519 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10520 msm_routing_get_port_mixer,
10521 msm_routing_put_port_mixer),
10522 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10523 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10524 msm_routing_get_port_mixer,
10525 msm_routing_put_port_mixer),
10526 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10527 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10528 msm_routing_get_port_mixer,
10529 msm_routing_put_port_mixer),
10530 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10531 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10532 msm_routing_get_port_mixer,
10533 msm_routing_put_port_mixer),
10534 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10535 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10536 msm_routing_get_port_mixer,
10537 msm_routing_put_port_mixer),
10538 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10539 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10540 msm_routing_get_port_mixer,
10541 msm_routing_put_port_mixer),
10542 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10543 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10544 msm_routing_get_port_mixer,
10545 msm_routing_put_port_mixer),
10546 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10547 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10548 msm_routing_get_port_mixer,
10549 msm_routing_put_port_mixer),
10550 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10551 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10552 msm_routing_get_port_mixer,
10553 msm_routing_put_port_mixer),
10554 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10555 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10556 msm_routing_get_port_mixer,
10557 msm_routing_put_port_mixer),
10558 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10559 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10560 msm_routing_get_port_mixer,
10561 msm_routing_put_port_mixer),
10562 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10563 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10564 msm_routing_get_port_mixer,
10565 msm_routing_put_port_mixer),
10566 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10567 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10568 msm_routing_get_port_mixer,
10569 msm_routing_put_port_mixer),
10570 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10571 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10572 msm_routing_get_port_mixer,
10573 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010574 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10575 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10576 msm_routing_get_port_mixer,
10577 msm_routing_put_port_mixer),
10578 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10579 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10580 msm_routing_get_port_mixer,
10581 msm_routing_put_port_mixer),
10582 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10583 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10584 msm_routing_get_port_mixer,
10585 msm_routing_put_port_mixer),
10586 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10587 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10588 msm_routing_get_port_mixer,
10589 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010590};
10591
10592static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10593 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10594 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10595 msm_routing_get_port_mixer,
10596 msm_routing_put_port_mixer),
10597 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10598 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10599 msm_routing_get_port_mixer,
10600 msm_routing_put_port_mixer),
10601 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10602 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10603 msm_routing_get_port_mixer,
10604 msm_routing_put_port_mixer),
10605 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10606 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10607 msm_routing_get_port_mixer,
10608 msm_routing_put_port_mixer),
10609 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10610 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10611 msm_routing_get_port_mixer,
10612 msm_routing_put_port_mixer),
10613 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10614 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10615 msm_routing_get_port_mixer,
10616 msm_routing_put_port_mixer),
10617 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10618 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10619 msm_routing_get_port_mixer,
10620 msm_routing_put_port_mixer),
10621 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10622 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10623 msm_routing_get_port_mixer,
10624 msm_routing_put_port_mixer),
10625 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10626 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10627 msm_routing_get_port_mixer,
10628 msm_routing_put_port_mixer),
10629 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10630 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10631 msm_routing_get_port_mixer,
10632 msm_routing_put_port_mixer),
10633 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10634 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10635 msm_routing_get_port_mixer,
10636 msm_routing_put_port_mixer),
10637 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10638 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10639 msm_routing_get_port_mixer,
10640 msm_routing_put_port_mixer),
10641 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10642 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10643 msm_routing_get_port_mixer,
10644 msm_routing_put_port_mixer),
10645 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10646 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10647 msm_routing_get_port_mixer,
10648 msm_routing_put_port_mixer),
10649 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10650 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10651 msm_routing_get_port_mixer,
10652 msm_routing_put_port_mixer),
10653 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10654 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10655 msm_routing_get_port_mixer,
10656 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010657 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10658 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10659 msm_routing_get_port_mixer,
10660 msm_routing_put_port_mixer),
10661 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10662 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10663 msm_routing_get_port_mixer,
10664 msm_routing_put_port_mixer),
10665 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10666 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10667 msm_routing_get_port_mixer,
10668 msm_routing_put_port_mixer),
10669 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10670 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10671 msm_routing_get_port_mixer,
10672 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010673};
10674
10675static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10676 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10677 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10678 msm_routing_get_port_mixer,
10679 msm_routing_put_port_mixer),
10680 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10681 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10682 msm_routing_get_port_mixer,
10683 msm_routing_put_port_mixer),
10684 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10685 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10686 msm_routing_get_port_mixer,
10687 msm_routing_put_port_mixer),
10688 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10689 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10690 msm_routing_get_port_mixer,
10691 msm_routing_put_port_mixer),
10692 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10693 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10694 msm_routing_get_port_mixer,
10695 msm_routing_put_port_mixer),
10696 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10697 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10698 msm_routing_get_port_mixer,
10699 msm_routing_put_port_mixer),
10700 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10701 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10702 msm_routing_get_port_mixer,
10703 msm_routing_put_port_mixer),
10704 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10705 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10706 msm_routing_get_port_mixer,
10707 msm_routing_put_port_mixer),
10708 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10709 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10710 msm_routing_get_port_mixer,
10711 msm_routing_put_port_mixer),
10712 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10713 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10714 msm_routing_get_port_mixer,
10715 msm_routing_put_port_mixer),
10716 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10717 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10718 msm_routing_get_port_mixer,
10719 msm_routing_put_port_mixer),
10720 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10721 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10722 msm_routing_get_port_mixer,
10723 msm_routing_put_port_mixer),
10724 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10725 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10726 msm_routing_get_port_mixer,
10727 msm_routing_put_port_mixer),
10728 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10729 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10730 msm_routing_get_port_mixer,
10731 msm_routing_put_port_mixer),
10732 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10733 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10734 msm_routing_get_port_mixer,
10735 msm_routing_put_port_mixer),
10736 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10737 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10738 msm_routing_get_port_mixer,
10739 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010740 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10741 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10742 msm_routing_get_port_mixer,
10743 msm_routing_put_port_mixer),
10744 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10745 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10746 msm_routing_get_port_mixer,
10747 msm_routing_put_port_mixer),
10748 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10749 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10750 msm_routing_get_port_mixer,
10751 msm_routing_put_port_mixer),
10752 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10753 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10754 msm_routing_get_port_mixer,
10755 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010756};
10757
10758static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10759 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10760 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10761 msm_routing_get_port_mixer,
10762 msm_routing_put_port_mixer),
10763 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10764 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10765 msm_routing_get_port_mixer,
10766 msm_routing_put_port_mixer),
10767 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10768 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10769 msm_routing_get_port_mixer,
10770 msm_routing_put_port_mixer),
10771 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10772 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10773 msm_routing_get_port_mixer,
10774 msm_routing_put_port_mixer),
10775 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10776 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10777 msm_routing_get_port_mixer,
10778 msm_routing_put_port_mixer),
10779 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10780 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10781 msm_routing_get_port_mixer,
10782 msm_routing_put_port_mixer),
10783 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10784 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10785 msm_routing_get_port_mixer,
10786 msm_routing_put_port_mixer),
10787 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10788 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10789 msm_routing_get_port_mixer,
10790 msm_routing_put_port_mixer),
10791 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10792 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10793 msm_routing_get_port_mixer,
10794 msm_routing_put_port_mixer),
10795 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10796 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10797 msm_routing_get_port_mixer,
10798 msm_routing_put_port_mixer),
10799 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10800 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10801 msm_routing_get_port_mixer,
10802 msm_routing_put_port_mixer),
10803 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10804 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10805 msm_routing_get_port_mixer,
10806 msm_routing_put_port_mixer),
10807 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10808 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10809 msm_routing_get_port_mixer,
10810 msm_routing_put_port_mixer),
10811 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10812 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10813 msm_routing_get_port_mixer,
10814 msm_routing_put_port_mixer),
10815 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10816 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10817 msm_routing_get_port_mixer,
10818 msm_routing_put_port_mixer),
10819 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10820 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10821 msm_routing_get_port_mixer,
10822 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010823 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10824 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10825 msm_routing_get_port_mixer,
10826 msm_routing_put_port_mixer),
10827 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10828 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10829 msm_routing_get_port_mixer,
10830 msm_routing_put_port_mixer),
10831 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10832 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10833 msm_routing_get_port_mixer,
10834 msm_routing_put_port_mixer),
10835 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10836 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10837 msm_routing_get_port_mixer,
10838 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010839};
10840
10841static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10842 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10843 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10844 msm_routing_get_port_mixer,
10845 msm_routing_put_port_mixer),
10846 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10847 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10848 msm_routing_get_port_mixer,
10849 msm_routing_put_port_mixer),
10850 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10851 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10852 msm_routing_get_port_mixer,
10853 msm_routing_put_port_mixer),
10854 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10855 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10856 msm_routing_get_port_mixer,
10857 msm_routing_put_port_mixer),
10858 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10859 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10860 msm_routing_get_port_mixer,
10861 msm_routing_put_port_mixer),
10862 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10863 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10864 msm_routing_get_port_mixer,
10865 msm_routing_put_port_mixer),
10866 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10867 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10868 msm_routing_get_port_mixer,
10869 msm_routing_put_port_mixer),
10870 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10871 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10872 msm_routing_get_port_mixer,
10873 msm_routing_put_port_mixer),
10874 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10875 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10876 msm_routing_get_port_mixer,
10877 msm_routing_put_port_mixer),
10878 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10879 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10880 msm_routing_get_port_mixer,
10881 msm_routing_put_port_mixer),
10882 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10883 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10884 msm_routing_get_port_mixer,
10885 msm_routing_put_port_mixer),
10886 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10887 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10888 msm_routing_get_port_mixer,
10889 msm_routing_put_port_mixer),
10890 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10891 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10892 msm_routing_get_port_mixer,
10893 msm_routing_put_port_mixer),
10894 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10895 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10896 msm_routing_get_port_mixer,
10897 msm_routing_put_port_mixer),
10898 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10899 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10900 msm_routing_get_port_mixer,
10901 msm_routing_put_port_mixer),
10902 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10903 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10904 msm_routing_get_port_mixer,
10905 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010906 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10907 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10908 msm_routing_get_port_mixer,
10909 msm_routing_put_port_mixer),
10910 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10911 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10912 msm_routing_get_port_mixer,
10913 msm_routing_put_port_mixer),
10914 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10915 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10916 msm_routing_get_port_mixer,
10917 msm_routing_put_port_mixer),
10918 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10919 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10920 msm_routing_get_port_mixer,
10921 msm_routing_put_port_mixer),
10922};
10923
10924static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
10925 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10926 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10927 msm_routing_get_port_mixer,
10928 msm_routing_put_port_mixer),
10929 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10930 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10931 msm_routing_get_port_mixer,
10932 msm_routing_put_port_mixer),
10933 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10934 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10935 msm_routing_get_port_mixer,
10936 msm_routing_put_port_mixer),
10937 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10938 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10939 msm_routing_get_port_mixer,
10940 msm_routing_put_port_mixer),
10941 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10942 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10943 msm_routing_get_port_mixer,
10944 msm_routing_put_port_mixer),
10945 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10946 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10947 msm_routing_get_port_mixer,
10948 msm_routing_put_port_mixer),
10949 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10950 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10951 msm_routing_get_port_mixer,
10952 msm_routing_put_port_mixer),
10953 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10954 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10955 msm_routing_get_port_mixer,
10956 msm_routing_put_port_mixer),
10957 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10958 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10959 msm_routing_get_port_mixer,
10960 msm_routing_put_port_mixer),
10961 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10962 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10963 msm_routing_get_port_mixer,
10964 msm_routing_put_port_mixer),
10965 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10966 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10967 msm_routing_get_port_mixer,
10968 msm_routing_put_port_mixer),
10969 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10970 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10971 msm_routing_get_port_mixer,
10972 msm_routing_put_port_mixer),
10973 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10974 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10975 msm_routing_get_port_mixer,
10976 msm_routing_put_port_mixer),
10977 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10978 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10979 msm_routing_get_port_mixer,
10980 msm_routing_put_port_mixer),
10981 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10982 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10983 msm_routing_get_port_mixer,
10984 msm_routing_put_port_mixer),
10985 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10986 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10987 msm_routing_get_port_mixer,
10988 msm_routing_put_port_mixer),
10989 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10990 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10991 msm_routing_get_port_mixer,
10992 msm_routing_put_port_mixer),
10993 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10994 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10995 msm_routing_get_port_mixer,
10996 msm_routing_put_port_mixer),
10997 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10998 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10999 msm_routing_get_port_mixer,
11000 msm_routing_put_port_mixer),
11001 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11002 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11003 msm_routing_get_port_mixer,
11004 msm_routing_put_port_mixer),
11005};
11006
11007static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
11008 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11009 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11010 msm_routing_get_port_mixer,
11011 msm_routing_put_port_mixer),
11012 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11013 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11014 msm_routing_get_port_mixer,
11015 msm_routing_put_port_mixer),
11016 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11017 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11018 msm_routing_get_port_mixer,
11019 msm_routing_put_port_mixer),
11020 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11021 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11022 msm_routing_get_port_mixer,
11023 msm_routing_put_port_mixer),
11024 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11025 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11026 msm_routing_get_port_mixer,
11027 msm_routing_put_port_mixer),
11028 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11029 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11030 msm_routing_get_port_mixer,
11031 msm_routing_put_port_mixer),
11032 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11033 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11034 msm_routing_get_port_mixer,
11035 msm_routing_put_port_mixer),
11036 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11037 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11038 msm_routing_get_port_mixer,
11039 msm_routing_put_port_mixer),
11040 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11041 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11042 msm_routing_get_port_mixer,
11043 msm_routing_put_port_mixer),
11044 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11045 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11046 msm_routing_get_port_mixer,
11047 msm_routing_put_port_mixer),
11048 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11049 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11050 msm_routing_get_port_mixer,
11051 msm_routing_put_port_mixer),
11052 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11053 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11054 msm_routing_get_port_mixer,
11055 msm_routing_put_port_mixer),
11056 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11057 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11058 msm_routing_get_port_mixer,
11059 msm_routing_put_port_mixer),
11060 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11061 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11062 msm_routing_get_port_mixer,
11063 msm_routing_put_port_mixer),
11064 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11065 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11066 msm_routing_get_port_mixer,
11067 msm_routing_put_port_mixer),
11068 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11069 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11070 msm_routing_get_port_mixer,
11071 msm_routing_put_port_mixer),
11072 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11073 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11074 msm_routing_get_port_mixer,
11075 msm_routing_put_port_mixer),
11076 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11077 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11078 msm_routing_get_port_mixer,
11079 msm_routing_put_port_mixer),
11080 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11081 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11082 msm_routing_get_port_mixer,
11083 msm_routing_put_port_mixer),
11084 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11085 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11086 msm_routing_get_port_mixer,
11087 msm_routing_put_port_mixer),
11088};
11089
11090static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
11091 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11092 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11093 msm_routing_get_port_mixer,
11094 msm_routing_put_port_mixer),
11095 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11096 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11097 msm_routing_get_port_mixer,
11098 msm_routing_put_port_mixer),
11099 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11100 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11101 msm_routing_get_port_mixer,
11102 msm_routing_put_port_mixer),
11103 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11104 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11105 msm_routing_get_port_mixer,
11106 msm_routing_put_port_mixer),
11107 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11108 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11109 msm_routing_get_port_mixer,
11110 msm_routing_put_port_mixer),
11111 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11112 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11113 msm_routing_get_port_mixer,
11114 msm_routing_put_port_mixer),
11115 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11116 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11117 msm_routing_get_port_mixer,
11118 msm_routing_put_port_mixer),
11119 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11120 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11121 msm_routing_get_port_mixer,
11122 msm_routing_put_port_mixer),
11123 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11124 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11125 msm_routing_get_port_mixer,
11126 msm_routing_put_port_mixer),
11127 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11128 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11129 msm_routing_get_port_mixer,
11130 msm_routing_put_port_mixer),
11131 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11132 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11133 msm_routing_get_port_mixer,
11134 msm_routing_put_port_mixer),
11135 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11136 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11137 msm_routing_get_port_mixer,
11138 msm_routing_put_port_mixer),
11139 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11140 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11141 msm_routing_get_port_mixer,
11142 msm_routing_put_port_mixer),
11143 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11144 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11145 msm_routing_get_port_mixer,
11146 msm_routing_put_port_mixer),
11147 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11148 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11149 msm_routing_get_port_mixer,
11150 msm_routing_put_port_mixer),
11151 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11152 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11153 msm_routing_get_port_mixer,
11154 msm_routing_put_port_mixer),
11155 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11156 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11157 msm_routing_get_port_mixer,
11158 msm_routing_put_port_mixer),
11159 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11160 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11161 msm_routing_get_port_mixer,
11162 msm_routing_put_port_mixer),
11163 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11164 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11165 msm_routing_get_port_mixer,
11166 msm_routing_put_port_mixer),
11167 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11168 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11169 msm_routing_get_port_mixer,
11170 msm_routing_put_port_mixer),
11171};
11172
11173static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
11174 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11175 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11176 msm_routing_get_port_mixer,
11177 msm_routing_put_port_mixer),
11178 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11179 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11180 msm_routing_get_port_mixer,
11181 msm_routing_put_port_mixer),
11182 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11183 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11184 msm_routing_get_port_mixer,
11185 msm_routing_put_port_mixer),
11186 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11187 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11188 msm_routing_get_port_mixer,
11189 msm_routing_put_port_mixer),
11190 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11191 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11192 msm_routing_get_port_mixer,
11193 msm_routing_put_port_mixer),
11194 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11195 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11196 msm_routing_get_port_mixer,
11197 msm_routing_put_port_mixer),
11198 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11199 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11200 msm_routing_get_port_mixer,
11201 msm_routing_put_port_mixer),
11202 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11203 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11204 msm_routing_get_port_mixer,
11205 msm_routing_put_port_mixer),
11206 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11207 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11208 msm_routing_get_port_mixer,
11209 msm_routing_put_port_mixer),
11210 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11211 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11212 msm_routing_get_port_mixer,
11213 msm_routing_put_port_mixer),
11214 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11215 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11216 msm_routing_get_port_mixer,
11217 msm_routing_put_port_mixer),
11218 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11219 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11220 msm_routing_get_port_mixer,
11221 msm_routing_put_port_mixer),
11222 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11223 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11224 msm_routing_get_port_mixer,
11225 msm_routing_put_port_mixer),
11226 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11227 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11228 msm_routing_get_port_mixer,
11229 msm_routing_put_port_mixer),
11230 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11231 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11232 msm_routing_get_port_mixer,
11233 msm_routing_put_port_mixer),
11234 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11235 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11236 msm_routing_get_port_mixer,
11237 msm_routing_put_port_mixer),
11238 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11239 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11240 msm_routing_get_port_mixer,
11241 msm_routing_put_port_mixer),
11242 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11243 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11244 msm_routing_get_port_mixer,
11245 msm_routing_put_port_mixer),
11246 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11247 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11248 msm_routing_get_port_mixer,
11249 msm_routing_put_port_mixer),
11250 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11251 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11252 msm_routing_get_port_mixer,
11253 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011254};
11255
11256static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
11257 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11258 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11259 msm_routing_put_port_mixer),
11260 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11261 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11262 msm_routing_put_port_mixer),
11263 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11264 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11265 msm_routing_put_port_mixer),
11266 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11267 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11268 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011269 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11270 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11271 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011272 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11273 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11274 msm_routing_put_port_mixer),
11275 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11276 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11277 msm_routing_put_port_mixer),
11278};
11279
11280static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
11281 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11282 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11283 msm_routing_put_port_mixer),
11284 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11285 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11286 msm_routing_put_port_mixer),
11287 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11288 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11289 msm_routing_put_port_mixer),
11290 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11291 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11292 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011293 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11294 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11295 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011296 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11297 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11298 msm_routing_put_port_mixer),
11299 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11300 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
11301 msm_routing_put_port_mixer),
11302 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11303 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11304 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080011305 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11306 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
11307 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011308};
11309
11310static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
11311 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11312 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11313 msm_routing_put_listen_mixer),
11314 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11315 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11316 msm_routing_put_listen_mixer),
11317 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11318 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11319 msm_routing_put_listen_mixer),
11320 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11321 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11322 msm_routing_put_listen_mixer),
11323 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11324 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11325 msm_routing_put_listen_mixer),
11326 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11327 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11328 msm_routing_put_listen_mixer),
11329 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11330 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11331 msm_routing_put_listen_mixer),
11332 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11333 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11334 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011335 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11336 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11337 msm_routing_put_listen_mixer),
11338 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11339 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11340 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011341};
11342
11343static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
11344 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11345 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11346 msm_routing_put_listen_mixer),
11347 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11348 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11349 msm_routing_put_listen_mixer),
11350 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11351 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11352 msm_routing_put_listen_mixer),
11353 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11354 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11355 msm_routing_put_listen_mixer),
11356 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11357 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11358 msm_routing_put_listen_mixer),
11359 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11360 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11361 msm_routing_put_listen_mixer),
11362 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11363 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11364 msm_routing_put_listen_mixer),
11365 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11366 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11367 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011368 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11369 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11370 msm_routing_put_listen_mixer),
11371 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11372 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11373 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011374};
11375
11376static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
11377 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11378 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11379 msm_routing_put_listen_mixer),
11380 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11381 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11382 msm_routing_put_listen_mixer),
11383 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11384 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11385 msm_routing_put_listen_mixer),
11386 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11387 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11388 msm_routing_put_listen_mixer),
11389 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11390 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11391 msm_routing_put_listen_mixer),
11392 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11393 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11394 msm_routing_put_listen_mixer),
11395 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11396 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11397 msm_routing_put_listen_mixer),
11398 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11399 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11400 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011401 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11402 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11403 msm_routing_put_listen_mixer),
11404 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11405 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11406 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011407};
11408
11409static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11410 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11411 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11412 msm_routing_put_listen_mixer),
11413 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11414 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11415 msm_routing_put_listen_mixer),
11416 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11417 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11418 msm_routing_put_listen_mixer),
11419 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11420 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11421 msm_routing_put_listen_mixer),
11422 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11423 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11424 msm_routing_put_listen_mixer),
11425 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11426 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11427 msm_routing_put_listen_mixer),
11428 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11429 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11430 msm_routing_put_listen_mixer),
11431 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11432 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11433 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011434 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11435 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11436 msm_routing_put_listen_mixer),
11437 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11438 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11439 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011440};
11441
11442static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11443 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11444 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11445 msm_routing_put_listen_mixer),
11446 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11447 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11448 msm_routing_put_listen_mixer),
11449 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11450 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11451 msm_routing_put_listen_mixer),
11452 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11453 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11454 msm_routing_put_listen_mixer),
11455 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11456 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11457 msm_routing_put_listen_mixer),
11458 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11459 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11460 msm_routing_put_listen_mixer),
11461 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11462 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11463 msm_routing_put_listen_mixer),
11464 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11465 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11466 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011467 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11468 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11469 msm_routing_put_listen_mixer),
11470 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11471 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11472 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011473};
11474
11475static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11476 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11477 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11478 msm_routing_put_listen_mixer),
11479 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11480 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11481 msm_routing_put_listen_mixer),
11482 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11483 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11484 msm_routing_put_listen_mixer),
11485 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11486 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11487 msm_routing_put_listen_mixer),
11488 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11489 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11490 msm_routing_put_listen_mixer),
11491 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11492 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11493 msm_routing_put_listen_mixer),
11494 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11495 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11496 msm_routing_put_listen_mixer),
11497 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11498 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11499 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011500 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11501 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11502 msm_routing_put_listen_mixer),
11503 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11504 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11505 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011506};
11507
11508static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11509 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11510 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11511 msm_routing_put_listen_mixer),
11512 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11513 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11514 msm_routing_put_listen_mixer),
11515 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11516 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11517 msm_routing_put_listen_mixer),
11518 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11519 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11520 msm_routing_put_listen_mixer),
11521 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11522 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11523 msm_routing_put_listen_mixer),
11524 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11525 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11526 msm_routing_put_listen_mixer),
11527 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11528 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11529 msm_routing_put_listen_mixer),
11530 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11531 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11532 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011533 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11534 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11535 msm_routing_put_listen_mixer),
11536 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11537 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11538 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011539};
11540
11541static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11542 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11543 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11544 msm_routing_put_listen_mixer),
11545 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11546 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11547 msm_routing_put_listen_mixer),
11548 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11549 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11550 msm_routing_put_listen_mixer),
11551 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11552 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11553 msm_routing_put_listen_mixer),
11554 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11555 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11556 msm_routing_put_listen_mixer),
11557 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11558 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11559 msm_routing_put_listen_mixer),
11560 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11561 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11562 msm_routing_put_listen_mixer),
11563 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11564 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11565 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011566 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11567 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11568 msm_routing_put_listen_mixer),
11569 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11570 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11571 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011572};
11573
11574static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11575 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11576 0, 1, 0, msm_routing_get_switch_mixer,
11577 msm_routing_put_switch_mixer);
11578
11579static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11580 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11581 0, 1, 0, msm_routing_get_switch_mixer,
11582 msm_routing_put_switch_mixer);
11583
11584static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11585 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11586 0, 1, 0, msm_routing_get_switch_mixer,
11587 msm_routing_put_switch_mixer);
11588
11589static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11590 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11591 0, 1, 0, msm_routing_get_switch_mixer,
11592 msm_routing_put_switch_mixer);
11593
11594static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11595 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11596 0, 1, 0, msm_routing_get_switch_mixer,
11597 msm_routing_put_switch_mixer);
11598
11599static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11600 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11601 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11602 msm_routing_put_fm_pcmrx_switch_mixer);
11603
11604static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11605 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11606 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11607 msm_routing_put_int0_mi2s_switch_mixer);
11608
11609static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11610 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11611 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11612 msm_routing_put_int4_mi2s_switch_mixer);
11613
11614static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11615 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11616 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11617 msm_routing_put_pri_mi2s_switch_mixer);
11618
11619static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11620 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11621 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11622 msm_routing_put_sec_mi2s_switch_mixer);
11623
11624static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11625 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11626 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11627 msm_routing_put_tert_mi2s_switch_mixer);
11628
11629static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11630 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11631 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11632 msm_routing_put_quat_mi2s_switch_mixer);
11633
Rohit Kumara5077932017-09-10 22:05:05 +053011634static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11635 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11636 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11637 msm_routing_put_quin_mi2s_switch_mixer);
11638
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011639static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11640 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11641 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11642 msm_routing_put_hfp_switch_mixer);
11643
11644static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11645 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11646 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11647 msm_routing_put_hfp_switch_mixer);
11648
11649static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11650 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11651 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11652 msm_routing_put_hfp_switch_mixer);
11653
11654static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11655 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11656 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11657 msm_routing_put_hfp_switch_mixer);
11658
11659static const struct snd_kcontrol_new usb_switch_mixer_controls =
11660 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11661 0, 1, 0, msm_routing_get_usb_switch_mixer,
11662 msm_routing_put_usb_switch_mixer);
11663
11664static const struct soc_enum lsm_port_enum =
11665 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11666
11667static const char * const lsm_func_text[] = {
11668 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11669};
11670static const struct soc_enum lsm_func_enum =
11671 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11672
11673static const struct snd_kcontrol_new lsm_controls[] = {
11674 /* kcontrol of lsm_function */
11675 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11676 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11677 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11678 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11679 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11680 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11681 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11682 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11683 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11684 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11685 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11686 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11687 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11688 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11689 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11690 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11691 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11692 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Ashish Jain01b10322018-05-12 15:37:44 +053011693 SOC_ENUM_EXT(PRI_TDM_TX_2_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11694 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11695 SOC_ENUM_EXT(PRI_TDM_TX_3_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11696 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011697 /* kcontrol of lsm_port */
11698 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11699 msm_routing_lsm_port_get,
11700 msm_routing_lsm_port_put),
11701 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11702 msm_routing_lsm_port_get,
11703 msm_routing_lsm_port_put),
11704 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11705 msm_routing_lsm_port_get,
11706 msm_routing_lsm_port_put),
11707 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11708 msm_routing_lsm_port_get,
11709 msm_routing_lsm_port_put),
11710 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11711 msm_routing_lsm_port_get,
11712 msm_routing_lsm_port_put),
11713 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11714 msm_routing_lsm_port_get,
11715 msm_routing_lsm_port_put),
11716 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11717 msm_routing_lsm_port_get,
11718 msm_routing_lsm_port_put),
11719 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11720 msm_routing_lsm_port_get,
11721 msm_routing_lsm_port_put),
11722};
11723
11724static const char * const aanc_slim_0_rx_text[] = {
11725 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11726 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11727};
11728
11729static const struct soc_enum aanc_slim_0_rx_enum =
11730 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11731 aanc_slim_0_rx_text);
11732
11733static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11734 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11735 msm_routing_slim_0_rx_aanc_mux_get,
11736 msm_routing_slim_0_rx_aanc_mux_put)
11737};
11738
11739static int msm_routing_get_stereo_to_custom_stereo_control(
11740 struct snd_kcontrol *kcontrol,
11741 struct snd_ctl_elem_value *ucontrol)
11742{
11743 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11744 return 0;
11745}
11746
11747static int msm_routing_put_stereo_to_custom_stereo_control(
11748 struct snd_kcontrol *kcontrol,
11749 struct snd_ctl_elem_value *ucontrol)
11750{
11751 int flag = 0, i = 0, rc = 0, idx = 0;
11752 int be_index = 0, port_id, topo_id;
11753 unsigned int session_id = 0;
11754 uint16_t op_FL_ip_FL_weight = 0;
11755 uint16_t op_FL_ip_FR_weight = 0;
11756 uint16_t op_FR_ip_FL_weight = 0;
11757 uint16_t op_FR_ip_FR_weight = 0;
11758
11759 flag = ucontrol->value.integer.value[0];
11760 pr_debug("%s E flag %d\n", __func__, flag);
11761
11762 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11763 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11764 __func__, is_custom_stereo_on, flag);
11765 return 0;
11766 }
11767 is_custom_stereo_on = flag ? true : false;
11768 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11769 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11770 port_id = msm_bedais[be_index].port_id;
11771 if (!msm_bedais[be_index].active)
11772 continue;
11773 if ((port_id != SLIMBUS_0_RX) &&
11774 (port_id != RT_PROXY_PORT_001_RX) &&
11775 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11776 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11777 continue;
11778
11779 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11780 MSM_FRONTEND_DAI_MM_SIZE) {
11781 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11782 LEGACY_PCM_MODE)
11783 goto skip_send_custom_stereo;
11784 session_id =
11785 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11786 if (is_custom_stereo_on) {
11787 op_FL_ip_FL_weight =
11788 Q14_GAIN_ZERO_POINT_FIVE;
11789 op_FL_ip_FR_weight =
11790 Q14_GAIN_ZERO_POINT_FIVE;
11791 op_FR_ip_FL_weight =
11792 Q14_GAIN_ZERO_POINT_FIVE;
11793 op_FR_ip_FR_weight =
11794 Q14_GAIN_ZERO_POINT_FIVE;
11795 } else {
11796 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11797 op_FL_ip_FR_weight = 0;
11798 op_FR_ip_FL_weight = 0;
11799 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11800 }
11801 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11802 unsigned long copp =
11803 session_copp_map[i]
11804 [SESSION_TYPE_RX][be_index];
11805 if (!test_bit(idx, &copp))
11806 goto skip_send_custom_stereo;
11807 topo_id = adm_get_topology_for_port_copp_idx(
11808 msm_bedais[be_index].port_id, idx);
11809 if (topo_id < 0)
11810 pr_debug("%s:Err:custom stereo topo %d",
11811 __func__, topo_id);
11812 pr_debug("idx %d\n", idx);
11813 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11814 rc = msm_ds2_dap_set_custom_stereo_onoff
11815 (msm_bedais[be_index].port_id,
11816 idx, is_custom_stereo_on);
11817 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11818 rc = dolby_dap_set_custom_stereo_onoff(
11819 msm_bedais[be_index].port_id,
11820 idx, is_custom_stereo_on);
11821 else
11822 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11823 (msm_bedais[be_index].port_id,
11824 idx, session_id,
11825 op_FL_ip_FL_weight,
11826 op_FL_ip_FR_weight,
11827 op_FR_ip_FL_weight,
11828 op_FR_ip_FR_weight);
11829 if (rc < 0)
11830skip_send_custom_stereo:
11831 pr_err("%s: err setting custom stereo\n",
11832 __func__);
11833 }
11834
11835 }
11836 }
11837 return 0;
11838}
11839
11840static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11841 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11842 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11843 msm_routing_put_stereo_to_custom_stereo_control),
11844};
11845
11846static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11847 struct snd_ctl_elem_value *ucontrol)
11848{
11849 return 0;
11850}
11851
11852static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11853 struct snd_ctl_elem_value *ucontrol)
11854{
11855 int i = 0, j;
11856 int num_app_types = ucontrol->value.integer.value[i++];
11857
11858 pr_debug("%s\n", __func__);
11859
11860 memset(app_type_cfg, 0, MAX_APP_TYPES*
11861 sizeof(struct msm_pcm_routing_app_type_data));
11862 if (num_app_types > MAX_APP_TYPES) {
11863 pr_err("%s: number of app types exceed the max supported\n",
11864 __func__);
11865 return -EINVAL;
11866 }
11867 for (j = 0; j < num_app_types; j++) {
11868 app_type_cfg[j].app_type =
11869 ucontrol->value.integer.value[i++];
11870 app_type_cfg[j].sample_rate =
11871 ucontrol->value.integer.value[i++];
11872 app_type_cfg[j].bit_width =
11873 ucontrol->value.integer.value[i++];
11874 }
11875
11876 return 0;
11877}
11878
11879static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
11880 struct snd_ctl_elem_value *ucontrol)
11881{
11882 int j, fe_id, be_id, port_type;
11883 int ret = 0;
11884 unsigned long copp;
11885 struct msm_pcm_routing_bdai_data *bedai;
11886 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11887 SESSION_TYPE_RX;
11888 int app_type = ucontrol->value.integer.value[1];
11889 int gain = (ucontrol->value.integer.value[2] +
11890 ucontrol->value.integer.value[3])/2;
11891
11892 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11893 MSM_AFE_PORT_TYPE_TX;
11894
11895 mutex_lock(&routing_lock);
11896 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11897 if (is_be_dai_extproc(be_id))
11898 continue;
11899
11900 bedai = &msm_bedais[be_id];
11901 if (afe_get_port_type(bedai->port_id) != port_type)
11902 continue;
11903
11904 if (!bedai->active)
11905 continue;
11906
11907 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11908 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11909 continue;
11910
11911 if (app_type !=
11912 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11913 continue;
11914
11915 copp = session_copp_map[fe_id][dir][be_id];
11916 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
11917 if (!test_bit(j, &copp))
11918 continue;
11919 ret |= adm_set_volume(bedai->port_id, j, gain);
11920 }
11921 }
11922 }
11923 mutex_unlock(&routing_lock);
11924 return ret ? -EINVAL : 0;
11925}
11926
11927static const struct snd_kcontrol_new app_type_cfg_controls[] = {
11928 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
11929 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
11930 msm_routing_put_app_type_cfg_control),
11931 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
11932 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
11933};
11934
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070011935static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
11936 struct snd_ctl_elem_value *ucontrol)
11937{
11938 int copp_idx, fe_id, be_id, port_type;
11939 int ret = 0;
11940 unsigned long copp;
11941 struct msm_pcm_routing_bdai_data *bedai;
11942 char *param_data = NULL;
11943 uint32_t *update_param_data = NULL;
11944 uint32_t param_size = sizeof(uint32_t) +
11945 sizeof(struct adm_param_data_v5);
11946 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11947 SESSION_TYPE_RX;
11948 int app_type = ucontrol->value.integer.value[1];
11949 int module_id = ucontrol->value.integer.value[2];
11950 int instance_id = ucontrol->value.integer.value[3];
11951 int param_id = ucontrol->value.integer.value[4];
11952 int param_value = ucontrol->value.integer.value[5];
11953
11954 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11955 MSM_AFE_PORT_TYPE_TX;
11956 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
11957 __func__, app_type, module_id,
11958 instance_id, param_id, param_value);
11959
11960 param_data = kzalloc(param_size, GFP_KERNEL);
11961 if (!param_data)
11962 return -ENOMEM;
11963
11964 update_param_data = (uint32_t *)param_data;
11965 *update_param_data++ = module_id;
11966 *update_param_data++ = param_id;
11967 *update_param_data++ = sizeof(uint32_t);
11968 *update_param_data++ = param_value;
11969
11970 mutex_lock(&routing_lock);
11971 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11972 if (is_be_dai_extproc(be_id))
11973 continue;
11974
11975 bedai = &msm_bedais[be_id];
11976 if (afe_get_port_type(bedai->port_id) != port_type)
11977 continue;
11978
11979 if (!bedai->active)
11980 continue;
11981
11982 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11983 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11984 continue;
11985
11986 if (app_type !=
11987 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11988 continue;
11989
11990 copp = session_copp_map[fe_id][dir][be_id];
11991 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
11992 copp_idx++) {
11993 if (!test_bit(copp_idx, &copp))
11994 continue;
11995
11996 ret = adm_send_params_v5(bedai->port_id,
11997 copp_idx,
11998 param_data,
11999 param_size);
12000 if (ret) {
12001 pr_err("%s: Setting param failed with err=%d\n",
12002 __func__, ret);
12003 ret = -EINVAL;
12004 goto done;
12005 }
12006 }
12007 }
12008 }
12009done:
12010 mutex_unlock(&routing_lock);
12011 kfree(param_data);
12012 return ret;
12013}
12014
12015static const struct snd_kcontrol_new module_cfg_controls[] = {
12016 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
12017 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
12018};
12019
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012020static int msm_routing_get_lsm_app_type_cfg_control(
12021 struct snd_kcontrol *kcontrol,
12022 struct snd_ctl_elem_value *ucontrol)
12023{
12024 return 0;
12025}
12026
12027static int msm_routing_put_lsm_app_type_cfg_control(
12028 struct snd_kcontrol *kcontrol,
12029 struct snd_ctl_elem_value *ucontrol)
12030{
12031 int i = 0, j;
12032 int num_app_types = ucontrol->value.integer.value[i++];
12033
12034 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
12035 sizeof(struct msm_pcm_routing_app_type_data));
12036 if (num_app_types > MAX_APP_TYPES) {
12037 pr_err("%s: number of app types exceed the max supported\n",
12038 __func__);
12039 return -EINVAL;
12040 }
12041 for (j = 0; j < num_app_types; j++) {
12042 lsm_app_type_cfg[j].app_type =
12043 ucontrol->value.integer.value[i++];
12044 lsm_app_type_cfg[j].sample_rate =
12045 ucontrol->value.integer.value[i++];
12046 lsm_app_type_cfg[j].bit_width =
12047 ucontrol->value.integer.value[i++];
12048 }
12049
12050 return 0;
12051}
12052
12053static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
12054 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
12055 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
12056 msm_routing_put_lsm_app_type_cfg_control),
12057};
12058
12059static int msm_routing_get_use_ds1_or_ds2_control(
12060 struct snd_kcontrol *kcontrol,
12061 struct snd_ctl_elem_value *ucontrol)
12062{
12063 ucontrol->value.integer.value[0] = is_ds2_on;
12064 return 0;
12065}
12066
12067static int msm_routing_put_use_ds1_or_ds2_control(
12068 struct snd_kcontrol *kcontrol,
12069 struct snd_ctl_elem_value *ucontrol)
12070{
12071 is_ds2_on = ucontrol->value.integer.value[0];
12072 return 0;
12073}
12074
12075static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
12076 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
12077 1, 0, msm_routing_get_use_ds1_or_ds2_control,
12078 msm_routing_put_use_ds1_or_ds2_control),
12079};
12080
12081int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
12082 struct snd_ctl_elem_value *ucontrol) {
12083 int rc = 0;
12084 int be_idx = 0;
12085 char *param_value;
12086 int *update_param_value;
12087 uint32_t param_length = sizeof(uint32_t);
12088 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
12089
12090 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
12091 if (!param_value)
12092 return -ENOMEM;
12093
12094 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
12095 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
12096 break;
12097 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
12098 rc = adm_get_params(SLIMBUS_0_TX, 0,
12099 RMS_MODULEID_APPI_PASSTHRU,
12100 RMS_PARAM_FIRST_SAMPLE,
12101 param_length + param_payload_len,
12102 param_value);
12103 if (rc) {
12104 pr_err("%s: get parameters failed:%d\n", __func__, rc);
12105 kfree(param_value);
12106 return -EINVAL;
12107 }
12108 update_param_value = (int *)param_value;
12109 ucontrol->value.integer.value[0] = update_param_value[0];
12110
12111 pr_debug("%s: FROM DSP value[0] 0x%x\n",
12112 __func__, update_param_value[0]);
12113 }
12114 kfree(param_value);
12115 return 0;
12116}
12117
12118static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
12119 struct snd_ctl_elem_value *ucontrol)
12120{
12121 voc_session_id = ucontrol->value.integer.value[0];
12122
12123 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
12124
12125 return 0;
12126}
12127
12128static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
12129 struct snd_ctl_elem_value *ucontrol)
12130{
12131 ucontrol->value.integer.value[0] = voc_session_id;
12132
12133 return 0;
12134}
12135
12136static struct snd_kcontrol_new msm_voc_session_controls[] = {
12137 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
12138 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
12139 msm_voc_session_id_put),
12140};
12141
12142static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
12143 struct snd_ctl_elem_info *uinfo)
12144{
12145 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12146 uinfo->count = sizeof(struct sound_focus_param);
12147
12148 return 0;
12149}
12150
12151static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
12152 struct snd_ctl_elem_value *ucontrol)
12153{
12154 int ret = 0;
12155 struct sound_focus_param soundFocusData;
12156
12157 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12158 sizeof(struct sound_focus_param));
12159 ret = voc_set_sound_focus(soundFocusData);
12160 if (ret) {
12161 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12162 __func__, ret);
12163
12164 ret = -EINVAL;
12165 }
12166
12167 return ret;
12168}
12169
12170static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
12171 struct snd_ctl_elem_value *ucontrol)
12172{
12173 int ret = 0;
12174 struct sound_focus_param soundFocusData;
12175
12176 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
12177
12178 ret = voc_get_sound_focus(&soundFocusData);
12179 if (ret) {
12180 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12181 __func__, ret);
12182
12183 ret = -EINVAL;
12184 goto done;
12185 }
12186 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12187 sizeof(struct sound_focus_param));
12188
12189done:
12190 return ret;
12191}
12192
12193static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
12194 struct snd_ctl_elem_info *uinfo)
12195{
12196 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12197 uinfo->count = sizeof(struct source_tracking_param);
12198
12199 return 0;
12200}
12201
12202static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
12203 struct snd_ctl_elem_value *ucontrol)
12204{
12205 int ret = 0;
12206 struct source_tracking_param sourceTrackingData;
12207
12208 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
12209
12210 ret = voc_get_source_tracking(&sourceTrackingData);
12211 if (ret) {
12212 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12213 __func__, ret);
12214
12215 ret = -EINVAL;
12216 goto done;
12217 }
12218 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12219 sizeof(struct source_tracking_param));
12220
12221done:
12222 return ret;
12223}
12224
12225static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
12226 int *copp_idx)
12227{
12228 int i, idx, be_idx;
12229 int ret = 0;
12230 unsigned long copp;
12231
12232 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
12233
12234 ret = q6audio_validate_port(port_id);
12235 if (ret < 0) {
12236 pr_err("%s: port validation failed id 0x%x ret %d\n",
12237 __func__, port_id, ret);
12238
12239 ret = -EINVAL;
12240 goto done;
12241 }
12242
12243 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
12244 if (msm_bedais[be_idx].port_id == port_id)
12245 break;
12246 }
12247 if (be_idx >= MSM_BACKEND_DAI_MAX) {
12248 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
12249
12250 ret = -EINVAL;
12251 goto done;
12252 }
12253
12254 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
12255 MSM_FRONTEND_DAI_MM_SIZE) {
12256 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
12257 copp = session_copp_map[i]
12258 [session_type][be_idx];
12259 if (test_bit(idx, &copp))
12260 break;
12261 }
12262 if (idx >= MAX_COPPS_PER_PORT)
12263 continue;
12264 else
12265 break;
12266 }
12267 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
12268 pr_err("%s: Invalid FE, exiting\n", __func__);
12269
12270 ret = -EINVAL;
12271 goto done;
12272 }
12273 *copp_idx = idx;
12274 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
12275
12276done:
12277 return ret;
12278}
12279
12280static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
12281 const char *prefix, int *port_id)
12282{
12283 int ret = 0;
12284
12285 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
12286
12287 /*
12288 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
12289 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
12290 * and compare the string with the backend name to derive the port id.
12291 */
12292 if (!strcmp(kcontrol->id.name + strlen(prefix),
12293 "SLIMBUS_0")) {
12294 *port_id = SLIMBUS_0_TX;
12295 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12296 "TERT_MI2S")) {
12297 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
12298 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12299 "INT3_MI2S")) {
12300 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
12301 } else {
12302 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
12303 __func__, kcontrol->id.name);
12304
12305 ret = -EINVAL;
12306 goto done;
12307 }
12308 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
12309 __func__, kcontrol->id.name, *port_id);
12310
12311done:
12312 return ret;
12313}
12314
12315static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
12316 struct snd_ctl_elem_value *ucontrol)
12317{
12318 int ret = 0;
12319 struct sound_focus_param soundFocusData;
12320 int port_id, copp_idx;
12321
12322 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12323 "Sound Focus Audio Tx ", &port_id);
12324 if (ret != 0) {
12325 pr_err("%s: Error in deriving port id, err=%d\n",
12326 __func__, ret);
12327
12328 ret = -EINVAL;
12329 goto done;
12330 }
12331
12332 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12333 &copp_idx);
12334 if (ret) {
12335 pr_err("%s: Could not get copp idx for port_id=%d\n",
12336 __func__, port_id);
12337
12338 ret = -EINVAL;
12339 goto done;
12340 }
12341
12342 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12343 sizeof(struct sound_focus_param));
12344
12345 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
12346 if (ret) {
12347 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12348 __func__, ret);
12349
12350 ret = -EINVAL;
12351 goto done;
12352 }
12353
12354done:
12355 return ret;
12356}
12357
12358static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
12359 struct snd_ctl_elem_value *ucontrol)
12360{
12361 int ret = 0;
12362 struct sound_focus_param soundFocusData;
12363 int port_id, copp_idx;
12364
12365 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12366 "Sound Focus Audio Tx ", &port_id);
12367 if (ret) {
12368 pr_err("%s: Error in deriving port id, err=%d\n",
12369 __func__, ret);
12370
12371 ret = -EINVAL;
12372 goto done;
12373 }
12374
12375 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12376 &copp_idx);
12377 if (ret) {
12378 pr_err("%s: Could not get copp idx for port_id=%d\n",
12379 __func__, port_id);
12380
12381 ret = -EINVAL;
12382 goto done;
12383 }
12384
12385 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
12386 if (ret) {
12387 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12388 __func__, ret);
12389
12390 ret = -EINVAL;
12391 goto done;
12392 }
12393
12394 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12395 sizeof(struct sound_focus_param));
12396
12397done:
12398 return ret;
12399}
12400
12401static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
12402 struct snd_ctl_elem_value *ucontrol)
12403{
12404 int ret = 0;
12405 struct source_tracking_param sourceTrackingData;
12406 int port_id, copp_idx;
12407
12408 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12409 "Source Tracking Audio Tx ", &port_id);
12410 if (ret) {
12411 pr_err("%s: Error in deriving port id, err=%d\n",
12412 __func__, ret);
12413
12414 ret = -EINVAL;
12415 goto done;
12416 }
12417
12418 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12419 &copp_idx);
12420 if (ret) {
12421 pr_err("%s: Could not get copp idx for port_id=%d\n",
12422 __func__, port_id);
12423
12424 ret = -EINVAL;
12425 goto done;
12426 }
12427
12428 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
12429 if (ret) {
12430 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12431 __func__, ret);
12432
12433 ret = -EINVAL;
12434 goto done;
12435 }
12436
12437 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12438 sizeof(struct source_tracking_param));
12439
12440done:
12441 return ret;
12442}
12443
12444static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12445 {
12446 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12447 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12448 .name = "Sound Focus Voice Tx SLIMBUS_0",
12449 .info = msm_sound_focus_info,
12450 .get = msm_voice_sound_focus_get,
12451 .put = msm_voice_sound_focus_put,
12452 },
12453 {
12454 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12455 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12456 .name = "Source Tracking Voice Tx SLIMBUS_0",
12457 .info = msm_source_tracking_info,
12458 .get = msm_voice_source_tracking_get,
12459 },
12460 {
12461 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12462 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12463 .name = "Sound Focus Audio Tx SLIMBUS_0",
12464 .info = msm_sound_focus_info,
12465 .get = msm_audio_sound_focus_get,
12466 .put = msm_audio_sound_focus_put,
12467 },
12468 {
12469 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12470 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12471 .name = "Source Tracking Audio Tx SLIMBUS_0",
12472 .info = msm_source_tracking_info,
12473 .get = msm_audio_source_tracking_get,
12474 },
12475 {
12476 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12477 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12478 .name = "Sound Focus Voice Tx TERT_MI2S",
12479 .info = msm_sound_focus_info,
12480 .get = msm_voice_sound_focus_get,
12481 .put = msm_voice_sound_focus_put,
12482 },
12483 {
12484 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12485 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12486 .name = "Source Tracking Voice Tx TERT_MI2S",
12487 .info = msm_source_tracking_info,
12488 .get = msm_voice_source_tracking_get,
12489 },
12490 {
12491 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12492 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12493 .name = "Sound Focus Audio Tx TERT_MI2S",
12494 .info = msm_sound_focus_info,
12495 .get = msm_audio_sound_focus_get,
12496 .put = msm_audio_sound_focus_put,
12497 },
12498 {
12499 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12500 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12501 .name = "Source Tracking Audio Tx TERT_MI2S",
12502 .info = msm_source_tracking_info,
12503 .get = msm_audio_source_tracking_get,
12504 },
12505 {
12506 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12507 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12508 .name = "Sound Focus Voice Tx INT3_MI2S",
12509 .info = msm_sound_focus_info,
12510 .get = msm_voice_sound_focus_get,
12511 .put = msm_voice_sound_focus_put,
12512 },
12513 {
12514 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12515 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12516 .name = "Source Tracking Voice Tx INT3_MI2S",
12517 .info = msm_source_tracking_info,
12518 .get = msm_voice_source_tracking_get,
12519 },
12520 {
12521 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12522 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12523 .name = "Sound Focus Audio Tx INT3_MI2S",
12524 .info = msm_sound_focus_info,
12525 .get = msm_audio_sound_focus_get,
12526 .put = msm_audio_sound_focus_put,
12527 },
12528 {
12529 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12530 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12531 .name = "Source Tracking Audio Tx INT3_MI2S",
12532 .info = msm_source_tracking_info,
12533 .get = msm_audio_source_tracking_get,
12534 },
12535};
12536
12537static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12538 struct snd_ctl_elem_value *ucontrol)
12539{
12540 int ret = 0;
12541 int item;
12542 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12543
12544 pr_debug("%s item is %d\n", __func__,
12545 ucontrol->value.enumerated.item[0]);
12546 mutex_lock(&routing_lock);
12547 item = ucontrol->value.enumerated.item[0];
12548 if (item < e->items) {
12549 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12550 __func__, e->shift_l, e->values[item]);
12551 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12552 e->values[item] < MSM_BACKEND_DAI_MAX)
12553 /* Enable feedback TX path */
12554 ret = afe_spk_prot_feed_back_cfg(
12555 msm_bedais[e->values[item]].port_id,
12556 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12557 else {
12558 pr_debug("%s values are out of range item %d\n",
12559 __func__, e->values[item]);
12560 /* Disable feedback TX path */
12561 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12562 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12563 else
12564 ret = -EINVAL;
12565 }
12566 } else {
12567 pr_err("%s item value is out of range item\n", __func__);
12568 ret = -EINVAL;
12569 }
12570 mutex_unlock(&routing_lock);
12571 return ret;
12572}
12573
12574static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12575 struct snd_ctl_elem_value *ucontrol)
12576{
12577 int ret = 0;
12578 int item;
12579 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12580
12581 pr_debug("%s item is %d\n", __func__,
12582 ucontrol->value.enumerated.item[0]);
12583 mutex_lock(&routing_lock);
12584 item = ucontrol->value.enumerated.item[0];
12585 if (item < e->items) {
12586 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12587 __func__, e->shift_l, e->values[item]);
12588 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12589 e->values[item] < MSM_BACKEND_DAI_MAX)
12590 /* Enable feedback TX path */
12591 ret = afe_spk_prot_feed_back_cfg(
12592 msm_bedais[e->values[item]].port_id,
12593 msm_bedais[e->shift_l].port_id,
12594 1, 1, 1);
12595 else {
12596 pr_debug("%s values are out of range item %d\n",
12597 __func__, e->values[item]);
12598 /* Disable feedback TX path */
12599 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12600 ret = afe_spk_prot_feed_back_cfg(0,
12601 0, 0, 0, 0);
12602 else
12603 ret = -EINVAL;
12604 }
12605 } else {
12606 pr_err("%s item value is out of range item\n", __func__);
12607 ret = -EINVAL;
12608 }
12609 mutex_unlock(&routing_lock);
12610 return ret;
12611}
12612
12613static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12614 struct snd_ctl_elem_value *ucontrol)
12615{
12616 pr_debug("%s\n", __func__);
12617 return 0;
12618}
12619
12620static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12621 struct snd_ctl_elem_value *ucontrol)
12622{
12623 pr_debug("%s\n", __func__);
12624 ucontrol->value.enumerated.item[0] = 0;
12625 return 0;
12626}
12627
12628static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12629 "ZERO", "SLIM4_TX"
12630};
12631
12632static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12633 "ZERO", "SLIM4_TX"
12634};
12635
12636static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12637 "ZERO", "SENARY_TX"
12638};
12639
12640static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12641 "ZERO", "INT5_MI2S_TX"
12642};
12643
12644static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12645 "ZERO", "INT5_MI2S_TX"
12646};
12647
12648static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12649 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12650};
12651
12652static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12653 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12654};
12655
12656static const int const mi2s_rx_vi_fb_tx_value[] = {
12657 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12658};
12659
12660static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12661 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12662};
12663
12664static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12665 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12666};
12667
12668static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
12669 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12670 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12671 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12672
12673static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
12674 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12675 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12676 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12677
12678static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
12679 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
12680 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12681 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12682
12683static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
12684 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12685 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12686 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12687 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12688
12689static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
12690 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12691 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12692 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12693 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12694
12695static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12696 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12697 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12698 spkr_prot_put_vi_lch_port);
12699
12700static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12701 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12702 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12703 spkr_prot_put_vi_rch_port);
12704
12705static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12706 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12707 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12708 spkr_prot_put_vi_lch_port);
12709
12710static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12711 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12712 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12713 spkr_prot_put_vi_lch_port);
12714
12715static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12716 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12717 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12718 spkr_prot_put_vi_rch_port);
12719
12720static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12721 /* Frontend AIF */
12722 /* Widget name equals to Front-End DAI name<Need confirmation>,
12723 * Stream name must contains substring of front-end dai name
12724 */
12725 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12726 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12727 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12728 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12729 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12730 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12731 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12732 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12733 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12734 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12735 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12736 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12737 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12738 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12739 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12740 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12741 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12742 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12743 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12744 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12745 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12746 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12747 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12748 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12749 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12750 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012751 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012752 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012753 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12754 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12755 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12756 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Meng Wangbe8194e2018-04-25 10:40:01 +080012757 SND_SOC_DAPM_AIF_OUT("MM_UL28", "MultiMedia28 Capture", 0, 0, 0, 0),
12758 SND_SOC_DAPM_AIF_OUT("MM_UL29", "MultiMedia29 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012759 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12760 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12761 "VoiceMMode1 Playback", 0, 0, 0, 0),
12762 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12763 "VoiceMMode1 Capture", 0, 0, 0, 0),
12764 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12765 "VoiceMMode2 Playback", 0, 0, 0, 0),
12766 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12767 "VoiceMMode2 Capture", 0, 0, 0, 0),
12768 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12769 0, 0, 0, 0),
12770 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12771 0, 0, 0, 0),
12772 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12773 0, 0, 0, 0),
12774 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12775 0, 0, 0, 0),
12776 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12777 0, 0, 0, 0),
12778 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12779 0, 0, 0, 0),
12780 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12781 0, 0, 0, 0),
12782 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12783 0, 0, 0, 0),
12784 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12785 0, 0, 0, 0),
12786 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12787 0, 0, 0, 0),
12788 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12789 0, 0, 0, 0),
12790 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12791 0, 0, 0, 0),
12792 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12793 0, 0, 0, 0),
12794 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12795 0, 0, 0, 0),
12796 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12797 0, 0, 0, 0),
12798 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12799 0, 0, 0, 0),
12800 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12801 0, 0, 0, 0),
12802 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12803 0, 0, 0, 0),
12804 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12805 0, 0, 0, 0),
12806 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12807 0, 0, 0, 0),
12808 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12809 0, 0, 0, 0),
12810 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12811 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12812 0, 0, 0, 0),
12813 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12814 "INT0 MI2S_RX Hostless Playback",
12815 0, 0, 0, 0),
12816 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12817 "INT4 MI2S_RX Hostless Playback",
12818 0, 0, 0, 0),
12819 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12820 "Primary MI2S_RX Hostless Playback",
12821 0, 0, 0, 0),
12822 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12823 "Secondary MI2S_RX Hostless Playback",
12824 0, 0, 0, 0),
12825 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12826 "Tertiary MI2S_RX Hostless Playback",
12827 0, 0, 0, 0),
12828 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12829 "Quaternary MI2S_RX Hostless Playback",
12830 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012831 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12832 "Quinary MI2S_RX Hostless Playback",
12833 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012834
12835 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12836 0, 0, 0, 0),
12837 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
12838 0, 0, 0, 0),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080012839 SND_SOC_DAPM_AIF_IN("SEC_AUXPCM_DL_HL", "SEC_AUXPCM_HOSTLESS Playback",
12840 0, 0, 0, 0),
12841 SND_SOC_DAPM_AIF_OUT("SEC_AUXPCM_UL_HL", "SEC_AUXPCM_HOSTLESS Capture",
12842 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012843 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
12844 0, 0, 0, 0),
12845 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
12846 "INT3 MI2S_TX Hostless Capture",
12847 0, 0, 0, 0),
12848 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
12849 "Tertiary MI2S_TX Hostless Capture",
12850 0, 0, 0, 0),
12851 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
12852 "Secondary MI2S_TX Hostless Capture",
12853 0, 0, 0, 0),
12854 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
12855 "Primary MI2S_TX Hostless Capture",
12856 0, 0, 0, 0),
12857 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
12858 0, 0, 0, 0),
12859 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
12860 0, 0, 0, 0),
12861 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
12862 "Quaternary MI2S_TX Hostless Capture",
12863 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012864 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
12865 "Quinary MI2S_TX Hostless Capture",
12866 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012867
12868 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
12869 "Primary TDM0 Hostless Playback",
12870 0, 0, 0, 0),
12871 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
12872 "Primary TDM0 Hostless Capture",
12873 0, 0, 0, 0),
12874 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
12875 "Primary TDM1 Hostless Playback",
12876 0, 0, 0, 0),
12877 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
12878 "Primary TDM1 Hostless Capture",
12879 0, 0, 0, 0),
12880 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
12881 "Primary TDM2 Hostless Playback",
12882 0, 0, 0, 0),
12883 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
12884 "Primary TDM2 Hostless Capture",
12885 0, 0, 0, 0),
12886 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
12887 "Primary TDM3 Hostless Playback",
12888 0, 0, 0, 0),
12889 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
12890 "Primary TDM3 Hostless Capture",
12891 0, 0, 0, 0),
12892 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
12893 "Primary TDM4 Hostless Playback",
12894 0, 0, 0, 0),
12895 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
12896 "Primary TDM4 Hostless Capture",
12897 0, 0, 0, 0),
12898 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
12899 "Primary TDM5 Hostless Playback",
12900 0, 0, 0, 0),
12901 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
12902 "Primary TDM5 Hostless Capture",
12903 0, 0, 0, 0),
12904 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
12905 "Primary TDM6 Hostless Playback",
12906 0, 0, 0, 0),
12907 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
12908 "Primary TDM6 Hostless Capture",
12909 0, 0, 0, 0),
12910 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
12911 "Primary TDM7 Hostless Playback",
12912 0, 0, 0, 0),
12913 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
12914 "Primary TDM7 Hostless Capture",
12915 0, 0, 0, 0),
12916 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
12917 "Secondary TDM0 Hostless Playback",
12918 0, 0, 0, 0),
12919 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
12920 "Secondary TDM0 Hostless Capture",
12921 0, 0, 0, 0),
12922 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
12923 "Secondary TDM1 Hostless Playback",
12924 0, 0, 0, 0),
12925 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
12926 "Secondary TDM1 Hostless Capture",
12927 0, 0, 0, 0),
12928 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
12929 "Secondary TDM2 Hostless Playback",
12930 0, 0, 0, 0),
12931 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
12932 "Secondary TDM2 Hostless Capture",
12933 0, 0, 0, 0),
12934 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
12935 "Secondary TDM3 Hostless Playback",
12936 0, 0, 0, 0),
12937 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
12938 "Secondary TDM3 Hostless Capture",
12939 0, 0, 0, 0),
12940 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
12941 "Secondary TDM4 Hostless Playback",
12942 0, 0, 0, 0),
12943 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
12944 "Secondary TDM4 Hostless Capture",
12945 0, 0, 0, 0),
12946 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
12947 "Secondary TDM5 Hostless Playback",
12948 0, 0, 0, 0),
12949 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
12950 "Secondary TDM5 Hostless Capture",
12951 0, 0, 0, 0),
12952 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
12953 "Secondary TDM6 Hostless Playback",
12954 0, 0, 0, 0),
12955 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
12956 "Secondary TDM6 Hostless Capture",
12957 0, 0, 0, 0),
12958 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
12959 "Secondary TDM7 Hostless Playback",
12960 0, 0, 0, 0),
12961 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
12962 "Secondary TDM7 Hostless Capture",
12963 0, 0, 0, 0),
12964 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
12965 "Tertiary TDM0 Hostless Playback",
12966 0, 0, 0, 0),
12967 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
12968 "Tertiary TDM0 Hostless Capture",
12969 0, 0, 0, 0),
12970 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
12971 "Tertiary TDM1 Hostless Playback",
12972 0, 0, 0, 0),
12973 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
12974 "Tertiary TDM1 Hostless Capture",
12975 0, 0, 0, 0),
12976 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
12977 "Tertiary TDM2 Hostless Playback",
12978 0, 0, 0, 0),
12979 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
12980 "Tertiary TDM2 Hostless Capture",
12981 0, 0, 0, 0),
12982 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
12983 "Tertiary TDM3 Hostless Playback",
12984 0, 0, 0, 0),
12985 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
12986 "Tertiary TDM3 Hostless Capture",
12987 0, 0, 0, 0),
12988 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
12989 "Tertiary TDM4 Hostless Playback",
12990 0, 0, 0, 0),
12991 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
12992 "Tertiary TDM4 Hostless Capture",
12993 0, 0, 0, 0),
12994 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
12995 "Tertiary TDM5 Hostless Playback",
12996 0, 0, 0, 0),
12997 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
12998 "Tertiary TDM5 Hostless Capture",
12999 0, 0, 0, 0),
13000 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
13001 "Tertiary TDM6 Hostless Playback",
13002 0, 0, 0, 0),
13003 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
13004 "Tertiary TDM6 Hostless Capture",
13005 0, 0, 0, 0),
13006 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
13007 "Tertiary TDM7 Hostless Playback",
13008 0, 0, 0, 0),
13009 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
13010 "Tertiary TDM7 Hostless Capture",
13011 0, 0, 0, 0),
13012 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
13013 "Quaternary TDM0 Hostless Playback",
13014 0, 0, 0, 0),
13015 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
13016 "Quaternary TDM0 Hostless Capture",
13017 0, 0, 0, 0),
13018 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
13019 "Quaternary TDM1 Hostless Playback",
13020 0, 0, 0, 0),
13021 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
13022 "Quaternary TDM1 Hostless Capture",
13023 0, 0, 0, 0),
13024 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
13025 "Quaternary TDM2 Hostless Playback",
13026 0, 0, 0, 0),
13027 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
13028 "Quaternary TDM2 Hostless Capture",
13029 0, 0, 0, 0),
13030 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
13031 "Quaternary TDM3 Hostless Playback",
13032 0, 0, 0, 0),
13033 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
13034 "Quaternary TDM3 Hostless Capture",
13035 0, 0, 0, 0),
13036 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
13037 "Quaternary TDM4 Hostless Playback",
13038 0, 0, 0, 0),
13039 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
13040 "Quaternary TDM4 Hostless Capture",
13041 0, 0, 0, 0),
13042 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
13043 "Quaternary TDM5 Hostless Playback",
13044 0, 0, 0, 0),
13045 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
13046 "Quaternary TDM5 Hostless Capture",
13047 0, 0, 0, 0),
13048 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
13049 "Quaternary TDM6 Hostless Playback",
13050 0, 0, 0, 0),
13051 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
13052 "Quaternary TDM6 Hostless Capture",
13053 0, 0, 0, 0),
13054 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
13055 "Quaternary TDM7 Hostless Playback",
13056 0, 0, 0, 0),
13057 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
13058 "Quaternary TDM7 Hostless Capture",
13059 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013060 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
13061 "Quinary TDM0 Hostless Playback",
13062 0, 0, 0, 0),
13063 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
13064 "Quinary TDM0 Hostless Capture",
13065 0, 0, 0, 0),
13066 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
13067 "Quinary TDM1 Hostless Playback",
13068 0, 0, 0, 0),
13069 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
13070 "Quinary TDM1 Hostless Capture",
13071 0, 0, 0, 0),
13072 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
13073 "Quinary TDM2 Hostless Playback",
13074 0, 0, 0, 0),
13075 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
13076 "Quinary TDM2 Hostless Capture",
13077 0, 0, 0, 0),
13078 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
13079 "Quinary TDM3 Hostless Playback",
13080 0, 0, 0, 0),
13081 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
13082 "Quinary TDM3 Hostless Capture",
13083 0, 0, 0, 0),
13084 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
13085 "Quinary TDM4 Hostless Playback",
13086 0, 0, 0, 0),
13087 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
13088 "Quinary TDM4 Hostless Capture",
13089 0, 0, 0, 0),
13090 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
13091 "Quinary TDM5 Hostless Playback",
13092 0, 0, 0, 0),
13093 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
13094 "Quinary TDM5 Hostless Capture",
13095 0, 0, 0, 0),
13096 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
13097 "Quinary TDM6 Hostless Playback",
13098 0, 0, 0, 0),
13099 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
13100 "Quinary TDM6 Hostless Capture",
13101 0, 0, 0, 0),
13102 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
13103 "Quinary TDM7 Hostless Playback",
13104 0, 0, 0, 0),
13105 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
13106 "Quinary TDM7 Hostless Capture",
13107 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013108
13109 /* LSM */
13110 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
13111 0, 0, 0, 0),
13112 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
13113 0, 0, 0, 0),
13114 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
13115 0, 0, 0, 0),
13116 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
13117 0, 0, 0, 0),
13118 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
13119 0, 0, 0, 0),
13120 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
13121 0, 0, 0, 0),
13122 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
13123 0, 0, 0, 0),
13124 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
13125 0, 0, 0, 0),
13126 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
13127 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
13128 /* Backend AIF */
13129 /* Stream name equals to backend dai link stream name */
13130 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
13131 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
13132 0, 0, 0, 0),
13133 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
13134 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
13135 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
13136 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
13137 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
13138 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
13139 0, 0, 0, 0),
13140 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
13141 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
13142 0, 0, 0, 0),
13143 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
13144 0, 0, 0, 0),
13145 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
13146 0, 0, 0, 0),
13147 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
13148 "Secondary MI2S Playback SD1",
13149 0, 0, 0, 0),
13150 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
13151 0, 0, 0, 0),
13152 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
13153 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013154 SND_SOC_DAPM_AIF_OUT("INT2_MI2S_RX", "INT2 MI2S Playback",
13155 0, 0, 0, 0),
13156 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_RX", "INT3 MI2S Playback",
13157 0, 0, 0, 0),
13158 SND_SOC_DAPM_AIF_OUT("INT5_MI2S_RX", "INT5 MI2S Playback",
13159 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013160 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
13161 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013162 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_TX", "INT4 MI2S Capture",
13163 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013164 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
13165 0, 0, 0, 0),
13166 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
13167 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
13168 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
13169 0, 0, 0, 0),
13170 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
13171 0, 0, 0, 0),
13172 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
13173 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013174 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_TX", "INT0 MI2S Capture",
13175 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013176 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
13177 0, 0, 0, 0),
13178 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
13179 0, 0, 0, 0),
13180 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
13181 0, 0, 0, 0),
13182 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
13183 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
13184 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
13185 0, 0, 0, 0),
13186 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
13187 0, 0, 0, 0),
13188 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
13189 0, 0, 0, 0),
13190 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
13191 0, 0, 0, 0),
13192 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
13193 0, 0, 0, 0),
13194 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
13195 0, 0, 0, 0),
13196 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
13197 0, 0, 0, 0),
13198 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
13199 0, 0, 0, 0),
13200 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
13201 0, 0, 0, 0),
13202 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
13203 0, 0, 0, 0),
13204 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
13205 0, 0, 0, 0),
13206 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
13207 0, 0, 0, 0),
13208 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
13209 0, 0, 0, 0),
13210 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
13211 0, 0, 0, 0),
13212 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
13213 0, 0, 0, 0),
13214 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
13215 0, 0, 0, 0),
13216 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
13217 0, 0, 0, 0),
13218 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
13219 0, 0, 0, 0),
13220 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
13221 0, 0, 0, 0),
13222 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
13223 0, 0, 0, 0),
13224 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
13225 0, 0, 0, 0),
13226 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
13227 0, 0, 0, 0),
13228 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
13229 0, 0, 0, 0),
13230 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
13231 0, 0, 0, 0),
13232 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
13233 0, 0, 0, 0),
13234 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
13235 0, 0, 0, 0),
13236 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
13237 0, 0, 0, 0),
13238 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
13239 0, 0, 0, 0),
13240 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
13241 0, 0, 0, 0),
13242 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
13243 0, 0, 0, 0),
13244 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
13245 0, 0, 0, 0),
13246 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
13247 0, 0, 0, 0),
13248 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
13249 0, 0, 0, 0),
13250 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
13251 0, 0, 0, 0),
13252 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
13253 0, 0, 0, 0),
13254 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
13255 0, 0, 0, 0),
13256 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
13257 0, 0, 0, 0),
13258 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
13259 0, 0, 0, 0),
13260 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
13261 0, 0, 0, 0),
13262 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
13263 0, 0, 0, 0),
13264 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
13265 0, 0, 0, 0),
13266 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
13267 0, 0, 0, 0),
13268 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
13269 0, 0, 0, 0),
13270 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
13271 0, 0, 0, 0),
13272 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
13273 0, 0, 0, 0),
13274 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
13275 0, 0, 0, 0),
13276 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
13277 0, 0, 0, 0),
13278 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
13279 0, 0, 0, 0),
13280 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
13281 0, 0, 0, 0),
13282 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
13283 0, 0, 0, 0),
13284 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
13285 0, 0, 0, 0),
13286 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
13287 0, 0, 0, 0),
13288 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
13289 0, 0, 0, 0),
13290 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
13291 0, 0, 0, 0),
13292 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
13293 0, 0, 0, 0),
13294 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
13295 0, 0, 0, 0),
13296 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
13297 0, 0, 0, 0),
13298 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
13299 0, 0, 0, 0),
13300 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
13301 0, 0, 0, 0),
13302 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
13303 0, 0, 0, 0),
13304 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
13305 0, 0, 0, 0),
13306 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
13307 0, 0, 0, 0),
13308 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
13309 0, 0, 0, 0),
13310 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
13311 0, 0, 0, 0),
13312 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
13313 0, 0, 0, 0),
13314 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
13315 0, 0, 0, 0),
13316 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
13317 0, 0, 0, 0),
13318 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
13319 0, 0, 0, 0),
13320 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
13321 0, 0, 0, 0),
13322 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
13323 0, 0, 0, 0),
13324 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
13325 0, 0, 0, 0),
13326 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
13327 0, 0, 0, 0),
13328 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
13329 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013330 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
13331 0, 0, 0, 0),
13332 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
13333 0, 0, 0, 0),
13334 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
13335 0, 0, 0, 0),
13336 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
13337 0, 0, 0, 0),
13338 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
13339 0, 0, 0, 0),
13340 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
13341 0, 0, 0, 0),
13342 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
13343 0, 0, 0, 0),
13344 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
13345 0, 0, 0, 0),
13346 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
13347 0, 0, 0, 0),
13348 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
13349 0, 0, 0, 0),
13350 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
13351 0, 0, 0, 0),
13352 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
13353 0, 0, 0, 0),
13354 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
13355 0, 0, 0, 0),
13356 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
13357 0, 0, 0, 0),
13358 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
13359 0, 0, 0, 0),
13360 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
13361 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013362 /* incall */
13363 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
13364 0, 0, 0, 0),
13365 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
13366 0, 0, 0, 0),
13367 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
13368 0, 0, 0, 0),
13369 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
13370 0, 0, 0, 0),
13371 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
13372 0, 0, 0, 0),
13373 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
13374 0, 0, 0, 0),
13375 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
13376 0, 0, 0, 0),
13377 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
13378 0, 0, 0, 0),
13379 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
13380
13381 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
13382 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
13383 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
13384 0, 0, 0, 0),
13385 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
13386 0, 0, 0, 0),
13387 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
13388 0, 0, 0, 0),
13389 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
13390 0, 0, 0, 0),
13391 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
13392 0, 0, 0, 0),
13393 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
13394 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013395 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
13396 0, 0, 0, 0),
13397 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
13398 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013399 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
13400 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
13401 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
13402 0, 0, 0, 0),
13403 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
13404 0, 0, 0, 0),
13405 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
13406 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
13407 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
13408 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
13409 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
13410 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
13411 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
13412 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
13413 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
13414 /* In- call recording */
13415 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
13416 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
Raja Mallik425e1d32018-05-20 19:21:10 +053013417 SND_SOC_DAPM_AIF_IN("AFE_LOOPBACK_TX", "AFE Loopback Capture",
13418 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013419 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
13420 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
13421
13422 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
13423 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
13424 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
13425 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
13426
13427 /* Switch Definitions */
13428 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
13429 &slim_fm_switch_mixer_controls),
13430 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
13431 &slim1_fm_switch_mixer_controls),
13432 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
13433 &slim3_fm_switch_mixer_controls),
13434 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
13435 &slim4_fm_switch_mixer_controls),
13436 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
13437 &slim6_fm_switch_mixer_controls),
13438 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13439 &pcm_rx_switch_mixer_controls),
13440 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13441 &int0_mi2s_rx_switch_mixer_controls),
13442 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13443 &int4_mi2s_rx_switch_mixer_controls),
13444 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13445 &pri_mi2s_rx_switch_mixer_controls),
13446 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13447 &sec_mi2s_rx_switch_mixer_controls),
13448 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13449 &tert_mi2s_rx_switch_mixer_controls),
13450 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13451 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013452 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13453 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013454 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13455 &hfp_pri_aux_switch_mixer_controls),
13456 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13457 &hfp_aux_switch_mixer_controls),
13458 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13459 &hfp_int_switch_mixer_controls),
13460 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13461 &hfp_slim7_switch_mixer_controls),
13462 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13463 &usb_switch_mixer_controls),
13464
13465 /* Mixer definitions */
13466 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13467 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13468 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13469 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13470 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13471 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13472 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13473 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13474 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13475 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13476 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13477 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13478 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13479 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13480 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13481 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13482 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13483 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13484 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13485 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13486 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13487 quaternary_mi2s_rx_mixer_controls,
13488 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13489 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13490 tertiary_mi2s_rx_mixer_controls,
13491 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13492 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13493 secondary_mi2s_rx_mixer_controls,
13494 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13495 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13496 secondary_mi2s_rx2_mixer_controls,
13497 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13498 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13499 primary_mi2s_rx_mixer_controls,
13500 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13501 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13502 int0_mi2s_rx_mixer_controls,
13503 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13504 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13505 int4_mi2s_rx_mixer_controls,
13506 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13507 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13508 quinary_mi2s_rx_mixer_controls,
13509 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13510 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13511 pri_tdm_rx_0_mixer_controls,
13512 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13513 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13514 pri_tdm_rx_1_mixer_controls,
13515 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13516 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13517 pri_tdm_rx_2_mixer_controls,
13518 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13519 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13520 pri_tdm_rx_3_mixer_controls,
13521 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13522 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13523 pri_tdm_tx_0_mixer_controls,
13524 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13525 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13526 sec_tdm_rx_0_mixer_controls,
13527 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13528 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13529 sec_tdm_rx_1_mixer_controls,
13530 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13531 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13532 sec_tdm_rx_2_mixer_controls,
13533 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13534 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13535 sec_tdm_rx_3_mixer_controls,
13536 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13537 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13538 sec_tdm_tx_0_mixer_controls,
13539 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13540 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13541 tert_tdm_rx_0_mixer_controls,
13542 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13543 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13544 tert_tdm_tx_0_mixer_controls,
13545 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13546 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13547 tert_tdm_rx_1_mixer_controls,
13548 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13549 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13550 tert_tdm_rx_2_mixer_controls,
13551 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13552 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13553 tert_tdm_rx_3_mixer_controls,
13554 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13555 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13556 tert_tdm_rx_4_mixer_controls,
13557 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13558 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13559 quat_tdm_rx_0_mixer_controls,
13560 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13561 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13562 quat_tdm_tx_0_mixer_controls,
13563 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13564 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13565 quat_tdm_rx_1_mixer_controls,
13566 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13567 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13568 quat_tdm_rx_2_mixer_controls,
13569 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13570 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13571 quat_tdm_rx_3_mixer_controls,
13572 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013573 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13574 quin_tdm_rx_0_mixer_controls,
13575 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13576 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13577 quin_tdm_tx_0_mixer_controls,
13578 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13579 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13580 quin_tdm_rx_1_mixer_controls,
13581 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13582 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13583 quin_tdm_rx_2_mixer_controls,
13584 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13585 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13586 quin_tdm_rx_3_mixer_controls,
13587 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013588 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13589 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13590 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13591 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13592 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13593 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13594 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13595 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13596 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13597 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13598 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13599 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13600 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13601 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13602 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13603 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013604 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13605 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013606 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13607 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013608 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13609 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13610 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13611 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13612 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13613 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13614 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13615 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053013616 SND_SOC_DAPM_MIXER("MultiMedia28 Mixer", SND_SOC_NOPM, 0, 0,
13617 mmul28_mixer_controls, ARRAY_SIZE(mmul28_mixer_controls)),
13618 SND_SOC_DAPM_MIXER("MultiMedia29 Mixer", SND_SOC_NOPM, 0, 0,
13619 mmul29_mixer_controls, ARRAY_SIZE(mmul29_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013620 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13621 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13622 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13623 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13624 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13625 tert_auxpcm_rx_mixer_controls,
13626 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13627 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13628 quat_auxpcm_rx_mixer_controls,
13629 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013630 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13631 quin_auxpcm_rx_mixer_controls,
13632 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013633 /* incall */
13634 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13635 incall_music_delivery_mixer_controls,
13636 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13637 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13638 incall_music2_delivery_mixer_controls,
13639 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13640 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13641 slimbus_4_rx_mixer_controls,
13642 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13643 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13644 slimbus_6_rx_mixer_controls,
13645 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13646 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13647 usb_audio_rx_mixer_controls,
13648 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13649 /* Voice Mixer */
13650 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13651 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13652 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13653 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13654 SND_SOC_NOPM, 0, 0,
13655 sec_i2s_rx_voice_mixer_controls,
13656 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13657 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13658 SND_SOC_NOPM, 0, 0,
13659 sec_mi2s_rx_voice_mixer_controls,
13660 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13661 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13662 SND_SOC_NOPM, 0, 0,
13663 slimbus_rx_voice_mixer_controls,
13664 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13665 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13666 SND_SOC_NOPM, 0, 0,
13667 bt_sco_rx_voice_mixer_controls,
13668 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13669 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13670 SND_SOC_NOPM, 0, 0,
13671 afe_pcm_rx_voice_mixer_controls,
13672 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13673 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13674 SND_SOC_NOPM, 0, 0,
13675 aux_pcm_rx_voice_mixer_controls,
13676 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13677 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13678 SND_SOC_NOPM, 0, 0,
13679 sec_aux_pcm_rx_voice_mixer_controls,
13680 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13681 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13682 SND_SOC_NOPM, 0, 0,
13683 tert_aux_pcm_rx_voice_mixer_controls,
13684 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13685 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13686 SND_SOC_NOPM, 0, 0,
13687 quat_aux_pcm_rx_voice_mixer_controls,
13688 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013689 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13690 SND_SOC_NOPM, 0, 0,
13691 quin_aux_pcm_rx_voice_mixer_controls,
13692 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013693 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13694 SND_SOC_NOPM, 0, 0,
13695 hdmi_rx_voice_mixer_controls,
13696 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13697 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13698 SND_SOC_NOPM, 0, 0,
13699 mi2s_rx_voice_mixer_controls,
13700 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13701 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13702 SND_SOC_NOPM, 0, 0,
13703 pri_mi2s_rx_voice_mixer_controls,
13704 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13705 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13706 SND_SOC_NOPM, 0, 0,
13707 int0_mi2s_rx_voice_mixer_controls,
13708 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13709 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13710 SND_SOC_NOPM, 0, 0,
13711 int4_mi2s_rx_voice_mixer_controls,
13712 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13713 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13714 SND_SOC_NOPM, 0, 0,
13715 tert_mi2s_rx_voice_mixer_controls,
13716 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13717 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13718 SND_SOC_NOPM, 0, 0,
13719 quat_mi2s_rx_voice_mixer_controls,
13720 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13721 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13722 SND_SOC_NOPM, 0, 0,
13723 quin_mi2s_rx_voice_mixer_controls,
13724 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
Raja Mallik321d5712018-05-04 17:22:11 +053013725 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0_Voice Mixer",
13726 SND_SOC_NOPM, 0, 0,
13727 pri_tdm_rx_0_voice_mixer_controls,
13728 ARRAY_SIZE(pri_tdm_rx_0_voice_mixer_controls)),
13729 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1_Voice Mixer",
13730 SND_SOC_NOPM, 0, 0,
13731 pri_tdm_rx_1_voice_mixer_controls,
13732 ARRAY_SIZE(pri_tdm_rx_1_voice_mixer_controls)),
13733 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2_Voice Mixer",
13734 SND_SOC_NOPM, 0, 0,
13735 pri_tdm_rx_2_voice_mixer_controls,
13736 ARRAY_SIZE(pri_tdm_rx_2_voice_mixer_controls)),
13737 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3_Voice Mixer",
13738 SND_SOC_NOPM, 0, 0,
13739 pri_tdm_rx_3_voice_mixer_controls,
13740 ARRAY_SIZE(pri_tdm_rx_3_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013741 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13742 SND_SOC_NOPM, 0, 0,
13743 quat_tdm_rx_2_voice_mixer_controls,
13744 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013745 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13746 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13747 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013748 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13749 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13750 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13751 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13752 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13753 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13754 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13755 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13756 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13757 int_bt_a2dp_rx_mixer_controls,
13758 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13759 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13760 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13761 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13762 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13763 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13764 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13765 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13766 tx_voice2_stub_mixer_controls,
13767 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13768 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13769 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13770 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13771 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13772 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13773 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13774 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13775 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13776 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13777 SND_SOC_NOPM, 0, 0,
13778 slimbus_6_rx_voice_mixer_controls,
13779 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13780 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13781 slimbus_7_rx_voice_mixer_controls,
13782 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13783 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13784 slimbus_8_rx_voice_mixer_controls,
13785 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13786 /* port mixer */
13787 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13788 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13789 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13790 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13791 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13792 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13793 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13794 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13795 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13796 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13797 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13798 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13799 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13800 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13801 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013802 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13803 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13804 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013805 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13806 sbus_1_rx_port_mixer_controls,
13807 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13808 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13809 bt_sco_rx_port_mixer_controls,
13810 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13811 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13812 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13813 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13814 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13815 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13816 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13817 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13818 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13819 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13820 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13821 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13822 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13823 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13824 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13825 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13826 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13827 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13828 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13829 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13830 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13831 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13832 primary_mi2s_rx_port_mixer_controls,
13833 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13834 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13835 sec_mi2s_rx_port_mixer_controls,
13836 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
13837 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13838 tert_mi2s_rx_port_mixer_controls,
13839 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
13840 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13841 quat_mi2s_rx_port_mixer_controls,
13842 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013843 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13844 quin_mi2s_rx_port_mixer_controls,
13845 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013846 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13847 pri_tdm_rx_0_port_mixer_controls,
13848 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
13849 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13850 pri_tdm_rx_1_port_mixer_controls,
13851 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
13852 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13853 pri_tdm_rx_2_port_mixer_controls,
13854 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
13855 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13856 pri_tdm_rx_3_port_mixer_controls,
13857 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
13858 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13859 sec_tdm_rx_0_port_mixer_controls,
13860 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
13861 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13862 sec_tdm_rx_1_port_mixer_controls,
13863 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
13864 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13865 sec_tdm_rx_2_port_mixer_controls,
13866 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
13867 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13868 sec_tdm_rx_3_port_mixer_controls,
13869 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
13870 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13871 tert_tdm_rx_0_port_mixer_controls,
13872 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
13873 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13874 tert_tdm_rx_1_port_mixer_controls,
13875 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
13876 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13877 tert_tdm_rx_2_port_mixer_controls,
13878 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
13879 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13880 tert_tdm_rx_3_port_mixer_controls,
13881 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
13882 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13883 quat_tdm_rx_0_port_mixer_controls,
13884 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
13885 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13886 quat_tdm_rx_1_port_mixer_controls,
13887 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
13888 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13889 quat_tdm_rx_2_port_mixer_controls,
13890 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
13891 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13892 quat_tdm_rx_3_port_mixer_controls,
13893 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013894 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13895 quin_tdm_rx_0_port_mixer_controls,
13896 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
13897 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13898 quin_tdm_rx_1_port_mixer_controls,
13899 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
13900 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13901 quin_tdm_rx_2_port_mixer_controls,
13902 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
13903 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13904 quin_tdm_rx_3_port_mixer_controls,
13905 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013906 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13907 int0_mi2s_rx_port_mixer_controls,
13908 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
13909 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13910 int4_mi2s_rx_port_mixer_controls,
13911 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
13912 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
13913 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
13914 ARRAY_SIZE(tx_qchat_mixer_controls)),
13915 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
13916 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
13917 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
13918 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
13919 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
13920 ARRAY_SIZE(usb_rx_port_mixer_controls)),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080013921 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
13922 SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
13923 ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013924 /* lsm mixer definitions */
13925 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
13926 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
13927 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
13928 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
13929 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
13930 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
13931 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
13932 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
13933 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
13934 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
13935 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
13936 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
13937 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
13938 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
13939 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
13940 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
13941 /* Virtual Pins to force backends ON atm */
13942 SND_SOC_DAPM_OUTPUT("BE_OUT"),
13943 SND_SOC_DAPM_INPUT("BE_IN"),
13944
13945 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
13946 &slim0_rx_vi_fb_lch_mux),
13947 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
13948 &slim0_rx_vi_fb_rch_mux),
13949 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
13950 &mi2s_rx_vi_fb_mux),
13951 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
13952 &int4_mi2s_rx_vi_fb_mono_ch_mux),
13953 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
13954 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
13955
13956 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
13957 &voc_ext_ec_mux),
13958 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
13959 &ext_ec_ref_mux_ul1),
13960 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
13961 &ext_ec_ref_mux_ul2),
13962 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
13963 &ext_ec_ref_mux_ul3),
13964 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
13965 &ext_ec_ref_mux_ul4),
13966 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
13967 &ext_ec_ref_mux_ul5),
13968 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
13969 &ext_ec_ref_mux_ul6),
13970 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
13971 &ext_ec_ref_mux_ul8),
13972 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
13973 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013974 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
13975 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013976 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
13977 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013978 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
13979 &ext_ec_ref_mux_ul17),
13980 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
13981 &ext_ec_ref_mux_ul18),
13982 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
13983 &ext_ec_ref_mux_ul19),
Meng Wangbe8194e2018-04-25 10:40:01 +080013984 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL28 MUX", SND_SOC_NOPM, 0, 0,
13985 &ext_ec_ref_mux_ul28),
13986 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL29 MUX", SND_SOC_NOPM, 0, 0,
13987 &ext_ec_ref_mux_ul29),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013988};
13989
13990static const struct snd_soc_dapm_route intercon[] = {
13991 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13992 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13993 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13994 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13995 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13996 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13997 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13998 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13999 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14000 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14001 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14002 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14003 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14004 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14005 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14006 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14007 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
14008
14009 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14010 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14011 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14012 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14013 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14014 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14015 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14016 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14017 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14018 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14019 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14020 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14021 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14022 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14023 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14024 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14025 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
14026
14027 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14028 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14029 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14030 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14031 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14032 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14033 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14034 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14035 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14036 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14037 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14038 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14039 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14040 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14041 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14042 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14043 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
14044
14045 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14046 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14047 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14048 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14049 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14050 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14051 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14052 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14053 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14054 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14055 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14056 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14057 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14058 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14059 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14060 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14061 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
14062
14063 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14064 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14065 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14066 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14067 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14068 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14069 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14070 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14071 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14072 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14073 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14074 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14075 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14076 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14077 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14078 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14079 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
14080
14081 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
14082 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
14083 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
14084 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
14085 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
14086 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
14087 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
14088 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
14089 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
14090 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
14091 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
14092 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
14093 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
14094 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
14095 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
14096 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
14097 {"HDMI", NULL, "HDMI Mixer"},
14098
14099 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
14100 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
14101 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
14102 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
14103 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
14104 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
14105 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
14106 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
14107 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
14108 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
14109 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
14110 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
14111 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
14112 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
14113 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
14114 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
14115 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
14116
14117 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14118 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14119 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14120 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14121 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14122 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14123 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14124 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14125 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14126 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14127 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14128 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14129 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14130 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14131 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14132 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14133 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
14134
14135 /* incall */
14136 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
14137 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
14138 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
14139 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
14140 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
14141 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14142 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14143 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14144 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14145 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
14146 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14147 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14148 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14149 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14150 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
14151
14152 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14153 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14154 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14155 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14156 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14157 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14158 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14159 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14160 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14161 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14162 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14163 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14164 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14165 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14166 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14167 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14168 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
14169
14170 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14171 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14172 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14173 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14174 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14175 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14176 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14177 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14178 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14179 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14180 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14181 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14182 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14183 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14184 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14185 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14186 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
14187
14188 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14189 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14190 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14191 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14192 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14193 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14194 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14195 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14196 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14197 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14198 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14199 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14200 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14201 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14202 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14203 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14204 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
14205
14206 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14207 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14208 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14209 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14210 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14211 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14212 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
14213 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14214 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14215 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14216 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14217 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14218 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14219 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14220 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14221 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014222 {"MultiMedia28 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14223 {"MultiMedia29 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014224 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14225 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14226 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14227 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14228 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14229 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014230 {"MultiMedia28 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14231 {"MultiMedia29 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014232 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014233 {"MultiMedia17 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14234 {"MultiMedia18 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14235 {"MultiMedia19 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14236 {"MultiMedia28 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14237 {"MultiMedia29 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14238 {"MultiMedia17 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014239 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014240 {"MultiMedia19 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14241 {"MultiMedia28 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14242 {"MultiMedia29 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014243 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14244 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14245 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014246 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014247 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014248 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14249 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014250 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014251 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14252 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14253 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14254 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14255 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14256 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14257 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14258 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14259 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14260 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14261 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14262 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14263 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14264 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14265 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14266 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14267 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
14268
14269 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14270 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14271 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14272 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14273 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14274 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14275 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14276 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14277 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14278 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14279 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14280 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14281 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14282 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14283 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14284 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
14285
14286 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14287 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14288 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14289 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14290 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14291 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14292 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14293 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14294 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14295 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14296 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14297 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14298 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14299 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14300 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
14301
14302 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14303 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14304 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14305 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14306 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14307 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14308 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14309 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14310 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14311 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14312 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14313 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14314 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14315 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14316 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
14317
14318 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14319 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
14320
14321 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14322 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14323
14324 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14325 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14326 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14327 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14328 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14329 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14330 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14331 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14332 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14333 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14334 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14335 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14336 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14337 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14338 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14339 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
14340
14341 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14342 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14343 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14344 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14345 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14346 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14347 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14348 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14349 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14350 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14351 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14352 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14353 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14354 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14355 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14356 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
14357
14358 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14359 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14360 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14361 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14362 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14363 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14364 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14365 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14366 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14367 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14368 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14369 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14370 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14371 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14372 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14373 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
14374
14375 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14376 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14377 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14378 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14379 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14380 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14381 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14382 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14383 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14384 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14385 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14386 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14387 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14388 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14389 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14390 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14391 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14392 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
14393
14394 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14395 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14396 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14397 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14398 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14399 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14400 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14401 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14402 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14403 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14404 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14405 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14406 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14407 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14408 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14409 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14410 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
14411
14412 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14413 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14414 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14415 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14416 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14417 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14418 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14419 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14420 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14421 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14422 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14423 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14424 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14425 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14426 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14427 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14428 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
14429
14430 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14431 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14432 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14433 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14434 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14435 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14436 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14437 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14438 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14439 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14440 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14441 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14442 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14443 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14444 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14445 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14446 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
14447
14448 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14449 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14450 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14451 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14452 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14453 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14454 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14455 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14456 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14457 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14458 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14459 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14460 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14461 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14462 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14463 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14464 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
14465
14466 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14467 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14468 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14469 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14470 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14471 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14472 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14473 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14474 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14475 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14476 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14477 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14478 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14479 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14480 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14481 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14482 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14483
14484 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14485 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14486 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14487 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14488 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14489 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14490 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14491 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14492 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14493 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14494 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14495 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14496 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14497 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14498 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14499 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14500 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14501
14502 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14503 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14504 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14505 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14506 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14507 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14508 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14509 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14510 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14511 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14512 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14513 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14514 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14515 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14516 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14517 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14518 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14519
14520 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14521 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14522 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14523 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14524 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14525 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14526 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14527 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14528 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14529 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14530 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14531 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14532 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14533 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14534 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14535 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14536 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14537
14538 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14539 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14540 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14541 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14542 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14543 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14544 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14545 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14546 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14547 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14548 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14549 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14550 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14551 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14552 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14553 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14554 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14555
14556 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14557 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14558 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14559 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14560 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14561 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14562 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14563 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14564 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14565 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14566 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14567 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14568 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14569 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14570 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14571 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14572 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14573
14574 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14575 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14576 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14577 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14578 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14579 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14580 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14581 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14582 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14583 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14584 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14585 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14586 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14587 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14588 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14589 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14590 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14591
14592 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14593 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14594 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14595 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14596 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14597 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14598 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14599 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14600 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14601 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14602 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14603 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14604 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14605 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14606 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14607 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14608 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14609
14610 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14611 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14612 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14613 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14614 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14615 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14616 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14617 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14618 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14619 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14620 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14621 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14622 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14623 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14624 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14625 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14626 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14627
14628 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14629 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14630 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14631 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14632 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14633 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14634 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14635 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14636 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14637 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14638 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14639 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14640 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14641 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14642 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14643 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14644 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14645
14646 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14647 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14648 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14649 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14650 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14651 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14652 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14653 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14654 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14655 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14656 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14657 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14658 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14659 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14660 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14661 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14662 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14663
14664 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14665 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14666 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14667 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14668 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14669 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14670 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14671 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14672 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14673 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14674 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14675 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14676 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14677 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14678 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14679 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14680 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14681
14682 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14683 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14684 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14685 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14686 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14687 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14688 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14689 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14690 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14691 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14692 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14693 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14694 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14695 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14696 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14697 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14698 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14699 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14700
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014701 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14702 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14703 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14704 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14705 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14706 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14707 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14708 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14709 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14710 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14711 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14712 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14713 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14714 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14715 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14716 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14717 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14718
14719 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14720 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14721 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14722 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14723 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14724 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14725 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14726 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14727 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14728 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14729 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14730 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14731 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14732 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14733 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14734 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14735 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14736 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14737
14738 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14739 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14740 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14741 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14742 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14743 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14744 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14745 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14746 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14747 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14748 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14749 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14750 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14751 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14752 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14753 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14754 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14755 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14756
14757 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14758 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14759 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14760 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14761 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14762 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14763 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14764 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14765 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14766 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14767 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14768 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14769 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14770 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14771 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14772 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14773 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14774 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14775
Rohit Kumara5077932017-09-10 22:05:05 +053014776 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14777 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14778 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14779 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14780 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14781 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14782 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14783 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14784 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14785 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14786 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14787 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14788 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14789 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14790 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14791 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14792 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14793 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14794
14795 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14796 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14797 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14798 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14799 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14800 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14801 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14802 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14803 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14804 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14805 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14806 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14807 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14808 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14809 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14810 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14811 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14812
14813 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14814 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14815 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14816 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14817 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14818 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14819 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14820 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14821 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14822 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14823 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14824 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14825 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14826 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14827 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14828 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14829 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14830 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14831
14832 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14833 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14834 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14835 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14836 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14837 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14838 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14839 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14840 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14841 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14842 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14843 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14844 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14845 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14846 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14847 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14848 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14849 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
14850
14851 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14852 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14853 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14854 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14855 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14856 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14857 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14858 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14859 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14860 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14861 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14862 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14863 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14864 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14865 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14866 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14867 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14868 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
14869
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014870 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
14871 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
14872 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
14873 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
14874 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014875 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014876 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014877 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14878 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14879 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14880 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14881 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14882 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14883 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14884 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14885 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14886 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14887 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14888 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14889 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14890 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14891 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014892 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014893 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14894 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
14895 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014896 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014897 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14898 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014899 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14900 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
14901 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014902 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014903 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14904 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
14905 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014906 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014907 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014908 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
14909 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
14910 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014911 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14912 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14913 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14914 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14915 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14916 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14917 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14918 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14919 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14920 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14921 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014922 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014923 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14924 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14925 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014926 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014927 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014928 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14929 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14930 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014931 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014932 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014933 {"MultiMedia17 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14934 {"MultiMedia18 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14935 {"MultiMedia19 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14936 {"MultiMedia28 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14937 {"MultiMedia29 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014938 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14939 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14940 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14941 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014942 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014943
14944 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14945 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14946 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14947 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14948 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14949 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14950 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14951 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14952 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14953 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14954 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14955 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14956 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14957 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14958 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14959 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053014960 {"MultiMedia1 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014961 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14962 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14963 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14964 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014965
14966 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14967 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14968 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14969 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14970 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14971 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14972 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14973 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14974 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14975 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14976 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14977 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14978 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14979 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14980 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14981 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053014982 {"MultiMedia2 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014983 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14984 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14985 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14986 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014987
14988 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14989 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14990 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14991 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14992 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14993 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14994 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14995 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14996 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14997 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14998 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14999 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15000 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15001 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15002 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15003 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015004 {"MultiMedia3 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015005 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15006 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15007 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15008 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015009
15010 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15011 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15012 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15013 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15014 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15015 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15016 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15017 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15018 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15019 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15020 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15021 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15022 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15023 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15024 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15025 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015026 {"MultiMedia4 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015027 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15028 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15029 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15030 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015031
15032 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15033 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15034 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15035 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15036 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15037 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15038 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15039 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15040 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15041 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15042 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15043 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15044 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15045 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15046 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15047 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015048 {"MultiMedia5 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015049 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15050 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15051 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15052 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015053
15054 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15055 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15056 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15057 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15058 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15059 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15060 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15061 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15062 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15063 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15064 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15065 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15066 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15067 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15068 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15069 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015070 {"MultiMedia6 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015071 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15072 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15073 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15074 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015075
15076 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15077 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15078 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15079 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15080 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15081 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15082 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15083 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15084 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15085 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15086 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15087 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15088 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15089 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15090 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15091 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015092 {"MultiMedia8 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015093 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15094 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15095 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15096 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015097
15098 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15099 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15100 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15101 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15102 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15103 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15104 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15105 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015106 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15107 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15108 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15109 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015110 {"MultiMedia9 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015111
Laxminath Kasam38070be2017-08-17 18:21:59 +053015112 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15113 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15114 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15115 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15116 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15117 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15118 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15119 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015120 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15121 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15122 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15123 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015124 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015125 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15126 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15127 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15128 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15129 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15130 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15131 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15132 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15133 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15134 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15135 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15136 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15137 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15138 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15139 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15140 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015141 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15142 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15143 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15144 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015145
15146 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15147 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15148 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15149 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15150 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15151 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015152 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015153
Asish Bhattacharya34504582017-08-08 12:55:01 +053015154 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15155 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15156 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15157 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15158 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15159 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15160 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15161 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15162 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15163 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15164 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15165 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15166 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15167 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15168 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15169 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15170 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15171
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015172 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15173 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15174 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15175 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15176 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15177 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15178 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15179 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15180 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15181 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15182 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15183 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15184 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15185 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15186 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15187 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15188 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15189 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
15190
15191 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15192 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15193 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15194 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15195 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15196 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15197 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15198 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15199 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15200 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15201 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15202 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15203 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15204 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15205 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15206 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15207 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15208 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
15209
15210 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15211 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15212 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15213 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15214 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15215 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15216 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15217 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15218 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15219 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15220 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15221 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15222 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15223 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15224 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15225 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15226 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
15227
15228 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15229 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15230 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15231 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15232 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15233 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15234 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15235 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15236 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15237 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15238 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15239 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15240 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15241 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15242 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15243 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15244 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
15245
15246 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15247 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15248 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015249 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015250 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15251 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15252 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015253 {"MultiMedia28 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15254 {"MultiMedia29 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015255 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15256 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015257 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015258 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15259 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015260 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015261 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15262 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15263 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015264 {"MultiMedia28 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15265 {"MultiMedia29 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015266 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15267 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15268 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15269
15270 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
15271 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
15272 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015273 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015274 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
15275 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
15276 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015277 {"MultiMedia28 Mixer", "AFE_PCM_TX", "PCM_TX"},
15278 {"MultiMedia29 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015279 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
15280 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015281 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015282 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
15283 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15284 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
15285 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
15286 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
15287 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
15288 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
15289 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
15290 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015291 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015292 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015293 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
15294 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
15295 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
15296 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015297 {"MM_UL28", NULL, "MultiMedia28 Mixer"},
15298 {"MM_UL29", NULL, "MultiMedia29 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015299
15300 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15301 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15302 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15303 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15304 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15305 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15306 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15307 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15308 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15309 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15310 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15311 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15312 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15313 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15314 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15315 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15316 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
15317
15318 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15319 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15320 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15321 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15322 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15323 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15324 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15325 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15326 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15327 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15328 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15329 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15330 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15331 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15332 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15333 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15334 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
15335
15336 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15337 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15338 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15339 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15340 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15341 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15342 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15343 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15344 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15345 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15346 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15347 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15348 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15349 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15350 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15351 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15352 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
15353
15354 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15355 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15356 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15357 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15358 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15359 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15360 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15361 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15362 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15363 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15364 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15365 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15366 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15367 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15368 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15369 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15370 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
15371
Rohit Kumara5077932017-09-10 22:05:05 +053015372 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15373 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15374 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15375 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15376 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15377 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15378 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15379 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15380 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15381 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15382 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15383 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15384 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15385 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15386 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15387 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15388 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
15389
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015390 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15391 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15392 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15393 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15394 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15395 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
15396
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015397 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
15398 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15399 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15400 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
15401
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015402 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15403 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15404 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15405 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15406 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15407 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
15408
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015409 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
15410 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015411 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15412 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15413 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15414 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
15415
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015416 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
15417 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015418 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15419 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15420 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15421 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
15422
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015423 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15424 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015425 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15426 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15427 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15428 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
15429
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015430 {"DISPLAY_PORT_RX_Voice Mixer", "Voip", "VOIP_DL"},
15431 {"DISPLAY_PORT_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015432 {"DISPLAY_PORT_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15433 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15434 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15435 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
15436
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015437 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15438 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15439 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15440 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15441 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015442 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
15443
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015444 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15445 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15446 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15447 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15448 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15449 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
15450
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015451 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15452 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015453 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15454 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15455 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15456 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
15457
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015458 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15459 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015460 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15461 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15462 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15463 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
15464
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015465 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15466 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015467 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15468 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15469 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15470 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
15471
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015472 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15473 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015474 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15475 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15476 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15477 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
15478
Rohit Kumara5077932017-09-10 22:05:05 +053015479 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15480 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015481 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15482 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15483 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15484 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
15485
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015486 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15487 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15488 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15489 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15490 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15491 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
15492 {"HDMI", NULL, "HDMI_DL_HL"},
15493
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015494 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015495 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15496 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15497 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080015498 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015499 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15500
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015501 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015502 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15503 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15504 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15505 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15506 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15507
15508 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15509 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15510 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15511 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15512 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15513 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15514
15515 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15516 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15517 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15518 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15519 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15520 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15521
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015522 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015523 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15524 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15525 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15526 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15527 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15528
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015529 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015530 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15531 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15532 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15533 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15534
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015535 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015536 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15537 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15538 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15539 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15540
Raja Mallik321d5712018-05-04 17:22:11 +053015541 {"PRI_TDM_RX_0_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015542 {"PRI_TDM_RX_0_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15543 {"PRI_TDM_RX_0_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15544 {"PRI_TDM_RX_0_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15545 {"PRI_TDM_RX_0_Voice Mixer", "QCHAT", "QCHAT_DL"},
15546 {"PRI_TDM_RX_0_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15547 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15548 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15549 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_Voice Mixer"},
15550
Raja Mallik321d5712018-05-04 17:22:11 +053015551 {"PRI_TDM_RX_1_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015552 {"PRI_TDM_RX_1_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15553 {"PRI_TDM_RX_1_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15554 {"PRI_TDM_RX_1_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15555 {"PRI_TDM_RX_1_Voice Mixer", "QCHAT", "QCHAT_DL"},
15556 {"PRI_TDM_RX_1_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15557 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15558 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15559 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_Voice Mixer"},
15560
Raja Mallik321d5712018-05-04 17:22:11 +053015561 {"PRI_TDM_RX_2_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015562 {"PRI_TDM_RX_2_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15563 {"PRI_TDM_RX_2_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15564 {"PRI_TDM_RX_2_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15565 {"PRI_TDM_RX_2_Voice Mixer", "QCHAT", "QCHAT_DL"},
15566 {"PRI_TDM_RX_2_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15567 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15568 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15569 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_Voice Mixer"},
15570
Raja Mallik321d5712018-05-04 17:22:11 +053015571 {"PRI_TDM_RX_3_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015572 {"PRI_TDM_RX_3_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15573 {"PRI_TDM_RX_3_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15574 {"PRI_TDM_RX_3_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15575 {"PRI_TDM_RX_3_Voice Mixer", "QCHAT", "QCHAT_DL"},
15576 {"PRI_TDM_RX_3_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15577 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15578 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15579 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_Voice Mixer"},
15580
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015581 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15582 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15583
15584 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15585 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15586 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15587 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015588 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015589 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015590 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015591 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15592 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15593
15594 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15595 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15596 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15597 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15598 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15599 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15600 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15601 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15602 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15603 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15604
15605 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15606 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15607 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15608 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15609
15610 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15611 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15612 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15613 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15614
15615 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15616 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15617 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15618 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15619
15620 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15621 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15622 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15623 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15624
15625 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15626 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15627 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15628 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15629
15630 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15631 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15632 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15633 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15634
15635 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15636 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15637 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15638 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15639
Laxminath Kasam38070be2017-08-17 18:21:59 +053015640 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15641 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15642 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15643 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15644 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15645 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15646 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15647 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15648 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15649 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015650
15651 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15652 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15653 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15654 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15655
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015656 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15657 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15658 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15659 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15660
15661 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15662 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15663 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15664 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15665
15666 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15667 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15668 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15669 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15670
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015671 {"AUDIO_REF_EC_UL28 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15672 {"AUDIO_REF_EC_UL28 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15673 {"AUDIO_REF_EC_UL28 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15674 {"AUDIO_REF_EC_UL28 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15675
15676 {"AUDIO_REF_EC_UL29 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15677 {"AUDIO_REF_EC_UL29 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15678 {"AUDIO_REF_EC_UL29 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15679 {"AUDIO_REF_EC_UL29 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Yunfei Zhang3efc4a22017-11-07 16:30:13 +080015680
15681 {"LSM1_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15682 {"LSM2_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15683 {"LSM3_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15684 {"LSM4_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15685 {"LSM5_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15686 {"LSM6_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15687 {"LSM7_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15688 {"LSM8_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15689
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015690 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15691 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15692 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15693 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15694 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15695 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15696 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15697 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015698 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015699 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015700 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15701 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15702 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015703 {"MM_UL28", NULL, "AUDIO_REF_EC_UL28 MUX"},
15704 {"MM_UL29", NULL, "AUDIO_REF_EC_UL29 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015705
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015706 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15707 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15708 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15709 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15710 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15711 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15712 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15713 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15714 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15715 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15716 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15717 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15718 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15719 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15720 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015721 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015722 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
Raja Mallik321d5712018-05-04 17:22:11 +053015723 {"VoiceMMode1_Tx Mixer", "PRI_TDM_TX_3_MMode1", "PRI_TDM_TX_3"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015724 {"VoiceMMode1_Tx Mixer", "QUAT_MI2S_TX_MMode1", "QUAT_MI2S_TX"},
15725 {"VoiceMMode1_Tx Mixer", "QUIN_MI2S_TX_MMode1", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015726 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15727
15728 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15729 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15730 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15731 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15732 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15733 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15734 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15735 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15736 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15737 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15738 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15739 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15740 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15741 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15742 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015743 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015744 {"VoiceMMode2_Tx Mixer", "QUAT_MI2S_TX_MMode2", "QUAT_MI2S_TX"},
15745 {"VoiceMMode2_Tx Mixer", "QUIN_MI2S_TX_MMode2", "QUIN_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015746 {"VoiceMMode2_Tx Mixer", "PRI_TDM_TX_3_MMode2", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015747 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15748
15749 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15750 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15751 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15752 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15753 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15754 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15755 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15756 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15757 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15758 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15759 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15760 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15761 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15762 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015763 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015764 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015765 {"Voip_Tx Mixer", "PRI_TDM_TX_3_Voip", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015766 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15767
15768 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15769 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15770 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15771 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15772 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15773 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15774 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15775 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15776 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15777 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15778 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15779 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15780 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15781 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15782 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15783
15784 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15785 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15786 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15787 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15788 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15789 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15790 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15791 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015792 {"LSM1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15793 {"LSM1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015794 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15795
15796 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15797 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15798 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15799 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15800 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15801 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15802 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15803 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015804 {"LSM2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15805 {"LSM2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015806 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
15807
15808
15809 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15810 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15811 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15812 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15813 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15814 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15815 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15816 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015817 {"LSM3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15818 {"LSM3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015819 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
15820
15821
15822 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15823 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15824 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15825 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15826 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15827 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15828 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15829 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015830 {"LSM4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15831 {"LSM4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015832 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
15833
15834 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15835 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15836 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15837 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15838 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15839 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15840 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15841 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015842 {"LSM5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15843 {"LSM5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015844 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
15845
15846 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15847 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15848 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15849 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15850 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15851 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015852 {"LSM6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15853 {"LSM6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015854 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
15855
15856 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15857 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15858 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15859 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15860 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15861 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015862 {"LSM7 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15863 {"LSM7 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015864 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
15865
15866 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15867 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15868 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15869 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15870 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15871 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015872 {"LSM8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15873 {"LSM8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015874 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
15875
15876
15877 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
15878 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
15879 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
15880 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
15881 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
15882 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
15883 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
15884 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
15885 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
15886 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
15887 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015888 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015889 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
15890 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
15891 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
15892 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
15893 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
15894 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
15895
15896 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
15897 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
15898 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
15899 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
15900 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
15901 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
15902 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
15903 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
15904 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
15905 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
15906 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
15907 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015908 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015909 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015910 {"SEC_AUXPCM_UL_HL", NULL, "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015911 {"MI2S_RX", NULL, "MI2S_DL_HL"},
15912 {"MI2S_UL_HL", NULL, "MI2S_TX"},
15913 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
15914 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
15915
15916 /* connect to INT4_MI2S_DL_HL since same pcm_id */
15917 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15918 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
15919 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15920 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
15921 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
15922 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
15923 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
15924 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
15925 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
15926 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
15927
15928 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
15929 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015930 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
15931 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015932 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15933 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
15934 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15935 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
15936 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
15937 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
15938 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
15939 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
15940 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
15941 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
15942
15943 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
15944 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
15945 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
15946 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
15947 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
15948 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
15949 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
15950 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
15951 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
15952 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
15953 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
15954 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
15955 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
15956 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
15957 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
15958 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
15959 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
15960 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
15961 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
15962 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
15963 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
15964 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
15965 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
15966 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
15967 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
15968 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
15969 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
15970 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
15971 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
15972 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
15973 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
15974 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015975 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
15976 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
15977 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
15978 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
15979 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
15980 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
15981 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
15982 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015983
15984 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15985 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15986 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15987 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15988 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15989 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15990 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15991 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15992 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15993 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15994 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15995 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15996 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15997 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15998 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15999 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016000 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16001 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16002 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16003 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016004 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
16005
16006 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16007 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16008 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16009 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16010 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16011 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16012 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16013 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16014 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16015 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16016 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16017 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16018 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16019 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16020 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16021 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016022 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16023 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16024 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16025 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016026 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
16027
16028 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16029 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16030 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16031 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16032 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16033 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16034 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16035 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16036 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16037 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16038 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16039 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16040 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16041 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16042 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16043 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016044 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16045 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16046 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16047 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016048 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
16049
16050 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16051 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16052 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16053 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16054 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16055 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16056 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16057 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16058 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16059 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16060 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16061 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16062 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16063 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16064 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16065 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016066 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16067 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16068 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16069 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016070 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
16071
16072 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16073 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16074 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16075 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16076 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16077 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16078 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16079 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16080 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16081 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16082 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16083 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16084 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16085 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16086 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16087 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016088 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16089 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16090 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16091 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016092 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
16093
16094 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16095 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16096 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16097 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16098 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16099 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16100 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16101 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16102 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16103 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16104 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16105 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16106 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16107 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16108 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16109 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016110 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16111 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16112 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16113 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016114 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
16115
16116 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16117 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16118 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16119 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16120 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16121 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16122 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16123 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16124 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16125 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16126 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16127 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16128 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16129 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16130 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16131 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016132 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16133 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16134 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16135 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016136 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
16137
16138 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16139 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16140 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16141 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16142 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16143 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16144 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16145 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16146 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16147 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16148 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16149 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16150 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16151 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16152 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16153 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016154 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16155 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16156 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16157 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016158 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
16159
16160 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16161 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16162 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16163 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16164 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16165 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16166 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16167 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16168 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16169 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16170 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16171 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16172 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16173 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16174 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16175 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016176 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16177 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16178 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16179 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016180 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
16181
16182 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16183 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16184 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16185 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16186 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16187 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16188 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16189 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16190 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16191 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16192 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16193 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16194 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16195 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16196 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16197 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016198 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16199 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16200 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16201 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016202 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
16203
16204 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16205 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16206 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16207 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16208 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16209 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16210 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16211 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16212 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16213 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16214 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16215 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16216 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16217 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16218 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16219 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016220 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16221 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16222 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16223 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016224 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
16225
16226 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16227 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16228 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16229 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16230 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16231 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16232 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16233 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16234 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16235 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16236 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16237 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16238 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16239 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16240 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16241 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016242 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16243 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16244 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16245 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016246 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
16247
16248 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16249 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16250 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16251 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16252 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16253 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16254 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16255 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16256 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16257 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16258 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16259 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16260 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16261 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16262 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16263 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016264 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16265 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16266 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16267 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016268 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
16269
16270 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16271 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16272 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16273 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16274 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16275 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16276 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16277 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16278 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16279 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16280 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16281 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16282 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16283 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16284 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16285 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016286 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16287 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16288 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16289 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016290 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
16291
16292 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16293 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16294 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16295 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16296 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16297 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16298 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16299 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16300 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16301 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16302 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16303 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16304 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16305 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16306 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16307 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016308 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16309 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16310 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16311 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016312 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
16313
16314 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16315 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16316 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16317 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16318 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16319 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16320 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16321 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16322 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16323 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16324 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16325 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16326 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16327 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16328 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16329 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016330 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16331 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16332 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16333 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016334 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
16335
Rohit Kumara5077932017-09-10 22:05:05 +053016336 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16337 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16338 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16339 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16340 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16341 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16342 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16343 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16344 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16345 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16346 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16347 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16348 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16349 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16350 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16351 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16352 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16353 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16354 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16355 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016356 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016357
16358 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16359 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16360 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16361 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16362 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16363 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16364 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16365 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16366 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16367 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16368 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16369 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16370 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16371 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16372 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16373 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16374 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16375 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16376 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16377 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016378 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016379
16380 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16381 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16382 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16383 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16384 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16385 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16386 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16387 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16388 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16389 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16390 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16391 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16392 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16393 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16394 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16395 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16396 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16397 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16398 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16399 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016400 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016401
16402 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16403 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16404 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16405 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16406 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16407 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16408 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16409 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16410 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16411 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16412 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16413 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16414 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16415 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16416 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16417 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16418 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16419 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16420 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16421 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016422 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016423
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016424 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16425 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16426 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16427 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016428 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016429 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16430 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16431 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16432 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16433 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16434 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
16435
16436 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16437 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16438 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16439 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016440 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016441 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16442 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16443 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16444 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16445 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16446 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
16447
16448 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16449 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16450 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16451 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16452 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16453 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16454 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16455 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16456 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016457 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016458 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16459 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16460 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16461 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16462 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016463 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016464 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16465 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
16466 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16467 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16468 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
16469 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
16470 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
16471 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
16472 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
16473 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
16474
16475
16476 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16477 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16478 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16479 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16480 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016481 {"AUX_PCM_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016482 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
16483
16484 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16485 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16486 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016487 {"SEC_AUXPCM_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016488 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
16489
16490 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16491 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16492 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16493 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
16494
16495 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16496 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
16497 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16498 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
16499
Rohit Kumara5077932017-09-10 22:05:05 +053016500 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16501 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
16502 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16503 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
16504
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016505 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16506 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16507 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16508 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16509 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16510 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16511 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16512 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016513 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016514 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
16515 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16516 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16517 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16518 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16519 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16520 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16521 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16522 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16523 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16524 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
16525
16526 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16527 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16528 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16529 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16530 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16531 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16532 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16533 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16534 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16535 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16536 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16537 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
16538
16539 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16540 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16541 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16542 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16543 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16544 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16545 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16546 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16547 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16548 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16549 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16550 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
16551
kunleizdf5a00a2017-11-27 15:27:36 +080016552 {"STUB_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16553 {"STUB_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016554 {"STUB_RX", NULL, "STUB_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016555
16556 {"SLIMBUS_1_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16557 {"SLIMBUS_1_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016558 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016559
16560 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16561 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016562 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
16563
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016564 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
16565 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016566 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16567 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16568 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16569 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
16570
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016571 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
16572 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016573 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16574 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16575 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16576 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16577
16578 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16579 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16580 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16581 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16582 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16583 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16584 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16585 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16586 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16587 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16588 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16589 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16590 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16591
16592 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16593 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16594 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16595 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16596 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16597 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16598 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16599 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16600 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16601 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16602 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16603 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16604 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16605
16606 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16607 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16608
16609 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16610 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16611
16612 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16613 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16614
16615 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16616 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16617 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16618
16619 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16620 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16621 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16622 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016623 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016624 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16625 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16626 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16627 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016628 {"PRI_MI2S_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016629 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16630
16631 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16632 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16633 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16634 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016635 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016636 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16637 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16638 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016639 {"SEC_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016640 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16641
16642 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16643 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16644 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16645 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016646 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016647 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16648 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16649 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16650
16651 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16652 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16653 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16654 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016655 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016656 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16657 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16658 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16659 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16660 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16661
Rohit Kumara5077932017-09-10 22:05:05 +053016662 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16663 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16664 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16665 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16666 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16667 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16668 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16669 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16670
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016671 /* Backend Enablement */
16672
16673 {"BE_OUT", NULL, "PRI_I2S_RX"},
16674 {"BE_OUT", NULL, "SEC_I2S_RX"},
16675 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16676 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16677 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16678 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16679 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16680 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16681 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16682 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16683 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16684 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16685 {"BE_OUT", NULL, "HDMI"},
16686 {"BE_OUT", NULL, "DISPLAY_PORT"},
16687 {"BE_OUT", NULL, "SPDIF_RX"},
16688 {"BE_OUT", NULL, "MI2S_RX"},
16689 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16690 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16691 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16692 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16693 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16694 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16695 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16696 {"BE_OUT", NULL, "INT4_MI2S_RX"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016697 {"BE_OUT", NULL, "INT2_MI2S_RX"},
16698 {"BE_OUT", NULL, "INT3_MI2S_RX"},
16699 {"BE_OUT", NULL, "INT5_MI2S_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016700 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16701 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16702 {"BE_OUT", NULL, "INT_FM_RX"},
16703 {"BE_OUT", NULL, "PCM_RX"},
16704 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16705 {"BE_OUT", NULL, "AUX_PCM_RX"},
16706 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16707 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16708 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016709 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016710 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16711 {"BE_OUT", NULL, "INT_FM_RX"},
16712 {"BE_OUT", NULL, "PCM_RX"},
16713 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16714 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16715 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16716 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16717 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16718 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16719 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16720 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16721 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16722 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16723 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16724 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16725 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16726 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16727 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16728 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16729 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16730 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16731 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16732 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016733 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16734 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16735 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16736 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016737
16738 {"PRI_I2S_TX", NULL, "BE_IN"},
16739 {"MI2S_TX", NULL, "BE_IN"},
16740 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16741 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16742 {"PRI_MI2S_TX", NULL, "BE_IN"},
16743 {"TERT_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016744 {"INT0_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016745 {"INT2_MI2S_TX", NULL, "BE_IN"},
16746 {"INT3_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016747 {"INT4_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016748 {"INT5_MI2S_TX", NULL, "BE_IN"},
16749 {"SEC_MI2S_TX", NULL, "BE_IN"},
16750 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16751 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16752 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16753 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16754 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16755 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16756 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16757 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16758 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16759 {"USB_AUDIO_TX", NULL, "BE_IN" },
16760 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16761 {"INT_FM_TX", NULL, "BE_IN"},
16762 {"PCM_TX", NULL, "BE_IN"},
16763 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16764 {"BE_OUT", NULL, "STUB_RX"},
16765 {"STUB_TX", NULL, "BE_IN"},
16766 {"STUB_1_TX", NULL, "BE_IN"},
16767 {"BE_OUT", NULL, "AUX_PCM_RX"},
16768 {"AUX_PCM_TX", NULL, "BE_IN"},
16769 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16770 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16771 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016772 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016773 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16774 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16775 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16776 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16777 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16778 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16779 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16780 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16781 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16782 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16783 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16784 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16785 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16786 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16787 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16788 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16789 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16790 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16791 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16792 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16793 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16794 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16795 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16796 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16797 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16798 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16799 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16800 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Raja Mallik425e1d32018-05-20 19:21:10 +053016801 {"AFE_LOOPBACK_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016802 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16803 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16804 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16805 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016806};
16807
16808static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16809 struct snd_pcm_hw_params *params)
16810{
16811 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16812 unsigned int be_id = rtd->dai_link->id;
16813
16814 if (be_id >= MSM_BACKEND_DAI_MAX) {
16815 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16816 return -EINVAL;
16817 }
16818
16819 mutex_lock(&routing_lock);
16820 msm_bedais[be_id].sample_rate = params_rate(params);
16821 msm_bedais[be_id].channel = params_channels(params);
16822 msm_bedais[be_id].format = params_format(params);
16823 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
16824 __func__, msm_bedais[be_id].sample_rate,
16825 msm_bedais[be_id].format, be_id);
16826 mutex_unlock(&routing_lock);
16827 return 0;
16828}
16829
16830static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
16831{
16832 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16833 unsigned int be_id = rtd->dai_link->id;
16834 int i, session_type, path_type, topology;
16835 struct msm_pcm_routing_bdai_data *bedai;
16836 struct msm_pcm_routing_fdai_data *fdai;
16837
16838 pr_debug("%s: substream->pcm->id:%s\n",
16839 __func__, substream->pcm->id);
16840
16841 if (be_id >= MSM_BACKEND_DAI_MAX) {
16842 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16843 return -EINVAL;
16844 }
16845
16846 bedai = &msm_bedais[be_id];
16847 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
16848 0 : 1);
16849 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16850 path_type = ADM_PATH_PLAYBACK;
16851 else
16852 path_type = ADM_PATH_LIVE_REC;
16853
16854 mutex_lock(&routing_lock);
16855 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16856 if (!is_mm_lsm_fe_id(i))
16857 continue;
16858 fdai = &fe_dai_map[i][session_type];
16859 if (fdai->strm_id != INVALID_SESSION) {
16860 int idx;
16861 int port_id;
16862 unsigned long copp =
16863 session_copp_map[i][session_type][be_id];
16864 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
16865 if (test_bit(idx, &copp))
16866 break;
16867 fdai->be_srate = bedai->sample_rate;
16868 port_id = bedai->port_id;
16869 topology = adm_get_topology_for_port_copp_idx(port_id,
16870 idx);
16871 adm_close(bedai->port_id, fdai->perf_mode, idx);
16872 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
16873 __func__, copp, i, session_type, be_id,
16874 topology);
16875 clear_bit(idx,
16876 &session_copp_map[i][session_type][be_id]);
16877 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16878 (bedai->passthr_mode[i] == LEGACY_PCM))
16879 msm_pcm_routing_deinit_pp(bedai->port_id,
16880 topology);
16881 }
16882 }
16883
16884 bedai->active = 0;
16885 bedai->sample_rate = 0;
16886 bedai->channel = 0;
16887 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
16888 if (bedai->passthr_mode[i] != LISTEN)
16889 bedai->passthr_mode[i] = LEGACY_PCM;
16890 }
16891 mutex_unlock(&routing_lock);
16892
16893 return 0;
16894}
16895
16896static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
16897{
16898 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16899 unsigned int be_id = rtd->dai_link->id;
16900 int i, path_type, topology;
16901 int session_type = INVALID_SESSION;
16902 struct msm_pcm_routing_bdai_data *bedai;
16903 u32 channels, sample_rate;
16904 uint16_t bits_per_sample = 16, voc_path_type;
16905 struct msm_pcm_routing_fdai_data *fdai;
16906 u32 session_id;
16907 struct media_format_info voc_be_media_format;
16908 bool is_lsm;
16909
16910 pr_debug("%s: substream->pcm->id:%s\n",
16911 __func__, substream->pcm->id);
16912
16913 if (be_id >= MSM_BACKEND_DAI_MAX) {
16914 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16915 return -EINVAL;
16916 }
16917
16918 bedai = &msm_bedais[be_id];
16919
16920 mutex_lock(&routing_lock);
16921 if (bedai->active == 1)
16922 goto done; /* Ignore prepare if back-end already active */
16923
16924 /* AFE port is not active at this point. However, still
16925 * go ahead setting active flag under the notion that
16926 * QDSP6 is able to handle ADM starting before AFE port
16927 * is started.
16928 */
16929 bedai->active = 1;
16930
16931 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16932 if (!(is_mm_lsm_fe_id(i) &&
16933 route_check_fe_id_adm_support(i)))
16934 continue;
16935
16936 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
16937 if (bedai->passthr_mode[i] != LEGACY_PCM)
16938 path_type = ADM_PATH_COMPRESSED_RX;
16939 else
16940 path_type = ADM_PATH_PLAYBACK;
16941 session_type = SESSION_TYPE_RX;
16942 } else {
16943 path_type = ADM_PATH_LIVE_REC;
16944 session_type = SESSION_TYPE_TX;
16945 }
16946
16947 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
16948 (i <= MSM_FRONTEND_DAI_LSM8);
16949 fdai = &fe_dai_map[i][session_type];
16950 if (fdai->strm_id != INVALID_SESSION) {
16951 int app_type, app_type_idx, copp_idx, acdb_dev_id;
16952
16953 if (session_type == SESSION_TYPE_TX &&
16954 fdai->be_srate &&
16955 (fdai->be_srate != bedai->sample_rate)) {
16956 pr_debug("%s: flush strm %d diff BE rates\n",
16957 __func__,
16958 fdai->strm_id);
16959
16960 if (fdai->event_info.event_func)
16961 fdai->event_info.event_func(
16962 MSM_PCM_RT_EVT_BUF_RECFG,
16963 fdai->event_info.priv_data);
16964 fdai->be_srate = 0; /* might not need it */
16965 }
16966 bits_per_sample = msm_routing_get_bit_width(
16967 bedai->format);
16968
16969 app_type =
16970 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
16971 if (app_type && is_lsm) {
16972 app_type_idx =
16973 msm_pcm_routing_get_lsm_app_type_idx(app_type);
16974 sample_rate =
16975 fe_dai_app_type_cfg[i][session_type][be_id]
16976 .sample_rate;
16977 bits_per_sample =
16978 lsm_app_type_cfg[app_type_idx].bit_width;
16979 } else if (app_type) {
16980 app_type_idx =
16981 msm_pcm_routing_get_app_type_idx(app_type);
16982 sample_rate =
16983 fe_dai_app_type_cfg[i][session_type]
16984 [be_id].sample_rate;
16985 bits_per_sample =
16986 app_type_cfg[app_type_idx].bit_width;
16987 } else
16988 sample_rate = bedai->sample_rate;
16989 /*
16990 * check if ADM needs to be configured with different
16991 * channel mapping than backend
16992 */
16993 if (!bedai->adm_override_ch)
16994 channels = bedai->channel;
16995 else
16996 channels = bedai->adm_override_ch;
16997 acdb_dev_id =
16998 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
16999 topology = msm_routing_get_adm_topology(i, session_type,
17000 be_id);
17001 copp_idx = adm_open(bedai->port_id, path_type,
17002 sample_rate, channels, topology,
17003 fdai->perf_mode, bits_per_sample,
17004 app_type, acdb_dev_id);
17005 if ((copp_idx < 0) ||
17006 (copp_idx >= MAX_COPPS_PER_PORT)) {
17007 pr_err("%s: adm open failed\n", __func__);
17008 mutex_unlock(&routing_lock);
17009 return -EINVAL;
17010 }
17011 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
17012 __func__, i, session_type, be_id);
17013 set_bit(copp_idx,
17014 &session_copp_map[i][session_type][be_id]);
17015
17016 if (msm_is_resample_needed(
17017 sample_rate,
17018 bedai->sample_rate))
17019 adm_copp_mfc_cfg(
17020 bedai->port_id, copp_idx,
17021 bedai->sample_rate);
17022
17023 msm_pcm_routing_build_matrix(i, session_type, path_type,
17024 fdai->perf_mode,
17025 bedai->passthr_mode[i]);
17026 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
17027 (bedai->passthr_mode[i] == LEGACY_PCM))
17028 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
17029 topology, channels);
17030 }
17031 }
17032
17033 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17034 session_id = msm_pcm_routing_get_voc_sessionid(i);
17035 if (session_id) {
17036 pr_debug("%s voice session_id: 0x%x\n", __func__,
17037 session_id);
17038
17039 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
17040 voc_path_type = RX_PATH;
17041 else
17042 voc_path_type = TX_PATH;
17043
17044 voc_set_route_flag(session_id, voc_path_type, 1);
17045
17046 memset(&voc_be_media_format, 0,
17047 sizeof(struct media_format_info));
17048
17049 voc_be_media_format.port_id = bedai->port_id;
17050 voc_be_media_format.num_channels = bedai->channel;
17051 voc_be_media_format.sample_rate = bedai->sample_rate;
17052 voc_be_media_format.bits_per_sample = bedai->format;
17053 /* Defaulting this to 1 for voice call usecases */
17054 voc_be_media_format.channel_mapping[0] = 1;
17055
17056 voc_set_device_config(session_id, voc_path_type,
17057 &voc_be_media_format);
17058
17059 if (voc_get_route_flag(session_id, RX_PATH) &&
17060 voc_get_route_flag(session_id, TX_PATH))
17061 voc_enable_device(session_id);
17062 }
17063 }
17064
17065 /* Check if backend is an external ec ref port and set as needed */
17066 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
17067
17068 memset(&voc_be_media_format, 0,
17069 sizeof(struct media_format_info));
17070
17071 /* Get format info for ec ref port from msm_bedais[] */
17072 voc_be_media_format.port_id = bedai->port_id;
17073 voc_be_media_format.num_channels = bedai->channel;
17074 voc_be_media_format.bits_per_sample = bedai->format;
17075 voc_be_media_format.sample_rate = bedai->sample_rate;
17076 /* Defaulting this to 1 for voice call usecases */
17077 voc_be_media_format.channel_mapping[0] = 1;
17078 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
17079 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
17080 __func__, voc_be_media_format.port_id,
17081 voc_be_media_format.num_channels,
17082 voc_be_media_format.bits_per_sample,
17083 voc_be_media_format.sample_rate);
17084 }
17085
17086done:
17087 mutex_unlock(&routing_lock);
17088
17089 return 0;
17090}
17091
17092static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
17093 int fe_id)
17094{
17095 int index, topo_id, be_idx;
17096 unsigned long pp_config = 0;
17097 bool mute_on;
17098 int latency;
17099 bool compr_passthr_mode = true;
17100
17101 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
17102
17103 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
17104 pr_err("%s: Device pp params on invalid port %d\n",
17105 __func__, port_id);
17106 return -EINVAL;
17107 }
17108
17109 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17110 if (port_id == msm_bedais[be_idx].port_id)
17111 break;
17112 }
17113
17114 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17115 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17116 return -EINVAL;
17117 }
17118
17119 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17120 if (msm_bedais_pp_params[index].port_id == port_id)
17121 break;
17122 }
17123 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17124 pr_err("%s: Invalid backend pp params index %d\n",
17125 __func__, index);
17126 return -EINVAL;
17127 }
17128
17129 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
17130 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
17131 pr_err("%s: Invalid passthrough topology 0x%x\n",
17132 __func__, topo_id);
17133 return -EINVAL;
17134 }
17135
17136 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
17137 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
17138 compr_passthr_mode = false;
17139
17140 pp_config = msm_bedais_pp_params[index].pp_params_config;
17141 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
17142 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17143 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
17144 mute_on = msm_bedais_pp_params[index].mute_on;
17145 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17146 adm_send_compressed_device_mute(port_id,
17147 copp_idx,
17148 mute_on);
17149 }
17150 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
17151 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17152 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
17153 &pp_config);
17154 latency = msm_bedais_pp_params[index].latency;
17155 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17156 adm_send_compressed_device_latency(port_id,
17157 copp_idx,
17158 latency);
17159 }
17160 return 0;
17161}
17162
17163static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17164 struct snd_ctl_elem_value *ucontrol)
17165{
17166 int pp_id = ucontrol->value.integer.value[0];
17167 int port_id = 0;
17168 int index, be_idx, i, topo_id, idx;
17169 bool mute;
17170 int latency;
17171 bool compr_passthr_mode = true;
17172
17173 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
17174
17175 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17176 port_id = msm_bedais[be_idx].port_id;
17177 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
17178 break;
17179 }
17180
17181 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17182 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17183 return -EINVAL;
17184 }
17185
17186 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17187 if (msm_bedais_pp_params[index].port_id == port_id)
17188 break;
17189 }
17190 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17191 pr_err("%s: Invalid pp params backend index %d\n",
17192 __func__, index);
17193 return -EINVAL;
17194 }
17195
17196 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
17197 MSM_FRONTEND_DAI_MM_SIZE) {
17198 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
17199 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
17200 compr_passthr_mode = false;
17201
17202 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17203 unsigned long copp =
17204 session_copp_map[i]
17205 [SESSION_TYPE_RX][be_idx];
17206 if (!test_bit(idx, &copp))
17207 continue;
17208 topo_id = adm_get_topology_for_port_copp_idx(port_id,
17209 idx);
17210 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
17211 continue;
17212 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
17213 __func__, port_id, copp, msm_bedais[be_idx].active,
17214 msm_bedais[be_idx].passthr_mode[i]);
17215 switch (pp_id) {
17216 case ADM_PP_PARAM_MUTE_ID:
17217 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17218 mute = ucontrol->value.integer.value[1] ? true : false;
17219 msm_bedais_pp_params[index].mute_on = mute;
17220 set_bit(ADM_PP_PARAM_MUTE_BIT,
17221 &msm_bedais_pp_params[index].pp_params_config);
17222 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17223 adm_send_compressed_device_mute(port_id,
17224 idx, mute);
17225 break;
17226 case ADM_PP_PARAM_LATENCY_ID:
17227 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17228 msm_bedais_pp_params[index].latency =
17229 ucontrol->value.integer.value[1];
17230 set_bit(ADM_PP_PARAM_LATENCY_BIT,
17231 &msm_bedais_pp_params[index].pp_params_config);
17232 latency = msm_bedais_pp_params[index].latency =
17233 ucontrol->value.integer.value[1];
17234 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17235 adm_send_compressed_device_latency(port_id,
17236 idx, latency);
17237 break;
17238 default:
17239 pr_info("%s, device pp param %d not supported\n",
17240 __func__, pp_id);
17241 break;
17242 }
17243 }
17244 }
17245 return 0;
17246}
17247
17248static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17249 struct snd_ctl_elem_value *ucontrol)
17250{
17251 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
17252 return 0;
17253}
17254
17255static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
17256 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
17257 0, 3, msm_routing_get_device_pp_params_mixer,
17258 msm_routing_put_device_pp_params_mixer),
17259};
17260
17261static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
17262 struct snd_ctl_elem_value *ucontrol)
17263{
17264 ucontrol->value.integer.value[0] =
17265 core_get_license_status(ASM_MEDIA_FMT_APTX);
17266 pr_debug("%s: status %ld\n", __func__,
17267 ucontrol->value.integer.value[0]);
17268 return 0;
17269}
17270
17271static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
17272 struct snd_ctl_elem_value *ucontrol)
17273{
17274 int32_t status = 0;
17275
17276 status = core_set_license(ucontrol->value.integer.value[0],
17277 APTX_CLASSIC_DEC_LICENSE_ID);
17278 pr_debug("%s: status %d\n", __func__, status);
17279 return status;
17280}
17281
17282static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
17283 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
17284 0xFFFF, 0, msm_aptx_dec_license_control_get,
17285 msm_aptx_dec_license_control_put),
17286};
17287
17288static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
17289 struct snd_ctl_elem_info *uinfo)
17290{
17291 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
17292 uinfo->count = sizeof(be_dai_name_table);
17293 return 0;
17294}
17295
17296static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
17297 unsigned int __user *bytes,
17298 unsigned int size)
17299{
17300 int i;
17301 int ret;
17302
17303 if (size < sizeof(be_dai_name_table)) {
17304 pr_err("%s: invalid size %d requested, returning\n",
17305 __func__, size);
17306 ret = -EINVAL;
17307 goto done;
17308 }
17309
17310 /*
17311 * Fill be_dai_name_table from msm_bedais table to reduce code changes
17312 * needed when adding new backends
17313 */
17314 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17315 be_dai_name_table[i].be_id = i;
17316 strlcpy(be_dai_name_table[i].be_name,
17317 msm_bedais[i].name,
17318 LPASS_BE_NAME_MAX_LENGTH);
17319 }
17320
17321 ret = copy_to_user(bytes, &be_dai_name_table,
17322 sizeof(be_dai_name_table));
17323 if (ret) {
17324 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
17325 ret = -EFAULT;
17326 }
17327
17328done:
17329 return ret;
17330}
17331
17332static const struct snd_kcontrol_new
17333 msm_routing_be_dai_name_table_mixer_controls[] = {
17334 {
17335 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
17336 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
17337 .info = msm_routing_be_dai_name_table_info,
17338 .name = "Backend DAI Name Table",
17339 .tlv.c = snd_soc_bytes_tlv_callback,
17340 .private_value = (unsigned long) &(struct soc_bytes_ext) {
17341 .max = sizeof(be_dai_name_table),
17342 .get = msm_routing_be_dai_name_table_tlv_get,
17343 }
17344 },
17345};
17346
17347static int msm_routing_stereo_channel_reverse_control_get(
17348 struct snd_kcontrol *kcontrol,
17349 struct snd_ctl_elem_value *ucontrol)
17350{
17351 ucontrol->value.integer.value[0] = swap_ch;
17352 pr_debug("%s: Swap channel value: %ld\n", __func__,
17353 ucontrol->value.integer.value[0]);
17354 return 0;
17355}
17356
17357static int msm_routing_stereo_channel_reverse_control_put(
17358 struct snd_kcontrol *kcontrol,
17359 struct snd_ctl_elem_value *ucontrol)
17360{
17361 int i, idx, be_index, port_id;
17362 int ret = 0;
17363 unsigned long copp;
17364
17365 pr_debug("%s Swap channel value:%ld\n", __func__,
17366 ucontrol->value.integer.value[0]);
17367
17368 swap_ch = ucontrol->value.integer.value[0];
17369
17370 mutex_lock(&routing_lock);
17371 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
17372 port_id = msm_bedais[be_index].port_id;
17373 if (!msm_bedais[be_index].active)
17374 continue;
17375
17376 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
17377 MSM_FRONTEND_DAI_MM_SIZE) {
17378 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
17379 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17380 if (!test_bit(idx, &copp))
17381 continue;
17382
17383 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
17384 __func__, port_id, idx);
17385 ret = adm_swap_speaker_channels(
17386 port_id, idx,
17387 msm_bedais[be_index].sample_rate,
17388 swap_ch);
17389 if (ret) {
17390 pr_err("%s:Swap_channel failed, err=%d\n",
17391 __func__, ret);
17392 goto done;
17393 }
17394 }
17395 }
17396 }
17397done:
17398 mutex_unlock(&routing_lock);
17399 return ret;
17400}
17401
17402static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
17403 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
17404 1, 0, msm_routing_stereo_channel_reverse_control_get,
17405 msm_routing_stereo_channel_reverse_control_put),
17406};
17407
17408static const struct snd_pcm_ops msm_routing_pcm_ops = {
17409 .hw_params = msm_pcm_routing_hw_params,
17410 .close = msm_pcm_routing_close,
17411 .prepare = msm_pcm_routing_prepare,
17412};
17413
17414/* Not used but frame seems to require it */
17415static int msm_routing_probe(struct snd_soc_platform *platform)
17416{
17417 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
17418 ARRAY_SIZE(msm_qdsp6_widgets));
17419 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
17420 ARRAY_SIZE(intercon));
17421
17422 snd_soc_dapm_new_widgets(platform->component.dapm.card);
17423
17424 snd_soc_add_platform_controls(platform, lsm_controls,
17425 ARRAY_SIZE(lsm_controls));
17426
17427 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
17428 ARRAY_SIZE(aanc_slim_0_rx_mux));
17429
17430 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
17431 ARRAY_SIZE(msm_voc_session_controls));
17432
17433 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
17434 ARRAY_SIZE(app_type_cfg_controls));
17435
17436 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
17437 ARRAY_SIZE(lsm_app_type_cfg_controls));
17438
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070017439 snd_soc_add_platform_controls(platform, module_cfg_controls,
17440 ARRAY_SIZE(module_cfg_controls));
17441
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017442 snd_soc_add_platform_controls(platform,
17443 stereo_to_custom_stereo_controls,
17444 ARRAY_SIZE(stereo_to_custom_stereo_controls));
17445
17446 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
17447 ARRAY_SIZE(ec_ref_param_controls));
17448
17449 snd_soc_add_platform_controls(platform, channel_mixer_controls,
17450 ARRAY_SIZE(channel_mixer_controls));
17451
17452 msm_qti_pp_add_controls(platform);
17453
17454 msm_dts_srs_tm_add_controls(platform);
17455
17456 msm_dolby_dap_add_controls(platform);
17457
17458 snd_soc_add_platform_controls(platform,
17459 use_ds1_or_ds2_controls,
17460 ARRAY_SIZE(use_ds1_or_ds2_controls));
17461
17462 snd_soc_add_platform_controls(platform,
17463 device_pp_params_mixer_controls,
17464 ARRAY_SIZE(device_pp_params_mixer_controls));
17465
17466 snd_soc_add_platform_controls(platform,
17467 msm_routing_be_dai_name_table_mixer_controls,
17468 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
17469
17470 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
17471 ARRAY_SIZE(msm_source_tracking_controls));
17472 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
17473 ARRAY_SIZE(adm_channel_config_controls));
17474
17475 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
17476 ARRAY_SIZE(aptx_dec_license_controls));
17477 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
17478 ARRAY_SIZE(stereo_channel_reverse_control));
17479 return 0;
17480}
17481
17482int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
17483{
17484 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
17485}
17486
17487void msm_routing_pcm_free(struct snd_pcm *pcm)
17488{
17489 msm_pcm_routing_hwdep_free(pcm);
17490}
17491
17492static struct snd_soc_platform_driver msm_soc_routing_platform = {
17493 .ops = &msm_routing_pcm_ops,
17494 .probe = msm_routing_probe,
17495 .pcm_new = msm_routing_pcm_new,
17496 .pcm_free = msm_routing_pcm_free,
17497};
17498
17499static int msm_routing_pcm_probe(struct platform_device *pdev)
17500{
17501
17502 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
17503 return snd_soc_register_platform(&pdev->dev,
17504 &msm_soc_routing_platform);
17505}
17506
17507static int msm_routing_pcm_remove(struct platform_device *pdev)
17508{
17509 snd_soc_unregister_platform(&pdev->dev);
17510 return 0;
17511}
17512
17513static const struct of_device_id msm_pcm_routing_dt_match[] = {
17514 {.compatible = "qcom,msm-pcm-routing"},
17515 {}
17516};
17517MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
17518
17519static struct platform_driver msm_routing_pcm_driver = {
17520 .driver = {
17521 .name = "msm-pcm-routing",
17522 .owner = THIS_MODULE,
17523 .of_match_table = msm_pcm_routing_dt_match,
17524 },
17525 .probe = msm_routing_pcm_probe,
17526 .remove = msm_routing_pcm_remove,
17527};
17528
17529int msm_routing_check_backend_enabled(int fedai_id)
17530{
17531 int i;
17532
17533 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
17534 /* bad ID assigned in machine driver */
17535 pr_err("%s: bad MM ID\n", __func__);
17536 return 0;
17537 }
17538 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17539 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
17540 return msm_bedais[i].active;
17541 }
17542 return 0;
17543}
17544
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017545static int get_cal_type_index(int32_t cal_type)
17546{
17547 int ret = -EINVAL;
17548
17549 switch (cal_type) {
17550 case ADM_TOPOLOGY_CAL_TYPE:
17551 ret = ADM_TOPOLOGY_CAL_TYPE_IDX;
17552 break;
17553 case ADM_LSM_TOPOLOGY_CAL_TYPE:
17554 ret = ADM_LSM_TOPOLOGY_CAL_TYPE_IDX;
17555 break;
17556 default:
17557 pr_err("%s: Invalid cal type %d\n", __func__, cal_type);
17558 }
17559 return ret;
17560}
17561
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017562static int msm_routing_set_cal(int32_t cal_type,
17563 size_t data_size, void *data)
17564{
17565 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017566 int cal_index;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017567 pr_debug("%s\n", __func__);
17568
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017569 cal_index = get_cal_type_index(cal_type);
17570 if (cal_index < 0) {
17571 pr_err("%s: Could not get cal index %d\n",
17572 __func__, cal_index);
17573 ret = -EINVAL;
17574 goto done;
17575 }
17576
17577 ret = cal_utils_set_cal(data_size, data, cal_data[cal_index], 0, NULL);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017578 if (ret < 0) {
17579 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17580 __func__, ret, cal_type);
17581 ret = -EINVAL;
17582 goto done;
17583 }
17584done:
17585 return ret;
17586}
17587
17588static void msm_routing_delete_cal_data(void)
17589{
17590 pr_debug("%s\n", __func__);
17591
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017592 cal_utils_destroy_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017593}
17594
17595static int msm_routing_init_cal_data(void)
17596{
17597 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017598 struct cal_type_info cal_type_info[] = {
17599 {{ADM_TOPOLOGY_CAL_TYPE,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017600 {NULL, NULL, NULL,
17601 msm_routing_set_cal, NULL, NULL} },
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017602 {NULL, NULL, cal_utils_match_buf_num} },
17603
17604 {{ADM_LSM_TOPOLOGY_CAL_TYPE,
17605 {NULL, NULL, NULL,
17606 msm_routing_set_cal, NULL, NULL} },
17607 {NULL, NULL, cal_utils_match_buf_num} },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017608 };
17609 pr_debug("%s\n", __func__);
17610
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017611 ret = cal_utils_create_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0],
17612 &cal_type_info[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017613 if (ret < 0) {
17614 pr_err("%s: could not create cal type!\n",
17615 __func__);
17616 ret = -EINVAL;
17617 goto err;
17618 }
17619
17620 return ret;
17621err:
17622 msm_routing_delete_cal_data();
17623 return ret;
17624}
17625
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017626int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017627{
17628 mutex_init(&routing_lock);
17629 if (msm_routing_init_cal_data())
17630 pr_err("%s: could not init cal data!\n", __func__);
17631
17632 afe_set_routing_callback(
17633 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17634
17635 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17636 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17637
17638 return platform_driver_register(&msm_routing_pcm_driver);
17639}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017640
Asish Bhattacharya5faacb32017-12-04 17:23:15 +053017641void msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017642{
17643 msm_routing_delete_cal_data();
17644 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17645 mutex_destroy(&routing_lock);
17646 platform_driver_unregister(&msm_routing_pcm_driver);
17647}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017648
17649MODULE_DESCRIPTION("MSM routing platform driver");
17650MODULE_LICENSE("GPL v2");