blob: b6e3a567892290fd09ff74c019235147ce1401b0 [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},
583};
584
585/* Track ASM playback & capture sessions of DAI
586 * Track LSM listen sessions
587 */
588static struct msm_pcm_routing_fdai_data
589 fe_dai_map[MSM_FRONTEND_DAI_MAX][2] = {
590 /* MULTIMEDIA1 */
591 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
592 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
593 /* MULTIMEDIA2 */
594 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
595 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
596 /* MULTIMEDIA3 */
597 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
598 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
599 /* MULTIMEDIA4 */
600 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
601 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
602 /* MULTIMEDIA5 */
603 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
604 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
605 /* MULTIMEDIA6 */
606 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
607 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
608 /* MULTIMEDIA7*/
609 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
610 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
611 /* MULTIMEDIA8 */
612 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
613 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
614 /* MULTIMEDIA9 */
615 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
616 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
617 /* MULTIMEDIA10 */
618 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
619 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
620 /* MULTIMEDIA11 */
621 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
622 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
623 /* MULTIMEDIA12 */
624 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
625 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
626 /* MULTIMEDIA13 */
627 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
628 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
629 /* MULTIMEDIA14 */
630 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
631 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
632 /* MULTIMEDIA15 */
633 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
634 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
635 /* MULTIMEDIA16 */
636 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
637 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
638 /* MULTIMEDIA17 */
639 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
640 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
641 /* MULTIMEDIA18 */
642 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
643 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
644 /* MULTIMEDIA19 */
645 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
646 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
647 /* MULTIMEDIA20 */
648 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
649 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +0530650 /* MULTIMEDIA28 */
651 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
652 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
653 /* MULTIMEDIA29 */
654 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
655 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530656 /* VOIP */
657 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
658 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
659 /* AFE_RX */
660 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
661 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
662 /* AFE_TX */
663 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
664 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
665 /* VOICE_STUB */
666 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
667 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530668 /* DTMF_RX */
669 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
670 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530671 /* QCHAT */
672 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
673 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
674 /* VOLTE_STUB */
675 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
676 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
677 /* LSM1 */
678 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
679 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
680 /* LSM2 */
681 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
682 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
683 /* LSM3 */
684 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
685 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
686 /* LSM4 */
687 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
688 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
689 /* LSM5 */
690 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
691 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
692 /* LSM6 */
693 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
694 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
695 /* LSM7 */
696 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
697 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
698 /* LSM8 */
699 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
700 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
701 /* VOICE2_STUB */
702 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
703 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530704 /* VOICEMMODE1 */
705 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
706 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
707 /* VOICEMMODE2 */
708 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
709 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
710};
711
712static unsigned long session_copp_map[MSM_FRONTEND_DAI_MAX][2]
713 [MSM_BACKEND_DAI_MAX];
714static struct msm_pcm_routing_app_type_data app_type_cfg[MAX_APP_TYPES];
715static struct msm_pcm_routing_app_type_data lsm_app_type_cfg[MAX_APP_TYPES];
716static struct msm_pcm_stream_app_type_cfg
717 fe_dai_app_type_cfg[MSM_FRONTEND_DAI_MAX][2][MSM_BACKEND_DAI_MAX];
718
719static int last_be_id_configured[MSM_FRONTEND_DAI_MAX][MAX_SESSION_TYPES];
720
721/* The caller of this should aqcuire routing lock */
722void msm_pcm_routing_get_bedai_info(int be_idx,
723 struct msm_pcm_routing_bdai_data *be_dai)
724{
725 if (be_idx >= 0 && be_idx < MSM_BACKEND_DAI_MAX)
726 memcpy(be_dai, &msm_bedais[be_idx],
727 sizeof(struct msm_pcm_routing_bdai_data));
728}
729
730/* The caller of this should aqcuire routing lock */
731void msm_pcm_routing_get_fedai_info(int fe_idx, int sess_type,
732 struct msm_pcm_routing_fdai_data *fe_dai)
733{
734 if ((sess_type == SESSION_TYPE_TX) || (sess_type == SESSION_TYPE_RX))
735 memcpy(fe_dai, &fe_dai_map[fe_idx][sess_type],
736 sizeof(struct msm_pcm_routing_fdai_data));
737}
738
739void msm_pcm_routing_acquire_lock(void)
740{
741 mutex_lock(&routing_lock);
742}
743
744void msm_pcm_routing_release_lock(void)
745{
746 mutex_unlock(&routing_lock);
747}
748
749static int msm_pcm_routing_get_app_type_idx(int app_type)
750{
751 int idx;
752
753 pr_debug("%s: app_type: %d\n", __func__, app_type);
754 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
755 if (app_type_cfg[idx].app_type == app_type)
756 return idx;
757 }
758 pr_info("%s: App type not available, fallback to default\n", __func__);
759 return 0;
760}
761
762static int msm_pcm_routing_get_lsm_app_type_idx(int app_type)
763{
764 int idx;
765
766 pr_debug("%s: app_type: %d\n", __func__, app_type);
767 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
768 if (lsm_app_type_cfg[idx].app_type == app_type)
769 return idx;
770 }
771 pr_debug("%s: App type not available, fallback to default\n", __func__);
772 return 0;
773}
774
775static bool is_mm_lsm_fe_id(int fe_id)
776{
777 bool rc = true;
778
779 if (fe_id > MSM_FRONTEND_DAI_MM_MAX_ID &&
780 ((fe_id < MSM_FRONTEND_DAI_LSM1) ||
781 (fe_id > MSM_FRONTEND_DAI_LSM8))) {
782 rc = false;
783 }
784 return rc;
785}
786
787int msm_pcm_routing_reg_stream_app_type_cfg(
788 int fedai_id, int session_type, int be_id,
789 struct msm_pcm_stream_app_type_cfg *cfg_data)
790{
791 int ret = 0;
792
793 if (cfg_data == NULL) {
794 pr_err("%s: Received NULL pointer for cfg_data\n", __func__);
795 ret = -EINVAL;
796 goto done;
797 }
798
799 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
800 __func__, fedai_id, session_type, be_id,
801 cfg_data->app_type, cfg_data->acdb_dev_id,
802 cfg_data->sample_rate);
803
804 if (!is_mm_lsm_fe_id(fedai_id)) {
805 pr_err("%s: Invalid machine driver ID %d\n",
806 __func__, fedai_id);
807 ret = -EINVAL;
808 goto done;
809 }
810 if (session_type != SESSION_TYPE_RX &&
811 session_type != SESSION_TYPE_TX) {
812 pr_err("%s: Invalid session type %d\n",
813 __func__, session_type);
814 ret = -EINVAL;
815 goto done;
816 }
817 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
818 pr_err("%s: Received out of bounds be_id %d\n",
819 __func__, be_id);
820 ret = -EINVAL;
821 goto done;
822 }
823
824 fe_dai_app_type_cfg[fedai_id][session_type][be_id] = *cfg_data;
825
826 /*
827 * Store the BE ID of the configuration information set as the latest so
828 * the get mixer control knows what to return.
829 */
830 last_be_id_configured[fedai_id][session_type] = be_id;
831
832done:
833 return ret;
834}
835EXPORT_SYMBOL(msm_pcm_routing_reg_stream_app_type_cfg);
836
837/**
838 * msm_pcm_routing_get_stream_app_type_cfg
839 *
840 * Receives fedai_id, session_type, be_id, and populates app_type,
841 * acdb_dev_id, & sample rate. Returns 0 on success. On failure returns
842 * -EINVAL and does not alter passed values.
843 *
844 * fedai_id - Passed value, front end ID for which app type config is wanted
845 * session_type - Passed value, session type for which app type config
846 * is wanted
847 * be_id - Returned value, back end device id the app type config data is for
848 * cfg_data - Returned value, configuration data used by app type config
849 */
850int msm_pcm_routing_get_stream_app_type_cfg(
851 int fedai_id, int session_type, int *bedai_id,
852 struct msm_pcm_stream_app_type_cfg *cfg_data)
853{
854 int be_id;
855 int ret = 0;
856
857 if (bedai_id == NULL) {
858 pr_err("%s: Received NULL pointer for backend ID\n", __func__);
859 ret = -EINVAL;
860 goto done;
861 } else if (cfg_data == NULL) {
862 pr_err("%s: NULL pointer sent for cfg_data\n", __func__);
863 ret = -EINVAL;
864 goto done;
865 } else if (!is_mm_lsm_fe_id(fedai_id)) {
866 pr_err("%s: Invalid FE ID %d\n", __func__, fedai_id);
867 ret = -EINVAL;
868 goto done;
869 } else if (session_type != SESSION_TYPE_RX &&
870 session_type != SESSION_TYPE_TX) {
871 pr_err("%s: Invalid session type %d\n", __func__, session_type);
872 ret = -EINVAL;
873 goto done;
874 }
875
876 be_id = last_be_id_configured[fedai_id][session_type];
877 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
878 pr_err("%s: Invalid BE ID %d\n", __func__, be_id);
879 ret = -EINVAL;
880 goto done;
881 }
882
883 *bedai_id = be_id;
884 *cfg_data = fe_dai_app_type_cfg[fedai_id][session_type][be_id];
885 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
886 __func__, fedai_id, session_type, *bedai_id,
887 cfg_data->app_type, cfg_data->acdb_dev_id,
888 cfg_data->sample_rate);
889done:
890 return ret;
891}
892EXPORT_SYMBOL(msm_pcm_routing_get_stream_app_type_cfg);
893
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530894static struct cal_block_data *msm_routing_find_topology_by_path(int path,
895 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530896{
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530897 struct list_head *ptr, *next;
898 struct cal_block_data *cal_block = NULL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530899 pr_debug("%s\n", __func__);
900
901 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530902 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530903
904 cal_block = list_entry(ptr,
905 struct cal_block_data, list);
906
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530907 if (((struct audio_cal_info_adm_top *)cal_block
908 ->cal_info)->path == path) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530909 return cal_block;
910 }
911 }
912 pr_debug("%s: Can't find topology for path %d\n", __func__, path);
913 return NULL;
914}
915
916static struct cal_block_data *msm_routing_find_topology(int path,
917 int app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530918 int acdb_id,
919 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530920{
921 struct list_head *ptr, *next;
922 struct cal_block_data *cal_block = NULL;
923 struct audio_cal_info_adm_top *cal_info;
924
925 pr_debug("%s\n", __func__);
926
927 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530928 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530929
930 cal_block = list_entry(ptr,
931 struct cal_block_data, list);
932
933 cal_info = (struct audio_cal_info_adm_top *)
934 cal_block->cal_info;
935 if ((cal_info->path == path) &&
936 (cal_info->app_type == app_type) &&
937 (cal_info->acdb_id == acdb_id)) {
938 return cal_block;
939 }
940 }
941 pr_debug("%s: Can't find topology for path %d, app %d, acdb_id %d defaulting to search by path\n",
942 __func__, path, app_type, acdb_id);
Aditya Bavanarie9d8e932018-03-12 12:25:20 +0530943 return msm_routing_find_topology_by_path(path, cal_index);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530944}
945
946static int msm_routing_get_adm_topology(int fedai_id, int session_type,
947 int be_id)
948{
949 int topology = NULL_COPP_TOPOLOGY;
950 struct cal_block_data *cal_block = NULL;
951 int app_type = 0, acdb_dev_id = 0;
952
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530953 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
954 __func__, fedai_id, session_type, be_id);
955
956 if (cal_data == NULL)
957 goto done;
958
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530959 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
960 acdb_dev_id =
961 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
962
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530963 mutex_lock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530964 cal_block = msm_routing_find_topology(session_type, app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530965 acdb_dev_id,
966 ADM_TOPOLOGY_CAL_TYPE_IDX);
967 if (cal_block != NULL)
968 topology = ((struct audio_cal_info_adm_top *)
969 cal_block->cal_info)->topology;
970 mutex_unlock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530971
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530972 if (cal_block == NULL) {
973 pr_debug("%s: Check for LSM topology\n", __func__);
974 mutex_lock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
975 cal_block = msm_routing_find_topology(session_type, app_type,
976 acdb_dev_id,
977 ADM_LSM_TOPOLOGY_CAL_TYPE_IDX);
978 if (cal_block != NULL)
979 topology = ((struct audio_cal_info_adm_top *)
980 cal_block->cal_info)->topology;
981 mutex_unlock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
982 }
983
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530984done:
985 pr_debug("%s: Using topology %d\n", __func__, topology);
986 return topology;
987}
988
989static uint8_t is_be_dai_extproc(int be_dai)
990{
991 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
992 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
993 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
994 return 1;
995 else
996 return 0;
997}
998
999static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
1000 int path_type, int perf_mode,
1001 uint32_t passthr_mode)
1002{
1003 int i, port_type, j, num_copps = 0;
1004 struct route_payload payload;
1005
1006 port_type = ((path_type == ADM_PATH_PLAYBACK ||
1007 path_type == ADM_PATH_COMPRESSED_RX) ?
1008 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
1009
1010 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1011 if (!is_be_dai_extproc(i) &&
1012 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1013 (msm_bedais[i].active) &&
1014 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1015 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1016 unsigned long copp =
1017 session_copp_map[fedai_id][sess_type][i];
1018 if (test_bit(j, &copp)) {
1019 payload.port_id[num_copps] =
1020 msm_bedais[i].port_id;
1021 payload.copp_idx[num_copps] = j;
1022 payload.app_type[num_copps] =
1023 fe_dai_app_type_cfg
1024 [fedai_id][sess_type][i]
1025 .app_type;
1026 payload.acdb_dev_id[num_copps] =
1027 fe_dai_app_type_cfg
1028 [fedai_id][sess_type][i]
1029 .acdb_dev_id;
1030 payload.sample_rate[num_copps] =
1031 fe_dai_app_type_cfg
1032 [fedai_id][sess_type][i]
1033 .sample_rate;
1034 num_copps++;
1035 }
1036 }
1037 }
1038 }
1039
1040 if (num_copps) {
1041 payload.num_copps = num_copps;
1042 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1043 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1044 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1045 }
1046}
1047
1048void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1049 int stream_type)
1050{
1051 int i, session_type, path_type, port_type;
1052 u32 mode = 0;
1053
1054 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1055 /* bad ID assigned in machine driver */
1056 pr_err("%s: bad MM ID\n", __func__);
1057 return;
1058 }
1059
1060 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1061 session_type = SESSION_TYPE_RX;
1062 path_type = ADM_PATH_PLAYBACK;
1063 port_type = MSM_AFE_PORT_TYPE_RX;
1064 } else {
1065 session_type = SESSION_TYPE_TX;
1066 path_type = ADM_PATH_LIVE_REC;
1067 port_type = MSM_AFE_PORT_TYPE_TX;
1068 }
1069
1070 mutex_lock(&routing_lock);
1071
1072 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1073 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1074 if (!is_be_dai_extproc(i) &&
1075 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1076 (msm_bedais[i].active) &&
1077 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1078 mode = afe_get_port_type(msm_bedais[i].port_id);
1079 adm_connect_afe_port(mode, dspst_id,
1080 msm_bedais[i].port_id);
1081 break;
1082 }
1083 }
1084 mutex_unlock(&routing_lock);
1085}
1086
1087static bool route_check_fe_id_adm_support(int fe_id)
1088{
1089 bool rc = true;
1090
1091 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1092 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1093 /* fe id is listen while port is set to afe */
1094 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1095 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1096 __func__, fe_id, lsm_port_index);
1097 rc = false;
1098 }
1099 }
1100
1101 return rc;
1102}
1103
1104int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1105 int dspst_id, int stream_type,
1106 uint32_t passthr_mode)
1107{
1108 int i, j, session_type, path_type, port_type, topology;
1109 int num_copps = 0;
1110 struct route_payload payload;
1111 u32 channels, sample_rate;
1112 u16 bit_width = 16;
1113 bool is_lsm;
1114
1115 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1116 __func__, fe_id, perf_mode, dspst_id,
1117 stream_type, passthr_mode);
1118 if (!is_mm_lsm_fe_id(fe_id)) {
1119 /* bad ID assigned in machine driver */
1120 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1121 return -EINVAL;
1122 }
1123
1124 if (!route_check_fe_id_adm_support(fe_id)) {
1125 /* ignore adm open if not supported for fe_id */
1126 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1127 return 0;
1128 }
1129
1130 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1131 session_type = SESSION_TYPE_RX;
1132 if (passthr_mode != LEGACY_PCM)
1133 path_type = ADM_PATH_COMPRESSED_RX;
1134 else
1135 path_type = ADM_PATH_PLAYBACK;
1136 port_type = MSM_AFE_PORT_TYPE_RX;
1137 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1138 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301139 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301140 path_type = ADM_PATH_COMPRESSED_TX;
1141 else
1142 path_type = ADM_PATH_LIVE_REC;
1143 port_type = MSM_AFE_PORT_TYPE_TX;
1144 } else {
1145 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1146 return -EINVAL;
1147 }
1148
1149 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1150 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1151 mutex_lock(&routing_lock);
1152
1153 payload.num_copps = 0; /* only RX needs to use payload */
1154 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1155 /* re-enable EQ if active */
1156 msm_qti_pp_send_eq_values(fe_id);
1157 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1158 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1159 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1160
1161 if (!is_be_dai_extproc(i) &&
1162 (afe_get_port_type(msm_bedais[i].port_id) ==
1163 port_type) &&
1164 (msm_bedais[i].active) &&
1165 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1166 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1167
1168 /*
1169 * check if ADM needs to be configured with different
1170 * channel mapping than backend
1171 */
1172 if (!msm_bedais[i].adm_override_ch)
1173 channels = msm_bedais[i].channel;
1174 else
1175 channels = msm_bedais[i].adm_override_ch;
1176
1177 bit_width = msm_routing_get_bit_width(
1178 msm_bedais[i].format);
1179 app_type =
1180 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1181 if (app_type && is_lsm) {
1182 app_type_idx =
1183 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1184 sample_rate =
1185 fe_dai_app_type_cfg[fe_id][session_type][i]
1186 .sample_rate;
1187 bit_width =
1188 lsm_app_type_cfg[app_type_idx].bit_width;
1189 } else if (app_type) {
1190 app_type_idx =
1191 msm_pcm_routing_get_app_type_idx(
1192 app_type);
1193 sample_rate =
1194 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1195 bit_width =
1196 app_type_cfg[app_type_idx].bit_width;
1197 } else {
1198 sample_rate = msm_bedais[i].sample_rate;
1199 }
1200 acdb_dev_id =
1201 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1202 topology = msm_routing_get_adm_topology(fe_id,
1203 session_type,
1204 i);
1205 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1206 || (passthr_mode ==
1207 COMPRESSED_PASSTHROUGH_GEN))
1208 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1209 pr_debug("%s: Before adm open topology %d\n", __func__,
1210 topology);
1211
1212 copp_idx =
1213 adm_open(msm_bedais[i].port_id,
1214 path_type, sample_rate, channels,
1215 topology, perf_mode, bit_width,
1216 app_type, acdb_dev_id);
1217 if ((copp_idx < 0) ||
1218 (copp_idx >= MAX_COPPS_PER_PORT)) {
1219 pr_err("%s:adm open failed coppid:%d\n",
1220 __func__, copp_idx);
1221 mutex_unlock(&routing_lock);
1222 return -EINVAL;
1223 }
1224 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1225 __func__, fe_id, session_type, i);
1226 set_bit(copp_idx,
1227 &session_copp_map[fe_id][session_type][i]);
1228
1229 if (msm_is_resample_needed(
1230 sample_rate,
1231 msm_bedais[i].sample_rate))
1232 adm_copp_mfc_cfg(
1233 msm_bedais[i].port_id, copp_idx,
1234 msm_bedais[i].sample_rate);
1235
1236 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1237 unsigned long copp =
1238 session_copp_map[fe_id][session_type][i];
1239 if (test_bit(j, &copp)) {
1240 payload.port_id[num_copps] =
1241 msm_bedais[i].port_id;
1242 payload.copp_idx[num_copps] = j;
1243 payload.app_type[num_copps] =
1244 fe_dai_app_type_cfg
1245 [fe_id][session_type][i]
1246 .app_type;
1247 payload.acdb_dev_id[num_copps] =
1248 fe_dai_app_type_cfg
1249 [fe_id][session_type][i]
1250 .acdb_dev_id;
1251 payload.sample_rate[num_copps] =
1252 fe_dai_app_type_cfg
1253 [fe_id][session_type][i]
1254 .sample_rate;
1255 num_copps++;
1256 }
1257 }
1258 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1259 && passthr_mode !=
1260 COMPRESSED_PASSTHROUGH_GEN) {
1261 msm_routing_send_device_pp_params(
1262 msm_bedais[i].port_id,
1263 copp_idx, fe_id);
1264 }
1265 }
1266 }
1267 if (num_copps) {
1268 payload.num_copps = num_copps;
1269 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1270 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1271 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1272 }
1273 mutex_unlock(&routing_lock);
1274 return 0;
1275}
1276
1277static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1278{
1279 u32 session_id;
1280
1281 switch (val) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301282 case MSM_FRONTEND_DAI_QCHAT:
1283 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1284 break;
1285 case MSM_FRONTEND_DAI_VOIP:
1286 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1287 break;
1288 case MSM_FRONTEND_DAI_VOICEMMODE1:
1289 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1290 break;
1291 case MSM_FRONTEND_DAI_VOICEMMODE2:
1292 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1293 break;
1294 default:
1295 session_id = 0;
1296 }
1297
1298 pr_debug("%s session_id 0x%x", __func__, session_id);
1299 return session_id;
1300}
1301
1302static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1303 int dspst_id, int stream_type)
1304{
1305 int copp_idx = 0;
1306 int sess_type = 0;
1307 int i = 0, j = 0, be_id;
1308 int ret = 0;
1309
1310 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1311 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1312 return 0;
1313 }
1314
1315 if (!(channel_mixer[fe_id].enable)) {
1316 pr_debug("%s: channel mixer not enabled for FE %d\n",
1317 __func__, fe_id);
1318 return 0;
1319 }
1320
1321 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1322 sess_type = SESSION_TYPE_RX;
1323 else
1324 sess_type = SESSION_TYPE_TX;
1325
1326 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1327 ++i) {
1328 be_id = channel_input[fe_id][i] - 1;
1329 channel_mixer[fe_id].input_channels[i] =
1330 msm_bedais[be_id].channel;
1331
1332 if ((msm_bedais[be_id].active) &&
1333 test_bit(fe_id,
1334 &msm_bedais[be_id].fe_sessions[0])) {
1335 unsigned long copp =
1336 session_copp_map[fe_id][sess_type][be_id];
1337 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1338 if (test_bit(j, &copp)) {
1339 copp_idx = j;
1340 break;
1341 }
1342 }
1343
1344 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1345 __func__,
1346 fe_id, be_id, msm_bedais[be_id].channel,
1347 copp_idx);
1348 ret = adm_programable_channel_mixer(
1349 msm_bedais[be_id].port_id,
1350 copp_idx, dspst_id, sess_type,
1351 channel_mixer + fe_id, i);
1352 }
1353 }
1354
1355 return ret;
1356}
1357
1358int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1359 int dspst_id, int stream_type)
1360{
1361 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1362 struct route_payload payload;
1363 u32 channels, sample_rate;
1364 uint16_t bits_per_sample = 16;
1365 uint32_t passthr_mode = LEGACY_PCM;
1366 int ret = 0;
1367
1368 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1369 /* bad ID assigned in machine driver */
1370 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1371 return -EINVAL;
1372 }
1373
1374 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1375 session_type = SESSION_TYPE_RX;
1376 path_type = ADM_PATH_PLAYBACK;
1377 port_type = MSM_AFE_PORT_TYPE_RX;
1378 } else {
1379 session_type = SESSION_TYPE_TX;
1380 path_type = ADM_PATH_LIVE_REC;
1381 port_type = MSM_AFE_PORT_TYPE_TX;
1382 }
1383
1384 mutex_lock(&routing_lock);
1385
1386 payload.num_copps = 0; /* only RX needs to use payload */
1387 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1388 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1389
1390 /* re-enable EQ if active */
1391 msm_qti_pp_send_eq_values(fedai_id);
1392 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1393 if (!is_be_dai_extproc(i) &&
1394 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1395 (msm_bedais[i].active) &&
1396 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1397 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1398 /*
1399 * check if ADM needs to be configured with different
1400 * channel mapping than backend
1401 */
1402 if (!msm_bedais[i].adm_override_ch)
1403 channels = msm_bedais[i].channel;
1404 else
1405 channels = msm_bedais[i].adm_override_ch;
1406 msm_bedais[i].passthr_mode[fedai_id] =
1407 LEGACY_PCM;
1408
1409 bits_per_sample = msm_routing_get_bit_width(
1410 msm_bedais[i].format);
1411
1412 app_type =
1413 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1414 if (app_type) {
1415 app_type_idx =
1416 msm_pcm_routing_get_app_type_idx(app_type);
1417 sample_rate =
1418 fe_dai_app_type_cfg[fedai_id][session_type][i]
1419 .sample_rate;
1420 bits_per_sample =
1421 app_type_cfg[app_type_idx].bit_width;
1422 } else
1423 sample_rate = msm_bedais[i].sample_rate;
1424
1425 acdb_dev_id =
1426 fe_dai_app_type_cfg[fedai_id][session_type][i]
1427 .acdb_dev_id;
1428 topology = msm_routing_get_adm_topology(fedai_id,
1429 session_type,
1430 i);
1431 copp_idx = adm_open(msm_bedais[i].port_id, path_type,
1432 sample_rate, channels, topology,
1433 perf_mode, bits_per_sample,
1434 app_type, acdb_dev_id);
1435 if ((copp_idx < 0) ||
1436 (copp_idx >= MAX_COPPS_PER_PORT)) {
1437 pr_err("%s: adm open failed copp_idx:%d\n",
1438 __func__, copp_idx);
1439 mutex_unlock(&routing_lock);
1440 return -EINVAL;
1441 }
1442 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1443 __func__, fedai_id, session_type, i);
1444 set_bit(copp_idx,
1445 &session_copp_map[fedai_id][session_type][i]);
1446
1447 if (msm_is_resample_needed(
1448 sample_rate,
1449 msm_bedais[i].sample_rate))
1450 adm_copp_mfc_cfg(
1451 msm_bedais[i].port_id, copp_idx,
1452 msm_bedais[i].sample_rate);
1453
1454 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1455 unsigned long copp =
1456 session_copp_map[fedai_id][session_type][i];
1457 if (test_bit(j, &copp)) {
1458 payload.port_id[num_copps] =
1459 msm_bedais[i].port_id;
1460 payload.copp_idx[num_copps] = j;
1461 payload.app_type[num_copps] =
1462 fe_dai_app_type_cfg
1463 [fedai_id][session_type]
1464 [i].app_type;
1465 payload.acdb_dev_id[num_copps] =
1466 fe_dai_app_type_cfg
1467 [fedai_id][session_type]
1468 [i].acdb_dev_id;
1469 payload.sample_rate[num_copps] =
1470 fe_dai_app_type_cfg
1471 [fedai_id][session_type]
1472 [i].sample_rate;
1473 num_copps++;
1474 }
1475 }
1476 if ((perf_mode == LEGACY_PCM_MODE) &&
1477 (msm_bedais[i].passthr_mode[fedai_id] ==
1478 LEGACY_PCM))
1479 msm_pcm_routing_cfg_pp(msm_bedais[i].port_id,
1480 copp_idx, topology,
1481 channels);
1482 }
1483 }
1484 if (num_copps) {
1485 payload.num_copps = num_copps;
1486 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1487 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1488 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1489 }
1490
1491 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1492 dspst_id, stream_type);
1493 mutex_unlock(&routing_lock);
1494 return ret;
1495}
1496
1497int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1498 int dspst_id, int stream_type,
1499 struct msm_pcm_routing_evt event_info)
1500{
1501 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1502 stream_type)) {
1503 pr_err("%s: failed to reg phy stream\n", __func__);
1504 return -EINVAL;
1505 }
1506
1507 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1508 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1509 else
1510 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1511 return 0;
1512}
1513
1514void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1515{
1516 int i, port_type, session_type, path_type, topology;
1517 struct msm_pcm_routing_fdai_data *fdai;
1518
1519 if (!is_mm_lsm_fe_id(fedai_id)) {
1520 /* bad ID assigned in machine driver */
1521 pr_err("%s: bad MM ID\n", __func__);
1522 return;
1523 }
1524
1525 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1526 port_type = MSM_AFE_PORT_TYPE_RX;
1527 session_type = SESSION_TYPE_RX;
1528 path_type = ADM_PATH_PLAYBACK;
1529 } else {
1530 port_type = MSM_AFE_PORT_TYPE_TX;
1531 session_type = SESSION_TYPE_TX;
1532 path_type = ADM_PATH_LIVE_REC;
1533 }
1534
1535 mutex_lock(&routing_lock);
1536 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1537 if (!is_be_dai_extproc(i) &&
1538 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1539 (msm_bedais[i].active) &&
1540 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1541 int idx;
1542 unsigned long copp =
1543 session_copp_map[fedai_id][session_type][i];
1544 fdai = &fe_dai_map[fedai_id][session_type];
1545
1546 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1547 if (test_bit(idx, &copp))
1548 break;
1549
1550 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1551 pr_debug("%s: copp idx is invalid, exiting\n",
1552 __func__);
1553 continue;
1554 }
1555 topology = adm_get_topology_for_port_copp_idx(
1556 msm_bedais[i].port_id, idx);
1557 adm_close(msm_bedais[i].port_id, fdai->perf_mode, idx);
1558 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1559 __func__, copp, fedai_id, session_type, i);
1560 clear_bit(idx,
1561 &session_copp_map[fedai_id][session_type][i]);
1562 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1563 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1564 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1565 (msm_bedais[i].passthr_mode[fedai_id] ==
1566 LEGACY_PCM))
1567 msm_pcm_routing_deinit_pp(msm_bedais[i].port_id,
1568 topology);
1569 }
1570 }
1571
1572 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1573 fe_dai_map[fedai_id][session_type].be_srate = 0;
1574 mutex_unlock(&routing_lock);
1575}
1576
1577/* Check if FE/BE route is set */
1578static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1579{
1580 bool rc = false;
1581
1582 if (!is_mm_lsm_fe_id(fe_id)) {
1583 /* recheck FE ID in the mixer control defined in this file */
1584 pr_err("%s: bad MM ID\n", __func__);
1585 return rc;
1586 }
1587
1588 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1589 rc = true;
1590
1591 return rc;
1592}
1593
1594static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1595{
1596 int session_type, path_type, topology;
1597 u32 channels, sample_rate;
1598 uint16_t bits_per_sample = 16;
1599 struct msm_pcm_routing_fdai_data *fdai;
1600 uint32_t passthr_mode;
1601 bool is_lsm;
1602
1603 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1604
1605 if (!is_mm_lsm_fe_id(val)) {
1606 /* recheck FE ID in the mixer control defined in this file */
1607 pr_err("%s: bad MM ID\n", __func__);
1608 return;
1609 }
1610
1611 if (!route_check_fe_id_adm_support(val)) {
1612 /* ignore adm open if not supported for fe_id */
1613 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1614 return;
1615 }
1616
1617 passthr_mode = msm_bedais[reg].passthr_mode[val];
1618 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1619 MSM_AFE_PORT_TYPE_RX) {
1620 session_type = SESSION_TYPE_RX;
1621 if (passthr_mode != LEGACY_PCM)
1622 path_type = ADM_PATH_COMPRESSED_RX;
1623 else
1624 path_type = ADM_PATH_PLAYBACK;
1625 } else {
1626 session_type = SESSION_TYPE_TX;
Haynes Mathew George9a277722018-01-29 17:34:49 -08001627 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301628 path_type = ADM_PATH_COMPRESSED_TX;
1629 else
1630 path_type = ADM_PATH_LIVE_REC;
1631 }
1632 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1633 (val <= MSM_FRONTEND_DAI_LSM8);
1634
1635 mutex_lock(&routing_lock);
1636 if (set) {
1637 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1638 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1639 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1640 voc_start_playback(set, msm_bedais[reg].port_id);
1641
1642 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1643 fdai = &fe_dai_map[val][session_type];
1644 if (msm_bedais[reg].active && fdai->strm_id !=
1645 INVALID_SESSION) {
1646 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1647 /*
1648 * check if ADM needs to be configured with different
1649 * channel mapping than backend
1650 */
1651 if (!msm_bedais[reg].adm_override_ch)
1652 channels = msm_bedais[reg].channel;
1653 else
1654 channels = msm_bedais[reg].adm_override_ch;
1655 if (session_type == SESSION_TYPE_TX &&
1656 fdai->be_srate &&
1657 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1658 pr_debug("%s: flush strm %d diff BE rates\n",
1659 __func__, fdai->strm_id);
1660
1661 if (fdai->event_info.event_func)
1662 fdai->event_info.event_func(
1663 MSM_PCM_RT_EVT_BUF_RECFG,
1664 fdai->event_info.priv_data);
1665 fdai->be_srate = 0; /* might not need it */
1666 }
1667
1668 bits_per_sample = msm_routing_get_bit_width(
1669 msm_bedais[reg].format);
1670
1671 app_type =
1672 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1673 if (app_type && is_lsm) {
1674 app_type_idx =
1675 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1676 sample_rate =
1677 fe_dai_app_type_cfg[val][session_type][reg]
1678 .sample_rate;
1679 bits_per_sample =
1680 lsm_app_type_cfg[app_type_idx].bit_width;
1681 } else if (app_type) {
1682 app_type_idx =
1683 msm_pcm_routing_get_app_type_idx(app_type);
1684 sample_rate =
1685 fe_dai_app_type_cfg[val][session_type][reg]
1686 .sample_rate;
1687 bits_per_sample =
1688 app_type_cfg[app_type_idx].bit_width;
1689 } else
1690 sample_rate = msm_bedais[reg].sample_rate;
1691
1692 topology = msm_routing_get_adm_topology(val,
1693 session_type,
1694 reg);
1695 acdb_dev_id =
1696 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
1697 copp_idx = adm_open(msm_bedais[reg].port_id, path_type,
1698 sample_rate, channels, topology,
1699 fdai->perf_mode, bits_per_sample,
1700 app_type, acdb_dev_id);
1701 if ((copp_idx < 0) ||
1702 (copp_idx >= MAX_COPPS_PER_PORT)) {
1703 pr_err("%s: adm open failed\n", __func__);
1704 mutex_unlock(&routing_lock);
1705 return;
1706 }
1707 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1708 __func__, val, session_type, reg);
1709 set_bit(copp_idx,
1710 &session_copp_map[val][session_type][reg]);
1711
1712 if (msm_is_resample_needed(
1713 sample_rate,
1714 msm_bedais[reg].sample_rate))
1715 adm_copp_mfc_cfg(
1716 msm_bedais[reg].port_id, copp_idx,
1717 msm_bedais[reg].sample_rate);
1718
1719 if (session_type == SESSION_TYPE_RX &&
1720 fdai->event_info.event_func)
1721 fdai->event_info.event_func(
1722 MSM_PCM_RT_EVT_DEVSWITCH,
1723 fdai->event_info.priv_data);
1724
1725 msm_pcm_routing_build_matrix(val, session_type,
1726 path_type,
1727 fdai->perf_mode,
1728 passthr_mode);
1729 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1730 (passthr_mode == LEGACY_PCM))
1731 msm_pcm_routing_cfg_pp(msm_bedais[reg].port_id,
1732 copp_idx, topology,
1733 channels);
1734 }
1735 } else {
1736 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1737 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1738 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1739 voc_start_playback(set, msm_bedais[reg].port_id);
1740 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1741 fdai = &fe_dai_map[val][session_type];
1742 if (msm_bedais[reg].active && fdai->strm_id !=
1743 INVALID_SESSION) {
1744 int idx;
1745 int port_id;
1746 unsigned long copp =
1747 session_copp_map[val][session_type][reg];
1748 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1749 if (test_bit(idx, &copp))
1750 break;
1751
1752 port_id = msm_bedais[reg].port_id;
1753 topology = adm_get_topology_for_port_copp_idx(port_id,
1754 idx);
1755 adm_close(msm_bedais[reg].port_id, fdai->perf_mode,
1756 idx);
1757 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1758 __func__, copp, val, session_type, reg,
1759 topology);
1760 clear_bit(idx,
1761 &session_copp_map[val][session_type][reg]);
1762 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1763 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1764 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1765 (passthr_mode == LEGACY_PCM))
1766 msm_pcm_routing_deinit_pp(
1767 msm_bedais[reg].port_id,
1768 topology);
1769 msm_pcm_routing_build_matrix(val, session_type,
1770 path_type,
1771 fdai->perf_mode,
1772 passthr_mode);
1773 }
1774 }
1775 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1776 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1777 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1778
1779 mutex_unlock(&routing_lock);
1780}
1781
1782static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1783 struct snd_ctl_elem_value *ucontrol)
1784{
1785 struct soc_mixer_control *mc =
1786 (struct soc_mixer_control *)kcontrol->private_value;
1787
1788 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1789 ucontrol->value.integer.value[0] = 1;
1790 else
1791 ucontrol->value.integer.value[0] = 0;
1792
1793 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1794 ucontrol->value.integer.value[0]);
1795
1796 return 0;
1797}
1798
1799static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1800 struct snd_ctl_elem_value *ucontrol)
1801{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301802 struct snd_soc_dapm_widget *widget =
1803 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301804 struct soc_mixer_control *mc =
1805 (struct soc_mixer_control *)kcontrol->private_value;
1806 struct snd_soc_dapm_update *update = NULL;
1807
1808 if (ucontrol->value.integer.value[0] &&
1809 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1810 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1811 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1812 update);
1813 } else if (!ucontrol->value.integer.value[0] &&
1814 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1815 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1816 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1817 update);
1818 }
1819
1820 return 1;
1821}
1822
1823static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1824 struct snd_ctl_elem_value *ucontrol)
1825{
1826 struct soc_mixer_control *mc =
1827 (struct soc_mixer_control *)kcontrol->private_value;
1828
1829 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1830 ucontrol->value.integer.value[0] = 1;
1831 else
1832 ucontrol->value.integer.value[0] = 0;
1833
1834 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1835 ucontrol->value.integer.value[0]);
1836
1837 return 0;
1838}
1839
1840static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1841 struct snd_ctl_elem_value *ucontrol)
1842{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301843 struct snd_soc_dapm_widget *widget =
1844 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301845 struct soc_mixer_control *mc =
1846 (struct soc_mixer_control *)kcontrol->private_value;
1847 struct snd_soc_dapm_update *update = NULL;
1848
1849 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1850 ucontrol->value.integer.value[0]);
1851
1852 if (ucontrol->value.integer.value[0]) {
1853 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1854 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1855 snd_soc_dapm_mixer_update_power(widget->dapm,
1856 kcontrol, 1, update);
1857 } else if (!ucontrol->value.integer.value[0]) {
1858 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1859 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1860 snd_soc_dapm_mixer_update_power(widget->dapm,
1861 kcontrol, 0, update);
1862 }
1863
1864 return 1;
1865}
1866
1867static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1868{
1869 u32 session_id = 0;
1870 u16 path_type;
1871 struct media_format_info voc_be_media_format;
1872
1873 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1874
1875 session_id = msm_pcm_routing_get_voc_sessionid(val);
1876
1877 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1878 __func__, val, session_id);
1879
1880 mutex_lock(&routing_lock);
1881
1882 if (set)
1883 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1884 else
1885 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1886
1887 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1888 afe_get_port_type(msm_bedais[reg].port_id) ==
1889 MSM_AFE_PORT_TYPE_RX) {
1890 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1891 __func__, set, msm_bedais[reg].port_id);
1892 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1893 }
1894
1895 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1896 MSM_AFE_PORT_TYPE_RX)
1897 path_type = RX_PATH;
1898 else
1899 path_type = TX_PATH;
1900
1901 if (set) {
1902 if (msm_bedais[reg].active) {
1903 voc_set_route_flag(session_id, path_type, 1);
1904
1905 memset(&voc_be_media_format, 0,
1906 sizeof(struct media_format_info));
1907
1908 voc_be_media_format.port_id = msm_bedais[reg].port_id;
1909 voc_be_media_format.num_channels =
1910 msm_bedais[reg].channel;
1911 voc_be_media_format.sample_rate =
1912 msm_bedais[reg].sample_rate;
1913 voc_be_media_format.bits_per_sample =
1914 msm_bedais[reg].format;
1915 /* Defaulting this to 1 for voice call usecases */
1916 voc_be_media_format.channel_mapping[0] = 1;
1917
1918 voc_set_device_config(session_id, path_type,
1919 &voc_be_media_format);
1920
1921 if (voc_get_route_flag(session_id, TX_PATH) &&
1922 voc_get_route_flag(session_id, RX_PATH))
1923 voc_enable_device(session_id);
1924 } else {
1925 pr_debug("%s BE is not active\n", __func__);
1926 }
1927 } else {
1928 voc_set_route_flag(session_id, path_type, 0);
1929 voc_disable_device(session_id);
1930 }
1931
1932 mutex_unlock(&routing_lock);
1933
1934}
1935
1936static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
1937 struct snd_ctl_elem_value *ucontrol)
1938{
1939 struct soc_mixer_control *mc =
1940 (struct soc_mixer_control *)kcontrol->private_value;
1941
1942 mutex_lock(&routing_lock);
1943
1944 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1945 ucontrol->value.integer.value[0] = 1;
1946 else
1947 ucontrol->value.integer.value[0] = 0;
1948
1949 mutex_unlock(&routing_lock);
1950
1951 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1952 ucontrol->value.integer.value[0]);
1953
1954 return 0;
1955}
1956
1957static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
1958 struct snd_ctl_elem_value *ucontrol)
1959{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301960 struct snd_soc_dapm_widget *widget =
1961 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301962 struct soc_mixer_control *mc =
1963 (struct soc_mixer_control *)kcontrol->private_value;
1964 struct snd_soc_dapm_update *update = NULL;
1965
1966 if (ucontrol->value.integer.value[0]) {
1967 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
1968 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1969 update);
1970 } else {
1971 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
1972 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1973 update);
1974 }
1975
1976 return 1;
1977}
1978
1979static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1980 struct snd_ctl_elem_value *ucontrol)
1981{
1982 struct soc_mixer_control *mc =
1983 (struct soc_mixer_control *)kcontrol->private_value;
1984
1985 mutex_lock(&routing_lock);
1986
1987 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1988 ucontrol->value.integer.value[0] = 1;
1989 else
1990 ucontrol->value.integer.value[0] = 0;
1991
1992 mutex_unlock(&routing_lock);
1993
1994 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1995 ucontrol->value.integer.value[0]);
1996
1997 return 0;
1998}
1999
2000static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
2001 struct snd_ctl_elem_value *ucontrol)
2002{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302003 struct snd_soc_dapm_widget *widget =
2004 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302005 struct soc_mixer_control *mc =
2006 (struct soc_mixer_control *)kcontrol->private_value;
2007 struct snd_soc_dapm_update *update = NULL;
2008
2009 if (ucontrol->value.integer.value[0]) {
2010 mutex_lock(&routing_lock);
2011 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2012 mutex_unlock(&routing_lock);
2013
2014 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2015 update);
2016 } else {
2017 mutex_lock(&routing_lock);
2018 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2019 mutex_unlock(&routing_lock);
2020
2021 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2022 update);
2023 }
2024
2025 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2026 ucontrol->value.integer.value[0]);
2027
2028 return 1;
2029}
2030
2031/*
2032 * Return the mapping between port ID and backend ID to enable the AFE callback
2033 * to determine the acdb_dev_id from the port id
2034 */
2035int msm_pcm_get_be_id_from_port_id(int port_id)
2036{
2037 int i;
2038 int be_id = -EINVAL;
2039
2040 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2041 if (msm_bedais[i].port_id == port_id) {
2042 be_id = i;
2043 break;
2044 }
2045 }
2046
2047 return be_id;
2048}
2049
2050/*
2051 * Return the registered dev_acdb_id given a port ID to enable identifying the
2052 * correct AFE calibration information by comparing the header information.
2053 */
2054static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2055{
2056 int acdb_id = -EINVAL;
2057 int i = 0;
2058 int session;
2059 int port_type = afe_get_port_type(port_id);
2060 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2061
2062 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2063 __func__, port_id, be_id, port_type);
2064
2065 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2066 session = SESSION_TYPE_TX;
2067 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2068 session = SESSION_TYPE_RX;
2069 } else {
2070 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2071 acdb_id = -EINVAL;
2072 goto exit;
2073 }
2074
2075 if (be_id < 0) {
2076 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2077 goto exit;
2078 }
2079
2080 mutex_lock(&routing_lock);
2081 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2082 MSM_FRONTEND_DAI_MAX);
2083 if (i < MSM_FRONTEND_DAI_MAX)
2084 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2085
2086 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2087 __func__, i, session, be_id, acdb_id);
2088 mutex_unlock(&routing_lock);
2089exit:
2090 return acdb_id;
2091}
2092
2093static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2094 struct snd_ctl_elem_value *ucontrol)
2095{
2096 ucontrol->value.integer.value[0] = fm_switch_enable;
2097 pr_debug("%s: FM Switch enable %ld\n", __func__,
2098 ucontrol->value.integer.value[0]);
2099 return 0;
2100}
2101
2102static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2103 struct snd_ctl_elem_value *ucontrol)
2104{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302105 struct snd_soc_dapm_widget *widget =
2106 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302107 struct snd_soc_dapm_update *update = NULL;
2108
2109 pr_debug("%s: FM Switch enable %ld\n", __func__,
2110 ucontrol->value.integer.value[0]);
2111 if (ucontrol->value.integer.value[0])
2112 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2113 update);
2114 else
2115 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2116 update);
2117 fm_switch_enable = ucontrol->value.integer.value[0];
2118 return 1;
2119}
2120
2121static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2122 struct snd_ctl_elem_value *ucontrol)
2123{
2124 ucontrol->value.integer.value[0] = hfp_switch_enable;
2125 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2126 ucontrol->value.integer.value[0]);
2127 return 0;
2128}
2129
2130static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2131 struct snd_ctl_elem_value *ucontrol)
2132{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302133 struct snd_soc_dapm_widget *widget =
2134 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302135 struct snd_soc_dapm_update *update = NULL;
2136
2137 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2138 ucontrol->value.integer.value[0]);
2139 if (ucontrol->value.integer.value[0])
2140 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2141 1, update);
2142 else
2143 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2144 0, update);
2145 hfp_switch_enable = ucontrol->value.integer.value[0];
2146 return 1;
2147}
2148
2149static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2150 struct snd_ctl_elem_value *ucontrol)
2151{
2152 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2153 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2154 ucontrol->value.integer.value[0]);
2155 return 0;
2156}
2157
2158static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2159 struct snd_ctl_elem_value *ucontrol)
2160{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302161 struct snd_soc_dapm_widget *widget =
2162 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302163 struct snd_soc_dapm_update *update = NULL;
2164
2165 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2166 ucontrol->value.integer.value[0]);
2167 if (ucontrol->value.integer.value[0])
2168 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2169 update);
2170 else
2171 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2172 update);
2173 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2174 return 1;
2175}
2176
2177static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2178 struct snd_ctl_elem_value *ucontrol)
2179{
2180 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2181 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2182 ucontrol->value.integer.value[0]);
2183 return 0;
2184}
2185
2186static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2187 struct snd_ctl_elem_value *ucontrol)
2188{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302189 struct snd_soc_dapm_widget *widget =
2190 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302191 struct snd_soc_dapm_update *update = NULL;
2192
2193 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2194 ucontrol->value.integer.value[0]);
2195 if (ucontrol->value.integer.value[0])
2196 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2197 update);
2198 else
2199 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2200 update);
2201 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2202 return 1;
2203}
2204
2205static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2206 struct snd_ctl_elem_value *ucontrol)
2207{
2208 ucontrol->value.integer.value[0] = usb_switch_enable;
2209 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2210 ucontrol->value.integer.value[0]);
2211 return 0;
2212}
2213
2214static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2215 struct snd_ctl_elem_value *ucontrol)
2216{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302217 struct snd_soc_dapm_widget *widget =
2218 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302219 struct snd_soc_dapm_update *update = NULL;
2220
2221 pr_debug("%s: USB Switch enable %ld\n", __func__,
2222 ucontrol->value.integer.value[0]);
2223 if (ucontrol->value.integer.value[0])
2224 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2225 1, update);
2226 else
2227 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2228 0, update);
2229 usb_switch_enable = ucontrol->value.integer.value[0];
2230 return 1;
2231}
2232
2233static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2234 struct snd_ctl_elem_value *ucontrol)
2235{
2236 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2237 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2238 ucontrol->value.integer.value[0]);
2239 return 0;
2240}
2241
2242static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2243 struct snd_ctl_elem_value *ucontrol)
2244{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302245 struct snd_soc_dapm_widget *widget =
2246 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302247 struct snd_soc_dapm_update *update = NULL;
2248
2249 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2250 ucontrol->value.integer.value[0]);
2251 if (ucontrol->value.integer.value[0])
2252 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2253 update);
2254 else
2255 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2256 update);
2257 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2258 return 1;
2259}
2260
2261static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2262 struct snd_ctl_elem_value *ucontrol)
2263{
2264 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2265 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2266 ucontrol->value.integer.value[0]);
2267 return 0;
2268}
2269
2270static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2271 struct snd_ctl_elem_value *ucontrol)
2272{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302273 struct snd_soc_dapm_widget *widget =
2274 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302275 struct snd_soc_dapm_update *update = NULL;
2276
2277 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2278 ucontrol->value.integer.value[0]);
2279 if (ucontrol->value.integer.value[0])
2280 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2281 update);
2282 else
2283 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2284 update);
2285 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2286 return 1;
2287}
2288
2289static int msm_routing_get_tert_mi2s_switch_mixer(
2290 struct snd_kcontrol *kcontrol,
2291 struct snd_ctl_elem_value *ucontrol)
2292{
2293 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2294 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2295 ucontrol->value.integer.value[0]);
2296 return 0;
2297}
2298
2299static int msm_routing_put_tert_mi2s_switch_mixer(
2300 struct snd_kcontrol *kcontrol,
2301 struct snd_ctl_elem_value *ucontrol)
2302{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302303 struct snd_soc_dapm_widget *widget =
2304 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302305 struct snd_soc_dapm_update *update = NULL;
2306
2307 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2308 ucontrol->value.integer.value[0]);
2309 if (ucontrol->value.integer.value[0])
2310 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2311 update);
2312 else
2313 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2314 update);
2315 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2316 return 1;
2317}
2318
2319static int msm_routing_get_quat_mi2s_switch_mixer(
2320 struct snd_kcontrol *kcontrol,
2321 struct snd_ctl_elem_value *ucontrol)
2322{
2323 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2324 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2325 ucontrol->value.integer.value[0]);
2326 return 0;
2327}
2328
2329static int msm_routing_put_quat_mi2s_switch_mixer(
2330 struct snd_kcontrol *kcontrol,
2331 struct snd_ctl_elem_value *ucontrol)
2332{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302333 struct snd_soc_dapm_widget *widget =
2334 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302335 struct snd_soc_dapm_update *update = NULL;
2336
2337 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2338 ucontrol->value.integer.value[0]);
2339 if (ucontrol->value.integer.value[0])
2340 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2341 update);
2342 else
2343 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2344 update);
2345 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2346 return 1;
2347}
2348
Rohit Kumara5077932017-09-10 22:05:05 +05302349static int msm_routing_get_quin_mi2s_switch_mixer(
2350 struct snd_kcontrol *kcontrol,
2351 struct snd_ctl_elem_value *ucontrol)
2352{
2353 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2354 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2355 ucontrol->value.integer.value[0]);
2356 return 0;
2357}
2358
2359static int msm_routing_put_quin_mi2s_switch_mixer(
2360 struct snd_kcontrol *kcontrol,
2361 struct snd_ctl_elem_value *ucontrol)
2362{
2363 struct snd_soc_dapm_widget *widget =
2364 snd_soc_dapm_kcontrol_widget(kcontrol);
2365 struct snd_soc_dapm_update *update = NULL;
2366
2367 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2368 ucontrol->value.integer.value[0]);
2369 if (ucontrol->value.integer.value[0])
2370 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2371 update);
2372 else
2373 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2374 update);
2375 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2376 return 1;
2377}
2378
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302379static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2380 struct snd_ctl_elem_value *ucontrol)
2381{
2382 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2383 pr_debug("%s: FM Switch enable %ld\n", __func__,
2384 ucontrol->value.integer.value[0]);
2385 return 0;
2386}
2387
2388static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2389 struct snd_ctl_elem_value *ucontrol)
2390{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302391 struct snd_soc_dapm_widget *widget =
2392 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302393 struct snd_soc_dapm_update *update = NULL;
2394
2395 pr_debug("%s: FM Switch enable %ld\n", __func__,
2396 ucontrol->value.integer.value[0]);
2397 if (ucontrol->value.integer.value[0])
2398 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2399 update);
2400 else
2401 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2402 update);
2403 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2404 return 1;
2405}
2406
2407static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2408 struct snd_ctl_elem_value *ucontrol)
2409{
2410 ucontrol->value.integer.value[0] = lsm_port_index;
2411 return 0;
2412}
2413
2414static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2415 struct snd_ctl_elem_value *ucontrol)
2416{
2417 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2418 int mux = ucontrol->value.enumerated.item[0];
2419 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2420
2421 if (mux >= e->items) {
2422 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2423 return -EINVAL;
2424 }
2425
2426 pr_debug("%s: LSM enable %ld\n", __func__,
2427 ucontrol->value.integer.value[0]);
2428 switch (ucontrol->value.integer.value[0]) {
2429 case 1:
2430 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2431 break;
2432 case 2:
2433 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2434 break;
2435 case 3:
2436 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2437 break;
2438 case 4:
2439 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2440 break;
2441 case 5:
2442 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2443 break;
2444 case 6:
2445 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2446 break;
2447 case 7:
2448 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2449 break;
2450 case 8:
2451 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2452 break;
2453 case 9:
2454 lsm_port = ADM_LSM_PORT_ID;
2455 break;
2456 case 10:
Ashish Jain01b10322018-05-12 15:37:44 +05302457 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_2;
2458 break;
2459 case 11:
2460 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_3;
2461 break;
2462 case 12:
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302463 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
2464 break;
2465 default:
2466 pr_err("Default lsm port");
2467 break;
2468 }
2469 set_lsm_port(lsm_port);
2470 lsm_port_index = ucontrol->value.integer.value[0];
2471
2472 return 0;
2473}
2474
2475static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2476 struct snd_ctl_elem_value *ucontrol)
2477{
2478 int i;
2479 u16 port_id;
2480 enum afe_mad_type mad_type;
2481
2482 pr_debug("%s: enter\n", __func__);
2483 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2484 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2485 strlen(lsm_port_text[i])))
2486 break;
2487
2488 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2489 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2490 return -EINVAL;
2491 }
2492
2493 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2494
2495 /*Check for Tertiary/Quaternary/INT3 TX port*/
2496 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2497 strlen(lsm_port_text[7])))
2498 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2499
2500 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2501 strlen(lsm_port_text[8])))
2502 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2503
2504 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2505 strlen(lsm_port_text[10])))
2506 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2507
2508 mad_type = afe_port_get_mad_type(port_id);
2509 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2510 mad_type);
2511 switch (mad_type) {
2512 case MAD_HW_NONE:
2513 ucontrol->value.integer.value[0] = MADNONE;
2514 break;
2515 case MAD_HW_AUDIO:
2516 ucontrol->value.integer.value[0] = MADAUDIO;
2517 break;
2518 case MAD_HW_BEACON:
2519 ucontrol->value.integer.value[0] = MADBEACON;
2520 break;
2521 case MAD_HW_ULTRASOUND:
2522 ucontrol->value.integer.value[0] = MADULTRASOUND;
2523 break;
2524 case MAD_SW_AUDIO:
2525 ucontrol->value.integer.value[0] = MADSWAUDIO;
2526 break;
2527 default:
2528 WARN(1, "Unknown\n");
2529 return -EINVAL;
2530 }
2531 return 0;
2532}
2533
2534static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2535 struct snd_ctl_elem_value *ucontrol)
2536{
2537 int i;
2538 u16 port_id;
2539 enum afe_mad_type mad_type;
2540
2541 pr_debug("%s: enter\n", __func__);
2542 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2543 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2544 strlen(lsm_port_text[i])))
2545 break;
2546
2547 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2548 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2549 return -EINVAL;
2550 }
2551
2552 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2553 switch (ucontrol->value.integer.value[0]) {
2554 case MADNONE:
2555 mad_type = MAD_HW_NONE;
2556 break;
2557 case MADAUDIO:
2558 mad_type = MAD_HW_AUDIO;
2559 break;
2560 case MADBEACON:
2561 mad_type = MAD_HW_BEACON;
2562 break;
2563 case MADULTRASOUND:
2564 mad_type = MAD_HW_ULTRASOUND;
2565 break;
2566 case MADSWAUDIO:
2567 mad_type = MAD_SW_AUDIO;
2568 break;
2569 default:
2570 WARN(1, "Unknown\n");
2571 return -EINVAL;
2572 }
2573
2574 /*Check for Tertiary/Quaternary/INT3 TX port*/
2575 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2576 strlen(lsm_port_text[7])))
2577 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2578
2579 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2580 strlen(lsm_port_text[8])))
2581 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2582
2583 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2584 strlen(lsm_port_text[10])))
2585 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2586
2587 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2588 mad_type);
2589 return afe_port_set_mad_type(port_id, mad_type);
2590}
2591
2592static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2593
2594static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2595 adm_override_chs_text);
2596
2597static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2598{
2599 int backend_id;
2600
2601 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2602 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2603 } else {
2604 pr_err("%s: unsupported backend id: %s",
2605 __func__, kcontrol->id.name);
2606 return -EINVAL;
2607 }
2608
2609 return backend_id;
2610}
2611static int msm_routing_adm_channel_config_get(
2612 struct snd_kcontrol *kcontrol,
2613 struct snd_ctl_elem_value *ucontrol)
2614{
2615 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2616
2617 if (backend_id >= 0) {
2618 mutex_lock(&routing_lock);
2619 ucontrol->value.integer.value[0] =
2620 msm_bedais[backend_id].adm_override_ch;
2621 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2622 ucontrol->value.integer.value[0], backend_id);
2623 mutex_unlock(&routing_lock);
2624 }
2625
2626 return 0;
2627}
2628
2629static int msm_routing_adm_channel_config_put(
2630 struct snd_kcontrol *kcontrol,
2631 struct snd_ctl_elem_value *ucontrol)
2632{
2633 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2634
2635 if (backend_id >= 0) {
2636 mutex_lock(&routing_lock);
2637 msm_bedais[backend_id].adm_override_ch =
2638 ucontrol->value.integer.value[0];
2639 pr_debug("%s:updating BE :%d adm channels: %d\n",
2640 __func__, backend_id,
2641 msm_bedais[backend_id].adm_override_ch);
2642 mutex_unlock(&routing_lock);
2643 }
2644
2645 return 0;
2646}
2647
2648static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2649 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2650 msm_routing_adm_channel_config_get,
2651 msm_routing_adm_channel_config_put),
2652};
2653
2654static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2655 struct snd_ctl_elem_value *ucontrol)
2656{
2657
2658 mutex_lock(&routing_lock);
2659 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2660 mutex_unlock(&routing_lock);
2661 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2662 ucontrol->value.integer.value[0]);
2663 return 0;
2664};
2665
2666static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2667 struct snd_ctl_elem_value *ucontrol)
2668{
2669 struct aanc_data aanc_info;
2670
2671 mutex_lock(&routing_lock);
2672 memset(&aanc_info, 0x00, sizeof(aanc_info));
2673 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2674 ucontrol->value.integer.value[0]);
2675 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2676 if (ucontrol->value.integer.value[0] == 0) {
2677 aanc_info.aanc_active = false;
2678 aanc_info.aanc_tx_port = 0;
2679 aanc_info.aanc_rx_port = 0;
2680 } else {
2681 aanc_info.aanc_active = true;
2682 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2683 aanc_info.aanc_tx_port =
2684 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2685 }
2686 afe_set_aanc_info(&aanc_info);
2687 mutex_unlock(&routing_lock);
2688 return 0;
2689};
2690static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2691 struct snd_ctl_elem_value *ucontrol)
2692{
2693 int idx = 0, shift = 0;
2694 struct soc_mixer_control *mc =
2695 (struct soc_mixer_control *)kcontrol->private_value;
2696
2697 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2698 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2699
2700 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2701 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2702 return -EINVAL;
2703 }
2704
2705 if (test_bit(shift,
2706 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2707 ucontrol->value.integer.value[0] = 1;
2708 else
2709 ucontrol->value.integer.value[0] = 0;
2710
2711 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2712 ucontrol->value.integer.value[0]);
2713
2714 return 0;
2715}
2716
2717static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2718 struct snd_ctl_elem_value *ucontrol)
2719{
2720 int idx = 0, shift = 0;
2721 struct soc_mixer_control *mc =
2722 (struct soc_mixer_control *)kcontrol->private_value;
2723
2724 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2725 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2726
2727 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2728 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2729 return -EINVAL;
2730 }
2731
2732 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2733 __func__, mc->reg, mc->shift,
2734 ucontrol->value.integer.value[0], idx, shift);
2735
2736 if (ucontrol->value.integer.value[0]) {
2737 afe_loopback(1, msm_bedais[mc->reg].port_id,
2738 msm_bedais[mc->shift].port_id);
2739 set_bit(shift,
2740 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2741 } else {
2742 afe_loopback(0, msm_bedais[mc->reg].port_id,
2743 msm_bedais[mc->shift].port_id);
2744 clear_bit(shift,
2745 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2746 }
2747
2748 return 1;
2749}
2750
2751static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2752 struct snd_ctl_elem_value *ucontrol)
2753{
2754 u16 fe_id = 0;
2755
2756 fe_id = ((struct soc_mixer_control *)
2757 kcontrol->private_value)->shift;
2758 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2759 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2760 return -EINVAL;
2761 }
2762
2763 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2764
2765 return 0;
2766}
2767
2768static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2769 struct snd_ctl_elem_value *ucontrol)
2770{
2771 u16 fe_id = 0;
2772
2773 fe_id = ((struct soc_mixer_control *)
2774 kcontrol->private_value)->shift;
2775 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2776 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2777 return -EINVAL;
2778 }
2779
2780 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2781
2782 return 1;
2783}
2784
2785static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2786 struct snd_ctl_elem_value *ucontrol)
2787{
2788 u16 fe_id = 0;
2789
2790 fe_id = ((struct soc_multi_mixer_control *)
2791 kcontrol->private_value)->shift;
2792 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2793 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2794 return -EINVAL;
2795 }
2796
2797 ucontrol->value.integer.value[0] =
2798 channel_mixer[fe_id].output_channel;
2799 return 0;
2800}
2801
2802static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2803 struct snd_ctl_elem_value *ucontrol)
2804{
2805 u16 fe_id = 0;
2806
2807 fe_id = ((struct soc_multi_mixer_control *)
2808 kcontrol->private_value)->shift;
2809 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2810 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2811 return -EINVAL;
2812 }
2813
2814 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2815 fe_id,
2816 (unsigned int)(ucontrol->value.integer.value[0]));
2817 channel_mixer[fe_id].output_channel =
2818 (unsigned int)(ucontrol->value.integer.value[0]);
2819
2820 return 1;
2821}
2822
2823static const char *const ch_mixer[] = {"Disable", "Enable"};
2824
2825/* If new backend is added, need update this array */
2826static const char *const be_name[] = {
2827"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2828"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2829"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2830"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2831"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2832"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2833"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2834"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2835"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2836"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2837"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2838"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2839"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2840"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2841"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2842"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2843"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2844"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2845"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2846"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2847"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2848"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2849"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2850"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2851"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2852"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2853"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2854"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2855"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2856"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302857"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2858"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2859"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2860"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302861"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2862"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302863"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302864"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2865"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2866"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2867"INT6_MI2S_RX", "INT6_MI2S_TX"
2868};
2869
2870static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2871 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2872static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2873 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2874static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2875 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2876static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2877 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2878
2879static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
2880 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
2881static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
2882 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
2883static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
2884 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
2885static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
2886 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
2887static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
2888 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
2889static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
2890 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
2891static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
2892 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
2893static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
2894 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
2895
2896static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
2897 unsigned int channels,
2898 unsigned int items, const char *const names[])
2899{
2900 if (uinfo->value.enumerated.item >= items)
2901 uinfo->value.enumerated.item = items - 1;
2902
2903 WARN(strlen(names[uinfo->value.enumerated.item]) >=
2904 sizeof(uinfo->value.enumerated.name),
2905 "ALSA: too long item name '%s'\n",
2906 names[uinfo->value.enumerated.item]);
2907 strlcpy(uinfo->value.enumerated.name,
2908 names[uinfo->value.enumerated.item],
2909 sizeof(uinfo->value.enumerated.name));
2910 return 0;
2911}
2912
2913static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
2914 struct snd_ctl_elem_info *uinfo)
2915{
2916 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2917
2918 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2919 uinfo->count = 1;
2920
2921 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
2922 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2923
2924 return 0;
2925}
2926static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
2927 struct snd_ctl_elem_value *ucontrol)
2928{
2929 u16 fe_id = 0;
2930
2931 fe_id = ((struct soc_enum *)
2932 kcontrol->private_value)->shift_l;
2933 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2934 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2935 return -EINVAL;
2936 }
2937
2938 pr_debug("%s: FE %d %s\n", __func__,
2939 fe_id,
2940 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
2941 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
2942 return 0;
2943}
2944
2945static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
2946 struct snd_ctl_elem_value *ucontrol)
2947{
2948 u16 fe_id = 0;
2949
2950 fe_id = ((struct soc_enum *)
2951 kcontrol->private_value)->shift_l;
2952 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2953 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2954 return -EINVAL;
2955 }
2956
2957 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
2958 pr_debug("%s: %s FE %d\n", __func__,
2959 channel_mixer[fe_id].enable ? "Enable" : "Disable",
2960 fe_id);
2961 return 0;
2962}
2963
2964static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
2965 struct snd_ctl_elem_info *uinfo)
2966{
2967 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2968
2969 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2970 uinfo->count = 1;
2971
2972 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
2973 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2974
2975 return 0;
2976}
2977
2978static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
2979 struct snd_ctl_elem_value *ucontrol)
2980{
2981 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2982 u16 fe_id = 0, in_ch = 0;
2983
2984 fe_id = e->shift_l;
2985 in_ch = e->shift_r;
2986 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2987 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2988 return -EINVAL;
2989 }
2990 if (in_ch >= ADM_MAX_CHANNELS) {
2991 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
2992 return -EINVAL;
2993 }
2994
2995 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
2996 return 1;
2997}
2998
2999static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
3000 struct snd_ctl_elem_value *ucontrol)
3001{
3002 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3003 u16 fe_id = 0, in_ch = 0;
3004
3005 fe_id = e->shift_l;
3006 in_ch = e->shift_r;
3007 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3008 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3009 return -EINVAL;
3010 }
3011 if (in_ch >= ADM_MAX_CHANNELS) {
3012 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3013 return -EINVAL;
3014 }
3015
3016 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
3017 return 1;
3018}
3019
3020
3021static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
3022 struct snd_ctl_elem_info *uinfo)
3023{
3024 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3025 uinfo->count = ADM_MAX_CHANNELS;
3026 uinfo->value.integer.min = 0;
3027 uinfo->value.integer.max = WEIGHT_0_DB;
3028
3029 return 0;
3030}
3031
3032static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3033 struct snd_ctl_elem_value *ucontrol)
3034{
3035 u16 fe_id = 0, out_ch = 0;
3036 int i, weight;
3037
3038 fe_id = ((struct soc_multi_mixer_control *)
3039 kcontrol->private_value)->shift;
3040 out_ch = ((struct soc_multi_mixer_control *)
3041 kcontrol->private_value)->rshift;
3042 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3043 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3044 return -EINVAL;
3045 }
3046 if (out_ch >= ADM_MAX_CHANNELS) {
3047 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3048 return -EINVAL;
3049 }
3050
3051 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3052 __func__, fe_id,
3053 ucontrol->value.integer.value[0],
3054 ucontrol->value.integer.value[1],
3055 ucontrol->value.integer.value[2],
3056 ucontrol->value.integer.value[3],
3057 ucontrol->value.integer.value[4],
3058 ucontrol->value.integer.value[5],
3059 ucontrol->value.integer.value[6],
3060 ucontrol->value.integer.value[7]);
3061
3062 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3063 weight = ucontrol->value.integer.value[i];
3064 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3065 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3066 __func__, fe_id, out_ch, i,
3067 channel_mixer[fe_id].channel_weight[out_ch][i]);
3068 }
3069
3070 return 0;
3071}
3072
3073static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3074 struct snd_ctl_elem_value *ucontrol)
3075{
3076 u16 fe_id = 0, out_ch = 0;
3077 int i;
3078
3079 fe_id = ((struct soc_multi_mixer_control *)
3080 kcontrol->private_value)->shift;
3081 out_ch = ((struct soc_multi_mixer_control *)
3082 kcontrol->private_value)->rshift;
3083 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3084 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3085 return -EINVAL;
3086 }
3087 if (out_ch >= ADM_MAX_CHANNELS) {
3088 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3089 return -EINVAL;
3090 }
3091
3092 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3093 ucontrol->value.integer.value[i] =
3094 channel_mixer[fe_id].channel_weight[out_ch][i];
3095
3096 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3097 __func__, fe_id,
3098 ucontrol->value.integer.value[0],
3099 ucontrol->value.integer.value[1],
3100 ucontrol->value.integer.value[2],
3101 ucontrol->value.integer.value[3],
3102 ucontrol->value.integer.value[4],
3103 ucontrol->value.integer.value[5],
3104 ucontrol->value.integer.value[6],
3105 ucontrol->value.integer.value[7]);
3106
3107 return 0;
3108}
3109
3110static const struct snd_kcontrol_new channel_mixer_controls[] = {
3111 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3112 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3113 msm_pcm_get_channel_rule_index,
3114 msm_pcm_put_channel_rule_index),
3115 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3116 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3117 msm_pcm_get_channel_rule_index,
3118 msm_pcm_put_channel_rule_index),
3119 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3120 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3121 msm_pcm_get_channel_rule_index,
3122 msm_pcm_put_channel_rule_index),
3123 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3124 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3125 msm_pcm_get_channel_rule_index,
3126 msm_pcm_put_channel_rule_index),
3127 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3128 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3129 msm_pcm_get_channel_rule_index,
3130 msm_pcm_put_channel_rule_index),
3131 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3132 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3133 msm_pcm_get_channel_rule_index,
3134 msm_pcm_put_channel_rule_index),
3135
3136 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3137 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3138 msm_pcm_get_out_chs,
3139 msm_pcm_put_out_chs),
3140 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3141 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3142 msm_pcm_get_out_chs,
3143 msm_pcm_put_out_chs),
3144 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3145 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3146 msm_pcm_get_out_chs,
3147 msm_pcm_put_out_chs),
3148 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3149 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3150 msm_pcm_get_out_chs,
3151 msm_pcm_put_out_chs),
3152 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3153 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3154 msm_pcm_get_out_chs,
3155 msm_pcm_put_out_chs),
3156 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3157 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3158 msm_pcm_get_out_chs,
3159 msm_pcm_put_out_chs),
3160 {
3161 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3162 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3163 .name = "MultiMedia1 Channel Mixer",
3164 .info = msm_pcm_channel_mixer_info,
3165 .get = msm_pcm_channel_mixer_get,
3166 .put = msm_pcm_channel_mixer_put,
3167 .private_value = (unsigned long)&(mm1_channel_mux)
3168 },
3169 {
3170 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3171 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3172 .name = "MultiMedia2 Channel Mixer",
3173 .info = msm_pcm_channel_mixer_info,
3174 .get = msm_pcm_channel_mixer_get,
3175 .put = msm_pcm_channel_mixer_put,
3176 .private_value = (unsigned long)&(mm2_channel_mux)
3177 },
3178 {
3179 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3180 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3181 .name = "MultiMedia3 Channel Mixer",
3182 .info = msm_pcm_channel_mixer_info,
3183 .get = msm_pcm_channel_mixer_get,
3184 .put = msm_pcm_channel_mixer_put,
3185 .private_value = (unsigned long)&(mm3_channel_mux)
3186 },
3187 {
3188 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3189 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3190 .name = "MultiMedia4 Channel Mixer",
3191 .info = msm_pcm_channel_mixer_info,
3192 .get = msm_pcm_channel_mixer_get,
3193 .put = msm_pcm_channel_mixer_put,
3194 .private_value = (unsigned long)&(mm4_channel_mux)
3195 },
3196 {
3197 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3198 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3199 .name = "MultiMedia1 Output Channel1",
3200 .info = msm_pcm_channel_weight_info,
3201 .get = msm_pcm_channel_weight_get,
3202 .put = msm_pcm_channel_weight_put,
3203 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3204 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 0,}
3205 },
3206 {
3207 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3208 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3209 .name = "MultiMedia1 Output Channel2",
3210 .info = msm_pcm_channel_weight_info,
3211 .get = msm_pcm_channel_weight_get,
3212 .put = msm_pcm_channel_weight_put,
3213 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3214 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3215 },
3216 {
3217 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3218 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3219 .name = "MultiMedia1 Output Channel3",
3220 .info = msm_pcm_channel_weight_info,
3221 .get = msm_pcm_channel_weight_get,
3222 .put = msm_pcm_channel_weight_put,
3223 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3224 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3225 },
3226 {
3227 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3228 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3229 .name = "MultiMedia1 Output Channel4",
3230 .info = msm_pcm_channel_weight_info,
3231 .get = msm_pcm_channel_weight_get,
3232 .put = msm_pcm_channel_weight_put,
3233 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3234 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3235 },
3236 {
3237 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3238 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3239 .name = "MultiMedia1 Output Channel5",
3240 .info = msm_pcm_channel_weight_info,
3241 .get = msm_pcm_channel_weight_get,
3242 .put = msm_pcm_channel_weight_put,
3243 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3244 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3245 },
3246 {
3247 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3248 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3249 .name = "MultiMedia1 Output Channel6",
3250 .info = msm_pcm_channel_weight_info,
3251 .get = msm_pcm_channel_weight_get,
3252 .put = msm_pcm_channel_weight_put,
3253 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3254 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3255 },
3256 {
3257 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3258 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3259 .name = "MultiMedia1 Output Channel7",
3260 .info = msm_pcm_channel_weight_info,
3261 .get = msm_pcm_channel_weight_get,
3262 .put = msm_pcm_channel_weight_put,
3263 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3264 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3265 },
3266 {
3267 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3268 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3269 .name = "MultiMedia1 Output Channel8",
3270 .info = msm_pcm_channel_weight_info,
3271 .get = msm_pcm_channel_weight_get,
3272 .put = msm_pcm_channel_weight_put,
3273 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3274 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3275 },
3276 {
3277 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3278 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3279 .name = "MultiMedia2 Output Channel1",
3280 .info = msm_pcm_channel_weight_info,
3281 .get = msm_pcm_channel_weight_get,
3282 .put = msm_pcm_channel_weight_put,
3283 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3284 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3285 },
3286 {
3287 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3288 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3289 .name = "MultiMedia2 Output Channel2",
3290 .info = msm_pcm_channel_weight_info,
3291 .get = msm_pcm_channel_weight_get,
3292 .put = msm_pcm_channel_weight_put,
3293 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3294 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3295 },
3296 {
3297 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3298 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3299 .name = "MultiMedia2 Output Channel3",
3300 .info = msm_pcm_channel_weight_info,
3301 .get = msm_pcm_channel_weight_get,
3302 .put = msm_pcm_channel_weight_put,
3303 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3304 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3305 },
3306 {
3307 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3308 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3309 .name = "MultiMedia3 Output Channel1",
3310 .info = msm_pcm_channel_weight_info,
3311 .get = msm_pcm_channel_weight_get,
3312 .put = msm_pcm_channel_weight_put,
3313 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3314 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3315 },
3316 {
3317 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3318 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3319 .name = "MultiMedia3 Output Channel2",
3320 .info = msm_pcm_channel_weight_info,
3321 .get = msm_pcm_channel_weight_get,
3322 .put = msm_pcm_channel_weight_put,
3323 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3324 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3325 },
3326 {
3327 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3328 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3329 .name = "MultiMedia1 Channel1",
3330 .info = msm_pcm_channel_input_be_info,
3331 .get = msm_pcm_channel_input_be_get,
3332 .put = msm_pcm_channel_input_be_put,
3333 .private_value = (unsigned long)&(mm1_ch1_enum)
3334 },
3335 {
3336 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3337 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3338 .name = "MultiMedia1 Channel2",
3339 .info = msm_pcm_channel_input_be_info,
3340 .get = msm_pcm_channel_input_be_get,
3341 .put = msm_pcm_channel_input_be_put,
3342 .private_value = (unsigned long)&(mm1_ch2_enum)
3343 },
3344 {
3345 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3346 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3347 .name = "MultiMedia1 Channel3",
3348 .info = msm_pcm_channel_input_be_info,
3349 .get = msm_pcm_channel_input_be_get,
3350 .put = msm_pcm_channel_input_be_put,
3351 .private_value = (unsigned long)&(mm1_ch3_enum)
3352 },
3353 {
3354 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3355 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3356 .name = "MultiMedia1 Channel4",
3357 .info = msm_pcm_channel_input_be_info,
3358 .get = msm_pcm_channel_input_be_get,
3359 .put = msm_pcm_channel_input_be_put,
3360 .private_value = (unsigned long)&(mm1_ch4_enum)
3361 },
3362 {
3363 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3364 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3365 .name = "MultiMedia1 Channel5",
3366 .info = msm_pcm_channel_input_be_info,
3367 .get = msm_pcm_channel_input_be_get,
3368 .put = msm_pcm_channel_input_be_put,
3369 .private_value = (unsigned long)&(mm1_ch5_enum)
3370 },
3371 {
3372 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3373 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3374 .name = "MultiMedia1 Channel6",
3375 .info = msm_pcm_channel_input_be_info,
3376 .get = msm_pcm_channel_input_be_get,
3377 .put = msm_pcm_channel_input_be_put,
3378 .private_value = (unsigned long)&(mm1_ch6_enum)
3379 },
3380 {
3381 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3382 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3383 .name = "MultiMedia1 Channel7",
3384 .info = msm_pcm_channel_input_be_info,
3385 .get = msm_pcm_channel_input_be_get,
3386 .put = msm_pcm_channel_input_be_put,
3387 .private_value = (unsigned long)&(mm1_ch7_enum)
3388 },
3389 {
3390 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3391 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3392 .name = "MultiMedia1 Channel8",
3393 .info = msm_pcm_channel_input_be_info,
3394 .get = msm_pcm_channel_input_be_get,
3395 .put = msm_pcm_channel_input_be_put,
3396 .private_value = (unsigned long)&(mm1_ch8_enum)
3397 },
3398};
3399static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3400 struct snd_ctl_elem_value *ucontrol)
3401{
3402 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3403 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3404 ucontrol->value.integer.value[0]);
3405 return 0;
3406}
3407
3408static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3409 struct snd_ctl_elem_value *ucontrol)
3410{
3411 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3412 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3413 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3414 return 0;
3415}
3416
3417static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3418 "Four", "Five", "Six", "Seven", "Eight"};
3419
3420static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3421 struct snd_ctl_elem_value *ucontrol)
3422{
3423 switch (msm_ec_ref_bit_format) {
3424 case SNDRV_PCM_FORMAT_S24_LE:
3425 ucontrol->value.integer.value[0] = 2;
3426 break;
3427 case SNDRV_PCM_FORMAT_S16_LE:
3428 ucontrol->value.integer.value[0] = 1;
3429 break;
3430 default:
3431 ucontrol->value.integer.value[0] = 0;
3432 break;
3433 }
3434 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3435 __func__, ucontrol->value.integer.value[0]);
3436 return 0;
3437}
3438
3439static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3440 struct snd_ctl_elem_value *ucontrol)
3441{
3442 u16 bit_width = 0;
3443
3444 switch (ucontrol->value.integer.value[0]) {
3445 case 2:
3446 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3447 break;
3448 case 1:
3449 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3450 break;
3451 default:
3452 msm_ec_ref_bit_format = 0;
3453 break;
3454 }
3455
3456 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3457 bit_width = 16;
3458 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3459 bit_width = 24;
3460
3461 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3462 __func__, msm_ec_ref_bit_format);
3463 adm_ec_ref_rx_bit_width(bit_width);
3464 return 0;
3465}
3466
3467static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3468
3469static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3470 struct snd_ctl_elem_value *ucontrol)
3471{
3472 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3473 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3474 __func__, ucontrol->value.integer.value[0]);
3475 return 0;
3476}
3477
3478static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3479 struct snd_ctl_elem_value *ucontrol)
3480{
3481 switch (ucontrol->value.integer.value[0]) {
3482 case 0:
3483 msm_ec_ref_sampling_rate = 0;
3484 break;
3485 case 1:
3486 msm_ec_ref_sampling_rate = 8000;
3487 break;
3488 case 2:
3489 msm_ec_ref_sampling_rate = 16000;
3490 break;
3491 case 3:
3492 msm_ec_ref_sampling_rate = 32000;
3493 break;
3494 case 4:
3495 msm_ec_ref_sampling_rate = 44100;
3496 break;
3497 case 5:
3498 msm_ec_ref_sampling_rate = 48000;
3499 break;
3500 case 6:
3501 msm_ec_ref_sampling_rate = 96000;
3502 break;
3503 case 7:
3504 msm_ec_ref_sampling_rate = 192000;
3505 break;
3506 case 8:
3507 msm_ec_ref_sampling_rate = 384000;
3508 break;
3509 default:
3510 msm_ec_ref_sampling_rate = 48000;
3511 break;
3512 }
3513 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3514 __func__, msm_ec_ref_sampling_rate);
3515 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3516 return 0;
3517}
3518
3519static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3520 "32000", "44100", "48000", "96000", "192000", "384000"};
3521
3522static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3523 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3524 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3525 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3526};
3527
3528static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3529 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3530 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3531 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3532 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3533 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3534 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3535};
3536
3537static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3538 struct snd_ctl_elem_value *ucontrol)
3539{
3540 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3541 mutex_lock(&routing_lock);
3542 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3543 mutex_unlock(&routing_lock);
3544 return 0;
3545}
3546
3547static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3548 struct snd_ctl_elem_value *ucontrol)
3549{
3550 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303551 struct snd_soc_dapm_widget *widget =
3552 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303553 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3554 struct snd_soc_dapm_update *update = NULL;
3555
3556
3557 mutex_lock(&routing_lock);
3558 switch (ucontrol->value.integer.value[0]) {
3559 case 0:
3560 msm_route_ec_ref_rx = 0;
3561 ec_ref_port_id = AFE_PORT_INVALID;
3562 break;
3563 case 1:
3564 msm_route_ec_ref_rx = 1;
3565 ec_ref_port_id = SLIMBUS_0_RX;
3566 break;
3567 case 2:
3568 msm_route_ec_ref_rx = 2;
3569 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3570 break;
3571 case 3:
3572 msm_route_ec_ref_rx = 3;
3573 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3574 break;
3575 case 4:
3576 msm_route_ec_ref_rx = 4;
3577 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3578 break;
3579 case 5:
3580 msm_route_ec_ref_rx = 5;
3581 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3582 break;
3583 case 6:
3584 msm_route_ec_ref_rx = 6;
3585 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3586 break;
3587 case 7:
3588 msm_route_ec_ref_rx = 7;
3589 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3590 break;
3591 case 9:
3592 msm_route_ec_ref_rx = 9;
3593 ec_ref_port_id = SLIMBUS_5_RX;
3594 break;
3595 case 10:
3596 msm_route_ec_ref_rx = 10;
3597 ec_ref_port_id = SLIMBUS_1_TX;
3598 break;
3599 case 11:
3600 msm_route_ec_ref_rx = 11;
3601 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3602 break;
3603 case 12:
3604 msm_route_ec_ref_rx = 12;
3605 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3606 break;
3607 case 13:
3608 msm_route_ec_ref_rx = 13;
3609 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3610 break;
3611 case 14:
3612 msm_route_ec_ref_rx = 14;
3613 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3614 break;
3615 case 15:
3616 msm_route_ec_ref_rx = 15;
3617 ec_ref_port_id = SLIMBUS_6_RX;
3618 break;
3619 case 16:
3620 msm_route_ec_ref_rx = 16;
3621 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3622 break;
3623 case 17:
3624 msm_route_ec_ref_rx = 17;
3625 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3626 break;
3627 case 18:
3628 msm_route_ec_ref_rx = 18;
3629 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3630 break;
3631 case 19:
3632 msm_route_ec_ref_rx = 19;
3633 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3634 break;
3635 case 20:
3636 msm_route_ec_ref_rx = 20;
3637 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3638 break;
3639 case 21:
3640 msm_route_ec_ref_rx = 21;
3641 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3642 break;
3643 case 22:
3644 msm_route_ec_ref_rx = 22;
3645 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3646 break;
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003647 case 23:
3648 msm_route_ec_ref_rx = 23;
3649 ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
3650 break;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303651 default:
3652 msm_route_ec_ref_rx = 0; /* NONE */
3653 pr_err("%s EC ref rx %ld not valid\n",
3654 __func__, ucontrol->value.integer.value[0]);
3655 ec_ref_port_id = AFE_PORT_INVALID;
3656 break;
3657 }
3658 adm_ec_ref_rx_id(ec_ref_port_id);
3659 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3660 __func__, msm_route_ec_ref_rx);
3661 mutex_unlock(&routing_lock);
3662 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3663 msm_route_ec_ref_rx, e, update);
3664 return 0;
3665}
3666
3667static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3668 "PRI_MI2S_TX", "SEC_MI2S_TX",
3669 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3670 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3671 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3672 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003673 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT"};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303674
3675static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3676 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3677};
3678
3679static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3680 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3681 msm_route_ec_ref_rx_enum[0],
3682 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3683
3684static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3685 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3686 msm_route_ec_ref_rx_enum[0],
3687 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3688
3689static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3690 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3691 msm_route_ec_ref_rx_enum[0],
3692 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3693
3694static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3695 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3696 msm_route_ec_ref_rx_enum[0],
3697 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3698
3699static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3700 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3701 msm_route_ec_ref_rx_enum[0],
3702 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3703
3704static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3705 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3706 msm_route_ec_ref_rx_enum[0],
3707 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3708
3709static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3710 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3711 msm_route_ec_ref_rx_enum[0],
3712 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3713
3714static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3715 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3716 msm_route_ec_ref_rx_enum[0],
3717 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3718
Asish Bhattacharya34504582017-08-08 12:55:01 +05303719static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3720 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3721 msm_route_ec_ref_rx_enum[0],
3722 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3723
Laxminath Kasam38070be2017-08-17 18:21:59 +05303724static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3725 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3726 msm_route_ec_ref_rx_enum[0],
3727 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3728
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303729static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3730 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3731 msm_route_ec_ref_rx_enum[0],
3732 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3733
3734static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3735 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3736 msm_route_ec_ref_rx_enum[0],
3737 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3738
3739static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3740 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3741 msm_route_ec_ref_rx_enum[0],
3742 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3743
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303744static const struct snd_kcontrol_new ext_ec_ref_mux_ul28 =
3745 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL28 MUX Mux",
3746 msm_route_ec_ref_rx_enum[0],
3747 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3748
3749static const struct snd_kcontrol_new ext_ec_ref_mux_ul29 =
3750 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL29 MUX Mux",
3751 msm_route_ec_ref_rx_enum[0],
3752 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3753
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303754static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3755 struct snd_ctl_elem_value *ucontrol)
3756{
3757 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3758
3759 mutex_lock(&routing_lock);
3760 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3761 mutex_unlock(&routing_lock);
3762 return 0;
3763}
3764
3765static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3766 struct snd_ctl_elem_value *ucontrol)
3767{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303768 struct snd_soc_dapm_widget *widget =
3769 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303770 int mux = ucontrol->value.enumerated.item[0];
3771 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3772 int ret = 1;
3773 bool state = true;
3774 uint16_t ext_ec_ref_port_id;
3775 struct snd_soc_dapm_update *update = NULL;
3776
3777 if (mux >= e->items) {
3778 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3779 return -EINVAL;
3780 }
3781
3782 mutex_lock(&routing_lock);
3783 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3784
3785 switch (msm_route_ext_ec_ref) {
3786 case EXT_EC_REF_PRI_MI2S_TX:
3787 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3788 break;
3789 case EXT_EC_REF_SEC_MI2S_TX:
3790 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3791 break;
3792 case EXT_EC_REF_TERT_MI2S_TX:
3793 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3794 break;
3795 case EXT_EC_REF_QUAT_MI2S_TX:
3796 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3797 break;
3798 case EXT_EC_REF_QUIN_MI2S_TX:
3799 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3800 break;
3801 case EXT_EC_REF_SLIM_1_TX:
3802 ext_ec_ref_port_id = SLIMBUS_1_TX;
3803 break;
3804 case EXT_EC_REF_NONE:
3805 default:
3806 ext_ec_ref_port_id = AFE_PORT_INVALID;
3807 state = false;
3808 break;
3809 }
3810
3811 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3812 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3813
3814 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3815 mutex_unlock(&routing_lock);
3816 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3817 update);
3818 } else {
3819 ret = -EINVAL;
3820 mutex_unlock(&routing_lock);
3821 }
3822 return ret;
3823}
3824
3825static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3826 "SEC_MI2S_TX", "TERT_MI2S_TX",
3827 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3828 "SLIM_1_TX"};
3829
3830static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3831 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3832};
3833
3834static const struct snd_kcontrol_new voc_ext_ec_mux =
3835 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3836 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3837
3838
3839static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3840 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3841 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3842 msm_routing_put_audio_mixer),
3843 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3844 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3845 msm_routing_put_audio_mixer),
3846 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3847 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3848 msm_routing_put_audio_mixer),
3849 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3850 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3851 msm_routing_put_audio_mixer),
3852 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3853 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3854 msm_routing_put_audio_mixer),
3855 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3856 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3857 msm_routing_put_audio_mixer),
3858 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3859 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3860 msm_routing_put_audio_mixer),
3861 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3862 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3863 msm_routing_put_audio_mixer),
3864 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3865 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3866 msm_routing_put_audio_mixer),
3867 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3868 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3869 msm_routing_put_audio_mixer),
3870 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3871 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3872 msm_routing_put_audio_mixer),
3873 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
3874 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3875 msm_routing_put_audio_mixer),
3876 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
3877 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3878 msm_routing_put_audio_mixer),
3879 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
3880 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3881 msm_routing_put_audio_mixer),
3882 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
3883 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3884 msm_routing_put_audio_mixer),
3885 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
3886 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3887 msm_routing_put_audio_mixer),
3888 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
3889 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3890 msm_routing_put_audio_mixer),
3891 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
3892 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3893 msm_routing_put_audio_mixer),
3894 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
3895 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3896 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303897 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_I2S_RX,
3898 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
3899 msm_routing_put_audio_mixer),
3900 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_I2S_RX,
3901 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
3902 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303903};
3904
3905static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
3906 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
3907 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3908 msm_routing_put_audio_mixer),
3909 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
3910 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3911 msm_routing_put_audio_mixer),
3912 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
3913 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3914 msm_routing_put_audio_mixer),
3915 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
3916 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3917 msm_routing_put_audio_mixer),
3918 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
3919 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3920 msm_routing_put_audio_mixer),
3921 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
3922 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3923 msm_routing_put_audio_mixer),
3924 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
3925 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3926 msm_routing_put_audio_mixer),
3927 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
3928 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3929 msm_routing_put_audio_mixer),
3930 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
3931 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3932 msm_routing_put_audio_mixer),
3933 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
3934 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3935 msm_routing_put_audio_mixer),
3936 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
3937 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3938 msm_routing_put_audio_mixer),
3939 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
3940 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3941 msm_routing_put_audio_mixer),
3942 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
3943 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3944 msm_routing_put_audio_mixer),
3945 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
3946 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3947 msm_routing_put_audio_mixer),
3948 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
3949 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3950 msm_routing_put_audio_mixer),
3951 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
3952 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3953 msm_routing_put_audio_mixer),
3954 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
3955 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3956 msm_routing_put_audio_mixer),
3957 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
3958 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3959 msm_routing_put_audio_mixer),
3960 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
3961 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3962 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303963 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_I2S_RX,
3964 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
3965 msm_routing_put_audio_mixer),
3966 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_I2S_RX,
3967 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
3968 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303969};
3970
3971static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
3972 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
3973 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3974 msm_routing_put_audio_mixer),
3975 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
3976 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3977 msm_routing_put_audio_mixer),
3978 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
3979 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3980 msm_routing_put_audio_mixer),
3981 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
3982 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3983 msm_routing_put_audio_mixer),
3984 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
3985 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3986 msm_routing_put_audio_mixer),
3987 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
3988 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3989 msm_routing_put_audio_mixer),
3990 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
3991 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3992 msm_routing_put_audio_mixer),
3993 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
3994 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3995 msm_routing_put_audio_mixer),
3996 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
3997 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3998 msm_routing_put_audio_mixer),
3999 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
4000 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4001 msm_routing_put_audio_mixer),
4002 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
4003 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4004 msm_routing_put_audio_mixer),
4005 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
4006 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4007 msm_routing_put_audio_mixer),
4008 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
4009 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4010 msm_routing_put_audio_mixer),
4011 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
4012 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4013 msm_routing_put_audio_mixer),
4014 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
4015 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4016 msm_routing_put_audio_mixer),
4017 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
4018 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4019 msm_routing_put_audio_mixer),
4020 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
4021 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4022 msm_routing_put_audio_mixer),
4023 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
4024 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4025 msm_routing_put_audio_mixer),
4026 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
4027 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4028 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304029 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SPDIF_RX,
4030 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4031 msm_routing_put_audio_mixer),
4032 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SPDIF_RX,
4033 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4034 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304035};
4036
4037static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
4038 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4039 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4040 msm_routing_put_audio_mixer),
4041 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4042 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4043 msm_routing_put_audio_mixer),
4044 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4045 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4046 msm_routing_put_audio_mixer),
4047 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4048 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4049 msm_routing_put_audio_mixer),
4050 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4051 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4052 msm_routing_put_audio_mixer),
4053 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4054 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4055 msm_routing_put_audio_mixer),
4056 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4057 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4058 msm_routing_put_audio_mixer),
4059 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4060 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4061 msm_routing_put_audio_mixer),
4062 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4063 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4064 msm_routing_put_audio_mixer),
4065 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4066 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4067 msm_routing_put_audio_mixer),
4068 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4069 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4070 msm_routing_put_audio_mixer),
4071 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4072 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4073 msm_routing_put_audio_mixer),
4074 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4075 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4076 msm_routing_put_audio_mixer),
4077 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4078 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4079 msm_routing_put_audio_mixer),
4080 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4081 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4082 msm_routing_put_audio_mixer),
4083 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4084 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4085 msm_routing_put_audio_mixer),
4086};
4087
4088static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4089 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4090 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4091 msm_routing_put_audio_mixer),
4092 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4093 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4094 msm_routing_put_audio_mixer),
4095 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4096 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4097 msm_routing_put_audio_mixer),
4098 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4099 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4100 msm_routing_put_audio_mixer),
4101 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4102 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4103 msm_routing_put_audio_mixer),
4104 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4105 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4106 msm_routing_put_audio_mixer),
4107 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4108 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4109 msm_routing_put_audio_mixer),
4110 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4111 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4112 msm_routing_put_audio_mixer),
4113 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4114 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4115 msm_routing_put_audio_mixer),
4116 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4117 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4118 msm_routing_put_audio_mixer),
4119 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4120 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4121 msm_routing_put_audio_mixer),
4122 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4123 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4124 msm_routing_put_audio_mixer),
4125 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4126 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4127 msm_routing_put_audio_mixer),
4128 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4129 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4130 msm_routing_put_audio_mixer),
4131 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4132 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4133 msm_routing_put_audio_mixer),
4134 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4135 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4136 msm_routing_put_audio_mixer),
4137 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4138 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4139 msm_routing_put_audio_mixer),
4140 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4141 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4142 msm_routing_put_audio_mixer),
4143 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4144 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4145 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304146 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4147 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4148 msm_routing_put_audio_mixer),
4149 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4150 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4151 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304152};
4153
4154static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4155 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4156 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4157 msm_routing_put_audio_mixer),
4158 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4159 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4160 msm_routing_put_audio_mixer),
4161 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4162 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4163 msm_routing_put_audio_mixer),
4164 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4165 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4166 msm_routing_put_audio_mixer),
4167 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4168 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4169 msm_routing_put_audio_mixer),
4170 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4171 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4172 msm_routing_put_audio_mixer),
4173 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4174 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4175 msm_routing_put_audio_mixer),
4176 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4177 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4178 msm_routing_put_audio_mixer),
4179 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4180 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4181 msm_routing_put_audio_mixer),
4182 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4183 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4184 msm_routing_put_audio_mixer),
4185 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4186 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4187 msm_routing_put_audio_mixer),
4188 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4189 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4190 msm_routing_put_audio_mixer),
4191 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4192 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4193 msm_routing_put_audio_mixer),
4194 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4195 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4196 msm_routing_put_audio_mixer),
4197 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4198 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4199 msm_routing_put_audio_mixer),
4200 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4201 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4202 msm_routing_put_audio_mixer),
4203 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4204 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4205 msm_routing_put_audio_mixer),
4206 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4207 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4208 msm_routing_put_audio_mixer),
4209 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4210 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4211 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304212 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4213 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4214 msm_routing_put_audio_mixer),
4215 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4216 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4217 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304218};
4219
4220static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4221 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4222 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4223 msm_routing_put_audio_mixer),
4224 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4225 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4226 msm_routing_put_audio_mixer),
4227 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4228 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4229 msm_routing_put_audio_mixer),
4230 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4231 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4232 msm_routing_put_audio_mixer),
4233 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4234 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4235 msm_routing_put_audio_mixer),
4236 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4237 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4238 msm_routing_put_audio_mixer),
4239 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4240 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4241 msm_routing_put_audio_mixer),
4242 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4243 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4244 msm_routing_put_audio_mixer),
4245 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4246 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4247 msm_routing_put_audio_mixer),
4248 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4249 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4250 msm_routing_put_audio_mixer),
4251 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4252 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4253 msm_routing_put_audio_mixer),
4254 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4255 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4256 msm_routing_put_audio_mixer),
4257 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4258 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4259 msm_routing_put_audio_mixer),
4260 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4261 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4262 msm_routing_put_audio_mixer),
4263 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4264 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4265 msm_routing_put_audio_mixer),
4266 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4267 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4268 msm_routing_put_audio_mixer),
4269 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4270 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4271 msm_routing_put_audio_mixer),
4272 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4273 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4274 msm_routing_put_audio_mixer),
4275 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4276 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4277 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304278 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_MI2S_RX,
4279 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4280 msm_routing_put_audio_mixer),
4281 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_MI2S_RX,
4282 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4283 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304284};
4285
4286static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4287 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4288 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4289 msm_routing_put_audio_mixer),
4290 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4291 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4292 msm_routing_put_audio_mixer),
4293 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4294 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4295 msm_routing_put_audio_mixer),
4296 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4297 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4298 msm_routing_put_audio_mixer),
4299 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4300 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4301 msm_routing_put_audio_mixer),
4302 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4303 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4304 msm_routing_put_audio_mixer),
4305 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4306 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4307 msm_routing_put_audio_mixer),
4308 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4309 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4310 msm_routing_put_audio_mixer),
4311 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4312 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4313 msm_routing_put_audio_mixer),
4314 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4315 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4316 msm_routing_put_audio_mixer),
4317 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4318 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4319 msm_routing_put_audio_mixer),
4320 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4321 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4322 msm_routing_put_audio_mixer),
4323 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4324 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4325 msm_routing_put_audio_mixer),
4326 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4327 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4328 msm_routing_put_audio_mixer),
4329 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4330 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4331 msm_routing_put_audio_mixer),
4332 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4333 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4334 msm_routing_put_audio_mixer),
4335 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4336 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4337 msm_routing_put_audio_mixer),
4338 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4339 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4340 msm_routing_put_audio_mixer),
4341 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4342 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4343 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304344 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4345 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4346 msm_routing_put_audio_mixer),
4347 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4348 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4349 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304350};
4351
4352static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4353 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4354 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4355 msm_routing_put_audio_mixer),
4356 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4357 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4358 msm_routing_put_audio_mixer),
4359 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4360 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4361 msm_routing_put_audio_mixer),
4362 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4363 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4364 msm_routing_put_audio_mixer),
4365 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4366 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4367 msm_routing_put_audio_mixer),
4368 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4369 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4370 msm_routing_put_audio_mixer),
4371 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4372 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4373 msm_routing_put_audio_mixer),
4374 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4375 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4376 msm_routing_put_audio_mixer),
4377 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4378 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4379 msm_routing_put_audio_mixer),
4380 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4381 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4382 msm_routing_put_audio_mixer),
4383 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4384 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4385 msm_routing_put_audio_mixer),
4386 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4387 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4388 msm_routing_put_audio_mixer),
4389 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4390 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4391 msm_routing_put_audio_mixer),
4392 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4393 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4394 msm_routing_put_audio_mixer),
4395 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4396 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4397 msm_routing_put_audio_mixer),
4398 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4399 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4400 msm_routing_put_audio_mixer),
4401 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4402 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4403 msm_routing_put_audio_mixer),
4404 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4405 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4406 msm_routing_put_audio_mixer),
4407 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4408 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4409 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304410 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4411 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4412 msm_routing_put_audio_mixer),
4413 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4414 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4415 msm_routing_put_audio_mixer),
4416
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304417};
4418
4419static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4420 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4421 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4422 msm_routing_put_audio_mixer),
4423 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4424 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4425 msm_routing_put_audio_mixer),
4426 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4427 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4428 msm_routing_put_audio_mixer),
4429 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4430 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4431 msm_routing_put_audio_mixer),
4432 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4433 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4434 msm_routing_put_audio_mixer),
4435 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4436 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4437 msm_routing_put_audio_mixer),
4438 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4439 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4440 msm_routing_put_audio_mixer),
4441 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4442 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4443 msm_routing_put_audio_mixer),
4444 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4445 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4446 msm_routing_put_audio_mixer),
4447 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4448 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4449 msm_routing_put_audio_mixer),
4450 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4451 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4452 msm_routing_put_audio_mixer),
4453 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4454 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4455 msm_routing_put_audio_mixer),
4456 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4457 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4458 msm_routing_put_audio_mixer),
4459 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4460 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4461 msm_routing_put_audio_mixer),
4462 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4463 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4464 msm_routing_put_audio_mixer),
4465 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4466 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4467 msm_routing_put_audio_mixer),
4468 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4469 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4470 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304471 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4472 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4473 msm_routing_put_audio_mixer),
4474 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4475 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4476 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304477};
4478
4479static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4480 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4481 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4482 msm_routing_put_audio_mixer),
4483};
4484
4485static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4486 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4487 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4488 msm_routing_put_audio_mixer),
4489 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4490 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4491 msm_routing_put_audio_mixer),
4492 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4493 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4494 msm_routing_put_audio_mixer),
4495 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4496 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4497 msm_routing_put_audio_mixer),
4498 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4499 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4500 msm_routing_put_audio_mixer),
4501 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4502 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4503 msm_routing_put_audio_mixer),
4504 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4505 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4506 msm_routing_put_audio_mixer),
4507 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4508 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4509 msm_routing_put_audio_mixer),
4510 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4511 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4512 msm_routing_put_audio_mixer),
4513 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4514 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4515 msm_routing_put_audio_mixer),
4516 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4517 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4518 msm_routing_put_audio_mixer),
4519 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4520 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4521 msm_routing_put_audio_mixer),
4522 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4523 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4524 msm_routing_put_audio_mixer),
4525 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4526 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4527 msm_routing_put_audio_mixer),
4528 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4529 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4530 msm_routing_put_audio_mixer),
4531 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4532 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4533 msm_routing_put_audio_mixer),
4534 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4535 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4536 msm_routing_put_audio_mixer),
4537 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4538 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4539 msm_routing_put_audio_mixer),
4540 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4541 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4542 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304543 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4544 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4545 msm_routing_put_audio_mixer),
4546 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4547 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4548 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304549};
4550
4551static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4552 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4553 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4554 msm_routing_put_audio_mixer),
4555 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4556 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4557 msm_routing_put_audio_mixer),
4558 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4559 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4560 msm_routing_put_audio_mixer),
4561 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4562 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4563 msm_routing_put_audio_mixer),
4564 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4565 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4566 msm_routing_put_audio_mixer),
4567 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4568 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4569 msm_routing_put_audio_mixer),
4570 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4571 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4572 msm_routing_put_audio_mixer),
4573 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4574 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4575 msm_routing_put_audio_mixer),
4576 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4577 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4578 msm_routing_put_audio_mixer),
4579 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4580 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4581 msm_routing_put_audio_mixer),
4582 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4583 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4584 msm_routing_put_audio_mixer),
4585 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4586 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4587 msm_routing_put_audio_mixer),
4588 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4589 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4590 msm_routing_put_audio_mixer),
4591 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4592 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4593 msm_routing_put_audio_mixer),
4594 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4595 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4596 msm_routing_put_audio_mixer),
4597 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4598 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4599 msm_routing_put_audio_mixer),
4600 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4601 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4602 msm_routing_put_audio_mixer),
4603 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4604 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4605 msm_routing_put_audio_mixer),
4606 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4607 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4608 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304609 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_MI2S_RX,
4610 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4611 msm_routing_put_audio_mixer),
4612 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_MI2S_RX,
4613 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4614 msm_routing_put_audio_mixer),
4615
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304616};
4617
4618static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4619 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4620 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4621 msm_routing_put_audio_mixer),
4622 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4623 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4624 msm_routing_put_audio_mixer),
4625 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4626 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4627 msm_routing_put_audio_mixer),
4628 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4629 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4630 msm_routing_put_audio_mixer),
4631 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4632 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4633 msm_routing_put_audio_mixer),
4634 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4635 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4636 msm_routing_put_audio_mixer),
4637 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4638 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4639 msm_routing_put_audio_mixer),
4640 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4641 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4642 msm_routing_put_audio_mixer),
4643 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4644 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4645 msm_routing_put_audio_mixer),
4646 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4647 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4648 msm_routing_put_audio_mixer),
4649 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4650 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4651 msm_routing_put_audio_mixer),
4652 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4653 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4654 msm_routing_put_audio_mixer),
4655 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4656 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4657 msm_routing_put_audio_mixer),
4658 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4659 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4660 msm_routing_put_audio_mixer),
4661 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4662 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4663 msm_routing_put_audio_mixer),
4664 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4665 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4666 msm_routing_put_audio_mixer),
4667};
4668
4669static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4670 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4671 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4672 msm_routing_put_audio_mixer),
4673 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4674 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4675 msm_routing_put_audio_mixer),
4676 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4677 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4678 msm_routing_put_audio_mixer),
4679 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4680 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4681 msm_routing_put_audio_mixer),
4682 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4683 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4684 msm_routing_put_audio_mixer),
4685 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4686 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4687 msm_routing_put_audio_mixer),
4688 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4689 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4690 msm_routing_put_audio_mixer),
4691 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4692 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4693 msm_routing_put_audio_mixer),
4694 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4695 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4696 msm_routing_put_audio_mixer),
4697 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4698 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4699 msm_routing_put_audio_mixer),
4700 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4701 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4702 msm_routing_put_audio_mixer),
4703 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4704 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4705 msm_routing_put_audio_mixer),
4706 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4707 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4708 msm_routing_put_audio_mixer),
4709 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4710 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4711 msm_routing_put_audio_mixer),
4712 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4713 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4714 msm_routing_put_audio_mixer),
4715 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4716 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4717 msm_routing_put_audio_mixer),
4718};
4719
4720static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4721 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4722 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4723 msm_routing_put_audio_mixer),
4724 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4725 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4726 msm_routing_put_audio_mixer),
4727 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4728 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4729 msm_routing_put_audio_mixer),
4730 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4731 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4732 msm_routing_put_audio_mixer),
4733 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4734 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4735 msm_routing_put_audio_mixer),
4736 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4737 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4738 msm_routing_put_audio_mixer),
4739 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4740 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4741 msm_routing_put_audio_mixer),
4742 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4743 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4744 msm_routing_put_audio_mixer),
4745 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4746 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4747 msm_routing_put_audio_mixer),
4748 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4749 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4750 msm_routing_put_audio_mixer),
4751 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4752 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4753 msm_routing_put_audio_mixer),
4754 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4755 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4756 msm_routing_put_audio_mixer),
4757 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4758 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4759 msm_routing_put_audio_mixer),
4760 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4761 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4762 msm_routing_put_audio_mixer),
4763 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4764 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4765 msm_routing_put_audio_mixer),
4766 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4767 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4768 msm_routing_put_audio_mixer),
4769 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4770 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4771 msm_routing_put_audio_mixer),
4772 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4773 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4774 msm_routing_put_audio_mixer),
4775 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4776 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4777 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304778 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_HDMI_RX,
4779 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4780 msm_routing_put_audio_mixer),
4781 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_HDMI_RX,
4782 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4783 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304784};
4785
4786static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4787 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4788 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4789 msm_routing_put_audio_mixer),
4790 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4791 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4792 msm_routing_put_audio_mixer),
4793 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4794 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4795 msm_routing_put_audio_mixer),
4796 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4797 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4798 msm_routing_put_audio_mixer),
4799 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4800 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4801 msm_routing_put_audio_mixer),
4802 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4803 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4804 msm_routing_put_audio_mixer),
4805 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4806 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4807 msm_routing_put_audio_mixer),
4808 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4809 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4810 msm_routing_put_audio_mixer),
4811 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4812 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4813 msm_routing_put_audio_mixer),
4814 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4815 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4816 msm_routing_put_audio_mixer),
4817 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4818 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4819 msm_routing_put_audio_mixer),
4820 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4821 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4822 msm_routing_put_audio_mixer),
4823 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4824 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4825 msm_routing_put_audio_mixer),
4826 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4827 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4828 msm_routing_put_audio_mixer),
4829 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4830 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4831 msm_routing_put_audio_mixer),
4832 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4833 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4834 msm_routing_put_audio_mixer),
4835};
4836
4837 /* incall music delivery mixer */
4838static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4839 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4840 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4841 msm_routing_put_audio_mixer),
4842 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4843 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4844 msm_routing_put_audio_mixer),
4845 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4846 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4847 msm_routing_put_audio_mixer),
4848 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4849 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4850 msm_routing_put_audio_mixer),
4851};
4852
4853static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4854 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4855 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4856 msm_routing_put_audio_mixer),
4857 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4858 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4859 msm_routing_put_audio_mixer),
4860 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4861 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4862 msm_routing_put_audio_mixer),
4863 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4864 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4865 msm_routing_put_audio_mixer),
4866};
4867
4868static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4869 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4870 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4871 msm_routing_put_audio_mixer),
4872 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4873 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4874 msm_routing_put_audio_mixer),
4875 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4876 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4877 msm_routing_put_audio_mixer),
4878 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4879 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4880 msm_routing_put_audio_mixer),
4881};
4882
4883static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
4884 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4885 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4886 msm_routing_put_audio_mixer),
4887 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4888 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4889 msm_routing_put_audio_mixer),
4890 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4891 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4892 msm_routing_put_audio_mixer),
4893 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4894 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4895 msm_routing_put_audio_mixer),
4896 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4897 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4898 msm_routing_put_audio_mixer),
4899 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4900 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4901 msm_routing_put_audio_mixer),
4902 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4903 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4904 msm_routing_put_audio_mixer),
4905 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4906 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4907 msm_routing_put_audio_mixer),
4908 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4909 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4910 msm_routing_put_audio_mixer),
4911 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4912 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4913 msm_routing_put_audio_mixer),
4914 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4915 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4916 msm_routing_put_audio_mixer),
4917 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4918 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4919 msm_routing_put_audio_mixer),
4920 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4921 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4922 msm_routing_put_audio_mixer),
4923 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4924 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4925 msm_routing_put_audio_mixer),
4926 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4927 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4928 msm_routing_put_audio_mixer),
4929 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4930 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4931 msm_routing_put_audio_mixer),
4932};
4933
4934static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
4935 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4936 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4937 msm_routing_put_audio_mixer),
4938 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4939 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4940 msm_routing_put_audio_mixer),
4941 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4942 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4943 msm_routing_put_audio_mixer),
4944 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4945 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4946 msm_routing_put_audio_mixer),
4947 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4948 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4949 msm_routing_put_audio_mixer),
4950 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4951 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4952 msm_routing_put_audio_mixer),
4953 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4954 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4955 msm_routing_put_audio_mixer),
4956 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4957 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4958 msm_routing_put_audio_mixer),
4959 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4960 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4961 msm_routing_put_audio_mixer),
4962 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4963 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4964 msm_routing_put_audio_mixer),
4965 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4966 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4967 msm_routing_put_audio_mixer),
4968 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4969 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4970 msm_routing_put_audio_mixer),
4971 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4972 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4973 msm_routing_put_audio_mixer),
4974 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4975 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4976 msm_routing_put_audio_mixer),
4977 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4978 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4979 msm_routing_put_audio_mixer),
4980 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4981 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4982 msm_routing_put_audio_mixer),
4983};
4984
4985static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
4986 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
4987 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4988 msm_routing_put_audio_mixer),
4989 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
4990 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4991 msm_routing_put_audio_mixer),
4992 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
4993 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4994 msm_routing_put_audio_mixer),
4995 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
4996 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4997 msm_routing_put_audio_mixer),
4998 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
4999 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5000 msm_routing_put_audio_mixer),
5001 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
5002 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5003 msm_routing_put_audio_mixer),
5004 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
5005 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5006 msm_routing_put_audio_mixer),
5007 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
5008 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5009 msm_routing_put_audio_mixer),
5010 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
5011 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5012 msm_routing_put_audio_mixer),
5013 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
5014 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5015 msm_routing_put_audio_mixer),
5016 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
5017 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5018 msm_routing_put_audio_mixer),
5019 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
5020 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5021 msm_routing_put_audio_mixer),
5022 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
5023 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5024 msm_routing_put_audio_mixer),
5025 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
5026 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5027 msm_routing_put_audio_mixer),
5028 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
5029 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5030 msm_routing_put_audio_mixer),
5031 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
5032 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5033 msm_routing_put_audio_mixer),
5034};
5035
5036static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
5037 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5038 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5039 msm_routing_put_audio_mixer),
5040 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5041 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5042 msm_routing_put_audio_mixer),
5043 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5044 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5045 msm_routing_put_audio_mixer),
5046 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5047 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5048 msm_routing_put_audio_mixer),
5049 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5050 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5051 msm_routing_put_audio_mixer),
5052 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5053 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5054 msm_routing_put_audio_mixer),
5055 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5056 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5057 msm_routing_put_audio_mixer),
5058 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5059 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5060 msm_routing_put_audio_mixer),
5061 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5062 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5063 msm_routing_put_audio_mixer),
5064 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5065 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5066 msm_routing_put_audio_mixer),
5067 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5068 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5069 msm_routing_put_audio_mixer),
5070 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5071 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5072 msm_routing_put_audio_mixer),
5073 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5074 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5075 msm_routing_put_audio_mixer),
5076 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5077 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5078 msm_routing_put_audio_mixer),
5079 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5080 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5081 msm_routing_put_audio_mixer),
5082 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5083 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5084 msm_routing_put_audio_mixer),
5085 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5086 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5087 msm_routing_put_audio_mixer),
5088 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5089 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5090 msm_routing_put_audio_mixer),
5091 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5092 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5093 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305094 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5095 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5096 msm_routing_put_audio_mixer),
5097 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5098 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5099 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305100};
5101
5102static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
5103 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5104 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5105 msm_routing_put_audio_mixer),
5106 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5107 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5108 msm_routing_put_audio_mixer),
5109 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5110 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5111 msm_routing_put_audio_mixer),
5112 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5113 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5114 msm_routing_put_audio_mixer),
5115 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5116 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5117 msm_routing_put_audio_mixer),
5118 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5119 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5120 msm_routing_put_audio_mixer),
5121 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5122 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5123 msm_routing_put_audio_mixer),
5124 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5125 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5126 msm_routing_put_audio_mixer),
5127 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5128 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5129 msm_routing_put_audio_mixer),
5130 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5131 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5132 msm_routing_put_audio_mixer),
5133 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5134 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5135 msm_routing_put_audio_mixer),
5136 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5137 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5138 msm_routing_put_audio_mixer),
5139 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5140 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5141 msm_routing_put_audio_mixer),
5142 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5143 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5144 msm_routing_put_audio_mixer),
5145 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5146 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5147 msm_routing_put_audio_mixer),
5148 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5149 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5150 msm_routing_put_audio_mixer),
5151};
5152
5153static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5154 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5155 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5156 msm_routing_put_audio_mixer),
5157 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5158 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5159 msm_routing_put_audio_mixer),
5160 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5161 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5162 msm_routing_put_audio_mixer),
5163 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5164 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5165 msm_routing_put_audio_mixer),
5166 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5167 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5168 msm_routing_put_audio_mixer),
5169 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5170 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5171 msm_routing_put_audio_mixer),
5172 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5173 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5174 msm_routing_put_audio_mixer),
5175 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5176 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5177 msm_routing_put_audio_mixer),
5178 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5179 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5180 msm_routing_put_audio_mixer),
5181 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5182 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5183 msm_routing_put_audio_mixer),
5184 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5185 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5186 msm_routing_put_audio_mixer),
5187 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5188 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5189 msm_routing_put_audio_mixer),
5190 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5191 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5192 msm_routing_put_audio_mixer),
5193 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5194 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5195 msm_routing_put_audio_mixer),
5196 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5197 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5198 msm_routing_put_audio_mixer),
5199 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5200 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5201 msm_routing_put_audio_mixer),
5202 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5203 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5204 msm_routing_put_audio_mixer),
5205 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5206 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5207 msm_routing_put_audio_mixer),
5208 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5209 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5210 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305211 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_FM_RX,
5212 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5213 msm_routing_put_audio_mixer),
5214 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_FM_RX,
5215 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5216 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305217};
5218
5219static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5220 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5221 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5222 msm_routing_put_audio_mixer),
5223 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5224 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5225 msm_routing_put_audio_mixer),
5226 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5227 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5228 msm_routing_put_audio_mixer),
5229 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5230 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5231 msm_routing_put_audio_mixer),
5232 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5233 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5234 msm_routing_put_audio_mixer),
5235 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5236 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5237 msm_routing_put_audio_mixer),
5238 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5239 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5240 msm_routing_put_audio_mixer),
5241 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5242 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5243 msm_routing_put_audio_mixer),
5244 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5245 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5246 msm_routing_put_audio_mixer),
5247 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5248 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5249 msm_routing_put_audio_mixer),
5250 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5251 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5252 msm_routing_put_audio_mixer),
5253 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5254 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5255 msm_routing_put_audio_mixer),
5256 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5257 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5258 msm_routing_put_audio_mixer),
5259 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5260 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5261 msm_routing_put_audio_mixer),
5262 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5263 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5264 msm_routing_put_audio_mixer),
5265 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5266 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5267 msm_routing_put_audio_mixer),
5268 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5269 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5270 msm_routing_put_audio_mixer),
5271 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5272 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5273 msm_routing_put_audio_mixer),
5274 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5275 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5276 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305277 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AFE_PCM_RX,
5278 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5279 msm_routing_put_audio_mixer),
5280 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AFE_PCM_RX,
5281 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5282 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305283};
5284
5285static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5286 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5287 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5288 msm_routing_put_audio_mixer),
5289 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5290 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5291 msm_routing_put_audio_mixer),
5292 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5293 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5294 msm_routing_put_audio_mixer),
5295 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5296 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5297 msm_routing_put_audio_mixer),
5298 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5299 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5300 msm_routing_put_audio_mixer),
5301 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5302 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5303 msm_routing_put_audio_mixer),
5304 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5305 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5306 msm_routing_put_audio_mixer),
5307 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5308 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5309 msm_routing_put_audio_mixer),
5310 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5311 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5312 msm_routing_put_audio_mixer),
5313 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5314 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5315 msm_routing_put_audio_mixer),
5316 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5317 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5318 msm_routing_put_audio_mixer),
5319 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5320 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5321 msm_routing_put_audio_mixer),
5322 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5323 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5324 msm_routing_put_audio_mixer),
5325 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5326 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5327 msm_routing_put_audio_mixer),
5328 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5329 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5330 msm_routing_put_audio_mixer),
5331 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5332 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5333 msm_routing_put_audio_mixer),
5334 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5335 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5336 msm_routing_put_audio_mixer),
5337 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5338 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5339 msm_routing_put_audio_mixer),
5340 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5341 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5342 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305343 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AUXPCM_RX,
5344 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5345 msm_routing_put_audio_mixer),
5346 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AUXPCM_RX,
5347 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5348 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305349};
5350
5351static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5352 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5353 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5354 msm_routing_put_audio_mixer),
5355 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5356 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5357 msm_routing_put_audio_mixer),
5358 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5359 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5360 msm_routing_put_audio_mixer),
5361 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5362 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5363 msm_routing_put_audio_mixer),
5364 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5365 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5366 msm_routing_put_audio_mixer),
5367 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5368 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5369 msm_routing_put_audio_mixer),
5370 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5371 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5372 msm_routing_put_audio_mixer),
5373 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5374 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5375 msm_routing_put_audio_mixer),
5376 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5377 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5378 msm_routing_put_audio_mixer),
5379 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5380 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5381 msm_routing_put_audio_mixer),
5382 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5383 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5384 msm_routing_put_audio_mixer),
5385 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5386 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5387 msm_routing_put_audio_mixer),
5388 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5389 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5390 msm_routing_put_audio_mixer),
5391 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5392 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5393 msm_routing_put_audio_mixer),
5394 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5395 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5396 msm_routing_put_audio_mixer),
5397 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5398 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5399 msm_routing_put_audio_mixer),
5400 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5401 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5402 msm_routing_put_audio_mixer),
5403 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5404 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5405 msm_routing_put_audio_mixer),
5406 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5407 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5408 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305409 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5410 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5411 msm_routing_put_audio_mixer),
5412 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5413 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5414 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305415};
5416
5417static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5418 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5419 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5420 msm_routing_put_audio_mixer),
5421 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5422 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5423 msm_routing_put_audio_mixer),
5424 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5425 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5426 msm_routing_put_audio_mixer),
5427 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5428 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5429 msm_routing_put_audio_mixer),
5430 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5431 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5432 msm_routing_put_audio_mixer),
5433 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5434 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5435 msm_routing_put_audio_mixer),
5436 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5437 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5438 msm_routing_put_audio_mixer),
5439 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5440 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5441 msm_routing_put_audio_mixer),
5442 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5443 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5444 msm_routing_put_audio_mixer),
5445 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5446 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5447 msm_routing_put_audio_mixer),
5448 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5449 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5450 msm_routing_put_audio_mixer),
5451 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5452 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5453 msm_routing_put_audio_mixer),
5454 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5455 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5456 msm_routing_put_audio_mixer),
5457 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5458 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5459 msm_routing_put_audio_mixer),
5460 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5461 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5462 msm_routing_put_audio_mixer),
5463 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5464 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5465 msm_routing_put_audio_mixer),
5466};
5467
5468static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5469 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5470 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5471 msm_routing_put_audio_mixer),
5472 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5473 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5474 msm_routing_put_audio_mixer),
5475 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5476 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5477 msm_routing_put_audio_mixer),
5478 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5479 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5480 msm_routing_put_audio_mixer),
5481 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5482 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5483 msm_routing_put_audio_mixer),
5484 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5485 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5486 msm_routing_put_audio_mixer),
5487 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5488 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5489 msm_routing_put_audio_mixer),
5490 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5491 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5492 msm_routing_put_audio_mixer),
5493 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5494 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5495 msm_routing_put_audio_mixer),
5496 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5497 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5498 msm_routing_put_audio_mixer),
5499 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5500 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5501 msm_routing_put_audio_mixer),
5502 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5503 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5504 msm_routing_put_audio_mixer),
5505 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5506 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5507 msm_routing_put_audio_mixer),
5508 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5509 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5510 msm_routing_put_audio_mixer),
5511 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5512 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5513 msm_routing_put_audio_mixer),
5514 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5515 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5516 msm_routing_put_audio_mixer),
5517};
5518
Rohit Kumara5077932017-09-10 22:05:05 +05305519static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5520 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5521 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5522 msm_routing_put_audio_mixer),
5523 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5524 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5525 msm_routing_put_audio_mixer),
5526 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5527 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5528 msm_routing_put_audio_mixer),
5529 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5530 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5531 msm_routing_put_audio_mixer),
5532 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5533 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5534 msm_routing_put_audio_mixer),
5535 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5536 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5537 msm_routing_put_audio_mixer),
5538 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5539 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5540 msm_routing_put_audio_mixer),
5541 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5542 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5543 msm_routing_put_audio_mixer),
5544 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5545 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5546 msm_routing_put_audio_mixer),
5547 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5548 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5549 msm_routing_put_audio_mixer),
5550 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5551 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5552 msm_routing_put_audio_mixer),
5553 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5554 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5555 msm_routing_put_audio_mixer),
5556 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5557 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5558 msm_routing_put_audio_mixer),
5559 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5560 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5561 msm_routing_put_audio_mixer),
5562 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5563 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5564 msm_routing_put_audio_mixer),
5565 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5566 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5567 msm_routing_put_audio_mixer),
5568};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305569static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5570 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5571 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5572 msm_routing_put_audio_mixer),
5573 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5574 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5575 msm_routing_put_audio_mixer),
5576 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5577 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5578 msm_routing_put_audio_mixer),
5579 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5580 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5581 msm_routing_put_audio_mixer),
5582 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5583 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5584 msm_routing_put_audio_mixer),
5585 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5586 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5587 msm_routing_put_audio_mixer),
5588 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5589 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5590 msm_routing_put_audio_mixer),
5591 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5592 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5593 msm_routing_put_audio_mixer),
5594 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5595 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5596 msm_routing_put_audio_mixer),
5597 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5598 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5599 msm_routing_put_audio_mixer),
5600 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5601 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5602 msm_routing_put_audio_mixer),
5603 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5604 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5605 msm_routing_put_audio_mixer),
5606 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5607 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5608 msm_routing_put_audio_mixer),
5609 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5610 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5611 msm_routing_put_audio_mixer),
5612 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5613 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5614 msm_routing_put_audio_mixer),
5615 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5616 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5617 msm_routing_put_audio_mixer),
5618};
5619
5620static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5621 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5622 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5623 msm_routing_put_audio_mixer),
5624 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5625 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5626 msm_routing_put_audio_mixer),
5627 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5628 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5629 msm_routing_put_audio_mixer),
5630 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5631 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5632 msm_routing_put_audio_mixer),
5633 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5634 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5635 msm_routing_put_audio_mixer),
5636 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5637 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5638 msm_routing_put_audio_mixer),
5639 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5640 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5641 msm_routing_put_audio_mixer),
5642 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5643 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5644 msm_routing_put_audio_mixer),
5645 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5646 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5647 msm_routing_put_audio_mixer),
5648 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5649 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5650 msm_routing_put_audio_mixer),
5651 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5652 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5653 msm_routing_put_audio_mixer),
5654 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5655 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5656 msm_routing_put_audio_mixer),
5657 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5658 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5659 msm_routing_put_audio_mixer),
5660 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5661 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5662 msm_routing_put_audio_mixer),
5663 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5664 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5665 msm_routing_put_audio_mixer),
5666 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5667 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5668 msm_routing_put_audio_mixer),
5669};
5670
5671static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5672 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5673 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5674 msm_routing_put_audio_mixer),
5675 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5676 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5677 msm_routing_put_audio_mixer),
5678 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5679 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5680 msm_routing_put_audio_mixer),
5681 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5682 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5683 msm_routing_put_audio_mixer),
5684 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5685 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5686 msm_routing_put_audio_mixer),
5687 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5688 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5689 msm_routing_put_audio_mixer),
5690 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5691 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5692 msm_routing_put_audio_mixer),
5693 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5694 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5695 msm_routing_put_audio_mixer),
5696 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5697 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5698 msm_routing_put_audio_mixer),
5699 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5700 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5701 msm_routing_put_audio_mixer),
5702 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5703 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5704 msm_routing_put_audio_mixer),
5705 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5706 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5707 msm_routing_put_audio_mixer),
5708 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5709 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5710 msm_routing_put_audio_mixer),
5711 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5712 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5713 msm_routing_put_audio_mixer),
5714 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5715 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5716 msm_routing_put_audio_mixer),
5717 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5718 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5719 msm_routing_put_audio_mixer),
5720};
5721
5722static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5723 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5724 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5725 msm_routing_put_audio_mixer),
5726 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5727 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5728 msm_routing_put_audio_mixer),
5729 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5730 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5731 msm_routing_put_audio_mixer),
5732 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5733 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5734 msm_routing_put_audio_mixer),
5735 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5736 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5737 msm_routing_put_audio_mixer),
5738 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5739 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5740 msm_routing_put_audio_mixer),
5741 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5742 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5743 msm_routing_put_audio_mixer),
5744 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5745 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5746 msm_routing_put_audio_mixer),
5747 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5748 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5749 msm_routing_put_audio_mixer),
5750 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5751 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5752 msm_routing_put_audio_mixer),
5753 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5754 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5755 msm_routing_put_audio_mixer),
5756 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5757 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5758 msm_routing_put_audio_mixer),
5759 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5760 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5761 msm_routing_put_audio_mixer),
5762 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5763 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5764 msm_routing_put_audio_mixer),
5765 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5766 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5767 msm_routing_put_audio_mixer),
5768 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5769 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5770 msm_routing_put_audio_mixer),
5771};
5772
5773static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5774 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5775 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5776 msm_routing_put_audio_mixer),
5777 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5778 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5779 msm_routing_put_audio_mixer),
5780 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5781 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5782 msm_routing_put_audio_mixer),
5783 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5784 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5785 msm_routing_put_audio_mixer),
5786 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5787 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5788 msm_routing_put_audio_mixer),
5789 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5790 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5791 msm_routing_put_audio_mixer),
5792 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5793 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5794 msm_routing_put_audio_mixer),
5795 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5796 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5797 msm_routing_put_audio_mixer),
5798 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5799 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5800 msm_routing_put_audio_mixer),
5801 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5802 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5803 msm_routing_put_audio_mixer),
5804 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5805 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5806 msm_routing_put_audio_mixer),
5807 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5808 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5809 msm_routing_put_audio_mixer),
5810 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5811 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5812 msm_routing_put_audio_mixer),
5813 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5814 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5815 msm_routing_put_audio_mixer),
5816 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5817 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5818 msm_routing_put_audio_mixer),
5819 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5820 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5821 msm_routing_put_audio_mixer),
5822};
5823
5824static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5825 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5826 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5827 msm_routing_put_audio_mixer),
5828 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5829 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5830 msm_routing_put_audio_mixer),
5831 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5832 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5833 msm_routing_put_audio_mixer),
5834 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5835 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5836 msm_routing_put_audio_mixer),
5837 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5838 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5839 msm_routing_put_audio_mixer),
5840 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5841 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5842 msm_routing_put_audio_mixer),
5843 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5844 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5845 msm_routing_put_audio_mixer),
5846 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5847 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5848 msm_routing_put_audio_mixer),
5849 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5850 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5851 msm_routing_put_audio_mixer),
5852 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5853 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5854 msm_routing_put_audio_mixer),
5855 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5856 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5857 msm_routing_put_audio_mixer),
5858 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5859 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5860 msm_routing_put_audio_mixer),
5861 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5862 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5863 msm_routing_put_audio_mixer),
5864 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5865 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5866 msm_routing_put_audio_mixer),
5867 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5868 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5869 msm_routing_put_audio_mixer),
5870 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5871 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5872 msm_routing_put_audio_mixer),
5873};
5874
5875static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
5876 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5877 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5878 msm_routing_put_audio_mixer),
5879 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5880 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5881 msm_routing_put_audio_mixer),
5882 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5883 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5884 msm_routing_put_audio_mixer),
5885 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5886 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5887 msm_routing_put_audio_mixer),
5888 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5889 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5890 msm_routing_put_audio_mixer),
5891 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5892 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5893 msm_routing_put_audio_mixer),
5894 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5895 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5896 msm_routing_put_audio_mixer),
5897 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5898 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5899 msm_routing_put_audio_mixer),
5900 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5901 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5902 msm_routing_put_audio_mixer),
5903 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5904 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5905 msm_routing_put_audio_mixer),
5906 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5907 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5908 msm_routing_put_audio_mixer),
5909 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5910 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5911 msm_routing_put_audio_mixer),
5912 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5913 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5914 msm_routing_put_audio_mixer),
5915 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5916 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5917 msm_routing_put_audio_mixer),
5918 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5919 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5920 msm_routing_put_audio_mixer),
5921 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5922 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5923 msm_routing_put_audio_mixer),
5924};
5925
5926static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
5927 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5928 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5929 msm_routing_put_audio_mixer),
5930 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5931 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5932 msm_routing_put_audio_mixer),
5933 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5934 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5935 msm_routing_put_audio_mixer),
5936 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5937 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5938 msm_routing_put_audio_mixer),
5939 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5940 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5941 msm_routing_put_audio_mixer),
5942 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5943 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5944 msm_routing_put_audio_mixer),
5945 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5946 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5947 msm_routing_put_audio_mixer),
5948 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5949 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5950 msm_routing_put_audio_mixer),
5951 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5952 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5953 msm_routing_put_audio_mixer),
5954 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5955 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5956 msm_routing_put_audio_mixer),
5957 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5958 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5959 msm_routing_put_audio_mixer),
5960 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5961 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5962 msm_routing_put_audio_mixer),
5963 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5964 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5965 msm_routing_put_audio_mixer),
5966 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5967 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5968 msm_routing_put_audio_mixer),
5969 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5970 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5971 msm_routing_put_audio_mixer),
5972 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5973 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5974 msm_routing_put_audio_mixer),
5975};
5976
5977static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
5978 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5979 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5980 msm_routing_put_audio_mixer),
5981 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5982 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5983 msm_routing_put_audio_mixer),
5984 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5985 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5986 msm_routing_put_audio_mixer),
5987 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5988 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5989 msm_routing_put_audio_mixer),
5990 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5991 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5992 msm_routing_put_audio_mixer),
5993 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5994 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5995 msm_routing_put_audio_mixer),
5996 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5997 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5998 msm_routing_put_audio_mixer),
5999 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6000 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6001 msm_routing_put_audio_mixer),
6002 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6003 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6004 msm_routing_put_audio_mixer),
6005 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6006 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6007 msm_routing_put_audio_mixer),
6008 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6009 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6010 msm_routing_put_audio_mixer),
6011 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6012 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6013 msm_routing_put_audio_mixer),
6014 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6015 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6016 msm_routing_put_audio_mixer),
6017 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6018 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6019 msm_routing_put_audio_mixer),
6020 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6021 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6022 msm_routing_put_audio_mixer),
6023 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6024 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6025 msm_routing_put_audio_mixer),
6026};
6027
6028static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
6029 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6030 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6031 msm_routing_put_audio_mixer),
6032 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6033 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6034 msm_routing_put_audio_mixer),
6035 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6036 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6037 msm_routing_put_audio_mixer),
6038 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6039 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6040 msm_routing_put_audio_mixer),
6041 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6042 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6043 msm_routing_put_audio_mixer),
6044 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6045 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6046 msm_routing_put_audio_mixer),
6047 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6048 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6049 msm_routing_put_audio_mixer),
6050 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6051 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6052 msm_routing_put_audio_mixer),
6053 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6054 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6055 msm_routing_put_audio_mixer),
6056 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6057 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6058 msm_routing_put_audio_mixer),
6059 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6060 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6061 msm_routing_put_audio_mixer),
6062 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6063 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6064 msm_routing_put_audio_mixer),
6065 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6066 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6067 msm_routing_put_audio_mixer),
6068 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6069 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6070 msm_routing_put_audio_mixer),
6071 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6072 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6073 msm_routing_put_audio_mixer),
6074 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6075 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6076 msm_routing_put_audio_mixer),
6077};
6078
6079static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
6080 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6081 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6082 msm_routing_put_audio_mixer),
6083 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6084 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6085 msm_routing_put_audio_mixer),
6086 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6087 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6088 msm_routing_put_audio_mixer),
6089 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6090 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6091 msm_routing_put_audio_mixer),
6092 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6093 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6094 msm_routing_put_audio_mixer),
6095 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6096 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6097 msm_routing_put_audio_mixer),
6098 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6099 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6100 msm_routing_put_audio_mixer),
6101 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6102 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6103 msm_routing_put_audio_mixer),
6104 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6105 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6106 msm_routing_put_audio_mixer),
6107 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6108 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6109 msm_routing_put_audio_mixer),
6110 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6111 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6112 msm_routing_put_audio_mixer),
6113 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6114 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6115 msm_routing_put_audio_mixer),
6116 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6117 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6118 msm_routing_put_audio_mixer),
6119 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6120 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6121 msm_routing_put_audio_mixer),
6122 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6123 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6124 msm_routing_put_audio_mixer),
6125 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6126 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6127 msm_routing_put_audio_mixer),
6128};
6129
6130static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
6131 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6132 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6133 msm_routing_put_audio_mixer),
6134 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6135 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6136 msm_routing_put_audio_mixer),
6137 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6138 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6139 msm_routing_put_audio_mixer),
6140 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6141 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6142 msm_routing_put_audio_mixer),
6143 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6144 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6145 msm_routing_put_audio_mixer),
6146 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6147 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6148 msm_routing_put_audio_mixer),
6149 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6150 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6151 msm_routing_put_audio_mixer),
6152 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6153 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6154 msm_routing_put_audio_mixer),
6155 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6156 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6157 msm_routing_put_audio_mixer),
6158 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6159 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6160 msm_routing_put_audio_mixer),
6161 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6162 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6163 msm_routing_put_audio_mixer),
6164 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6165 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6166 msm_routing_put_audio_mixer),
6167 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6168 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6169 msm_routing_put_audio_mixer),
6170 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6171 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6172 msm_routing_put_audio_mixer),
6173 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6174 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6175 msm_routing_put_audio_mixer),
6176 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6177 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6178 msm_routing_put_audio_mixer),
6179};
6180
6181static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
6182 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6183 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6184 msm_routing_put_audio_mixer),
6185 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6186 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6187 msm_routing_put_audio_mixer),
6188 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6189 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6190 msm_routing_put_audio_mixer),
6191 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6192 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6193 msm_routing_put_audio_mixer),
6194 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6195 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6196 msm_routing_put_audio_mixer),
6197 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6198 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6199 msm_routing_put_audio_mixer),
6200 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6201 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6202 msm_routing_put_audio_mixer),
6203 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6204 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6205 msm_routing_put_audio_mixer),
6206 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6207 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6208 msm_routing_put_audio_mixer),
6209 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6210 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6211 msm_routing_put_audio_mixer),
6212 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6213 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6214 msm_routing_put_audio_mixer),
6215 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6216 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6217 msm_routing_put_audio_mixer),
6218 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6219 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6220 msm_routing_put_audio_mixer),
6221 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6222 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6223 msm_routing_put_audio_mixer),
6224 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6225 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6226 msm_routing_put_audio_mixer),
6227 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6228 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6229 msm_routing_put_audio_mixer),
6230};
6231
6232static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
6233 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6234 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6235 msm_routing_put_audio_mixer),
6236 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6237 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6238 msm_routing_put_audio_mixer),
6239 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6240 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6241 msm_routing_put_audio_mixer),
6242 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6243 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6244 msm_routing_put_audio_mixer),
6245 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6246 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6247 msm_routing_put_audio_mixer),
6248 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6249 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6250 msm_routing_put_audio_mixer),
6251 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6252 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6253 msm_routing_put_audio_mixer),
6254 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6255 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6256 msm_routing_put_audio_mixer),
6257 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6258 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6259 msm_routing_put_audio_mixer),
6260 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6261 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6262 msm_routing_put_audio_mixer),
6263 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6264 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6265 msm_routing_put_audio_mixer),
6266 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6267 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6268 msm_routing_put_audio_mixer),
6269 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6270 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6271 msm_routing_put_audio_mixer),
6272 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6273 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6274 msm_routing_put_audio_mixer),
6275 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6276 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6277 msm_routing_put_audio_mixer),
6278 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6279 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6280 msm_routing_put_audio_mixer),
6281};
6282
6283static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6284 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6285 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6286 msm_routing_put_audio_mixer),
6287 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6288 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6289 msm_routing_put_audio_mixer),
6290 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6291 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6292 msm_routing_put_audio_mixer),
6293 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6294 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6295 msm_routing_put_audio_mixer),
6296 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6297 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6298 msm_routing_put_audio_mixer),
6299 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6300 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6301 msm_routing_put_audio_mixer),
6302 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6303 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6304 msm_routing_put_audio_mixer),
6305 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6306 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6307 msm_routing_put_audio_mixer),
6308 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6309 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6310 msm_routing_put_audio_mixer),
6311 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6312 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6313 msm_routing_put_audio_mixer),
6314 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6315 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6316 msm_routing_put_audio_mixer),
6317 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6318 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6319 msm_routing_put_audio_mixer),
6320 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6321 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6322 msm_routing_put_audio_mixer),
6323 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6324 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6325 msm_routing_put_audio_mixer),
6326 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6327 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6328 msm_routing_put_audio_mixer),
6329 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6330 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6331 msm_routing_put_audio_mixer),
6332};
6333
6334static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6335 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6336 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6337 msm_routing_put_audio_mixer),
6338 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6339 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6340 msm_routing_put_audio_mixer),
6341 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6342 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6343 msm_routing_put_audio_mixer),
6344 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6345 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6346 msm_routing_put_audio_mixer),
6347 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6348 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6349 msm_routing_put_audio_mixer),
6350 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6351 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6352 msm_routing_put_audio_mixer),
6353 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6354 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6355 msm_routing_put_audio_mixer),
6356 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6357 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6358 msm_routing_put_audio_mixer),
6359 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6360 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6361 msm_routing_put_audio_mixer),
6362 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6363 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6364 msm_routing_put_audio_mixer),
6365 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6366 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6367 msm_routing_put_audio_mixer),
6368 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6369 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6370 msm_routing_put_audio_mixer),
6371 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6372 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6373 msm_routing_put_audio_mixer),
6374 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6375 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6376 msm_routing_put_audio_mixer),
6377 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6378 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6379 msm_routing_put_audio_mixer),
6380 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6381 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6382 msm_routing_put_audio_mixer),
6383};
6384
6385static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6386 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6387 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6388 msm_routing_put_audio_mixer),
6389 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6390 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6391 msm_routing_put_audio_mixer),
6392 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6393 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6394 msm_routing_put_audio_mixer),
6395 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6396 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6397 msm_routing_put_audio_mixer),
6398 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6399 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6400 msm_routing_put_audio_mixer),
6401 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6402 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6403 msm_routing_put_audio_mixer),
6404 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6405 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6406 msm_routing_put_audio_mixer),
6407 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6408 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6409 msm_routing_put_audio_mixer),
6410 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6411 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6412 msm_routing_put_audio_mixer),
6413 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6414 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6415 msm_routing_put_audio_mixer),
6416 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6417 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6418 msm_routing_put_audio_mixer),
6419 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6420 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6421 msm_routing_put_audio_mixer),
6422 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6423 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6424 msm_routing_put_audio_mixer),
6425 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6426 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6427 msm_routing_put_audio_mixer),
6428 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6429 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6430 msm_routing_put_audio_mixer),
6431 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6432 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6433 msm_routing_put_audio_mixer),
6434 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6435 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6436 msm_routing_put_audio_mixer),
6437};
6438
6439static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6440 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6441 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6442 msm_routing_put_audio_mixer),
6443 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6444 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6445 msm_routing_put_audio_mixer),
6446 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6447 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6448 msm_routing_put_audio_mixer),
6449 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6450 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6451 msm_routing_put_audio_mixer),
6452 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6453 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6454 msm_routing_put_audio_mixer),
6455 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6456 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6457 msm_routing_put_audio_mixer),
6458 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6459 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6460 msm_routing_put_audio_mixer),
6461 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6462 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6463 msm_routing_put_audio_mixer),
6464 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6465 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6466 msm_routing_put_audio_mixer),
6467 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6468 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6469 msm_routing_put_audio_mixer),
6470 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6471 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6472 msm_routing_put_audio_mixer),
6473 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6474 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6475 msm_routing_put_audio_mixer),
6476 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6477 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6478 msm_routing_put_audio_mixer),
6479 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6480 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6481 msm_routing_put_audio_mixer),
6482 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6483 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6484 msm_routing_put_audio_mixer),
6485 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6486 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6487 msm_routing_put_audio_mixer),
6488};
6489
6490static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6491 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6492 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6493 msm_routing_put_audio_mixer),
6494 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6495 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6496 msm_routing_put_audio_mixer),
6497 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6498 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6499 msm_routing_put_audio_mixer),
6500 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6501 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6502 msm_routing_put_audio_mixer),
6503 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6504 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6505 msm_routing_put_audio_mixer),
6506 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6507 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6508 msm_routing_put_audio_mixer),
6509 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6510 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6511 msm_routing_put_audio_mixer),
6512 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6513 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6514 msm_routing_put_audio_mixer),
6515 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6516 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6517 msm_routing_put_audio_mixer),
6518 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6519 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6520 msm_routing_put_audio_mixer),
6521 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6522 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6523 msm_routing_put_audio_mixer),
6524 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6525 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6526 msm_routing_put_audio_mixer),
6527 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6528 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6529 msm_routing_put_audio_mixer),
6530 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6531 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6532 msm_routing_put_audio_mixer),
6533 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6534 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6535 msm_routing_put_audio_mixer),
6536 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6537 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6538 msm_routing_put_audio_mixer),
6539 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6540 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6541 msm_routing_put_audio_mixer),
6542};
6543
6544static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6545 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6546 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6547 msm_routing_put_audio_mixer),
6548 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6549 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6550 msm_routing_put_audio_mixer),
6551 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6552 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6553 msm_routing_put_audio_mixer),
6554 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6555 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6556 msm_routing_put_audio_mixer),
6557 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6558 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6559 msm_routing_put_audio_mixer),
6560 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6561 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6562 msm_routing_put_audio_mixer),
6563 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6564 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6565 msm_routing_put_audio_mixer),
6566 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6567 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6568 msm_routing_put_audio_mixer),
6569 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6570 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6571 msm_routing_put_audio_mixer),
6572 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6573 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6574 msm_routing_put_audio_mixer),
6575 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6576 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6577 msm_routing_put_audio_mixer),
6578 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6579 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6580 msm_routing_put_audio_mixer),
6581 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6582 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6583 msm_routing_put_audio_mixer),
6584 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6585 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6586 msm_routing_put_audio_mixer),
6587 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6588 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6589 msm_routing_put_audio_mixer),
6590 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6591 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6592 msm_routing_put_audio_mixer),
6593 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6594 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6595 msm_routing_put_audio_mixer),
6596};
6597
6598static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6599 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6600 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6601 msm_routing_put_audio_mixer),
6602 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6603 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6604 msm_routing_put_audio_mixer),
6605 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6606 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6607 msm_routing_put_audio_mixer),
6608 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6609 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6610 msm_routing_put_audio_mixer),
6611 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6612 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6613 msm_routing_put_audio_mixer),
6614 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6615 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6616 msm_routing_put_audio_mixer),
6617 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6618 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6619 msm_routing_put_audio_mixer),
6620 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6621 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6622 msm_routing_put_audio_mixer),
6623 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6624 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6625 msm_routing_put_audio_mixer),
6626 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6627 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6628 msm_routing_put_audio_mixer),
6629 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6630 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6631 msm_routing_put_audio_mixer),
6632 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6633 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6634 msm_routing_put_audio_mixer),
6635 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6636 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6637 msm_routing_put_audio_mixer),
6638 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6639 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6640 msm_routing_put_audio_mixer),
6641 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6642 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6643 msm_routing_put_audio_mixer),
6644 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6645 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6646 msm_routing_put_audio_mixer),
6647 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6648 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6649 msm_routing_put_audio_mixer),
6650};
6651
Rohit Kumara5077932017-09-10 22:05:05 +05306652static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6653 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6654 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6655 msm_routing_put_audio_mixer),
6656 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6657 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6658 msm_routing_put_audio_mixer),
6659 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6660 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6661 msm_routing_put_audio_mixer),
6662 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6663 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6664 msm_routing_put_audio_mixer),
6665 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6666 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6667 msm_routing_put_audio_mixer),
6668 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6669 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6670 msm_routing_put_audio_mixer),
6671 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6672 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6673 msm_routing_put_audio_mixer),
6674 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6675 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6676 msm_routing_put_audio_mixer),
6677 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6678 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6679 msm_routing_put_audio_mixer),
6680 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6681 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6682 msm_routing_put_audio_mixer),
6683 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6684 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6685 msm_routing_put_audio_mixer),
6686 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6687 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6688 msm_routing_put_audio_mixer),
6689 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6690 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6691 msm_routing_put_audio_mixer),
6692 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6693 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6694 msm_routing_put_audio_mixer),
6695 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6696 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6697 msm_routing_put_audio_mixer),
6698 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6699 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6700 msm_routing_put_audio_mixer),
6701 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6702 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6703 msm_routing_put_audio_mixer),
6704};
6705
6706static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6707 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6708 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6709 msm_routing_put_audio_mixer),
6710 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6711 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6712 msm_routing_put_audio_mixer),
6713 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6714 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6715 msm_routing_put_audio_mixer),
6716 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6717 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6718 msm_routing_put_audio_mixer),
6719 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6720 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6721 msm_routing_put_audio_mixer),
6722 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6723 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6724 msm_routing_put_audio_mixer),
6725 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6726 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6727 msm_routing_put_audio_mixer),
6728 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6729 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6730 msm_routing_put_audio_mixer),
6731 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6732 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6733 msm_routing_put_audio_mixer),
6734 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6735 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6736 msm_routing_put_audio_mixer),
6737 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6738 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6739 msm_routing_put_audio_mixer),
6740 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6741 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6742 msm_routing_put_audio_mixer),
6743 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6744 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6745 msm_routing_put_audio_mixer),
6746 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6747 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6748 msm_routing_put_audio_mixer),
6749 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6750 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6751 msm_routing_put_audio_mixer),
6752 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6753 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6754 msm_routing_put_audio_mixer),
6755};
6756
6757static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6758 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6759 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6760 msm_routing_put_audio_mixer),
6761 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6762 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6763 msm_routing_put_audio_mixer),
6764 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6765 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6766 msm_routing_put_audio_mixer),
6767 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6768 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6769 msm_routing_put_audio_mixer),
6770 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6771 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6772 msm_routing_put_audio_mixer),
6773 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6774 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6775 msm_routing_put_audio_mixer),
6776 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6777 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6778 msm_routing_put_audio_mixer),
6779 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6780 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6781 msm_routing_put_audio_mixer),
6782 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6783 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6784 msm_routing_put_audio_mixer),
6785 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6786 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6787 msm_routing_put_audio_mixer),
6788 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6789 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6790 msm_routing_put_audio_mixer),
6791 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6792 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6793 msm_routing_put_audio_mixer),
6794 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6795 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6796 msm_routing_put_audio_mixer),
6797 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6798 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6799 msm_routing_put_audio_mixer),
6800 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6801 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6802 msm_routing_put_audio_mixer),
6803 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6804 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6805 msm_routing_put_audio_mixer),
6806 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6807 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6808 msm_routing_put_audio_mixer),
6809};
6810
6811static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6812 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6813 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6814 msm_routing_put_audio_mixer),
6815 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6816 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6817 msm_routing_put_audio_mixer),
6818 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6819 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6820 msm_routing_put_audio_mixer),
6821 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6822 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6823 msm_routing_put_audio_mixer),
6824 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6825 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6826 msm_routing_put_audio_mixer),
6827 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6828 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6829 msm_routing_put_audio_mixer),
6830 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6831 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6832 msm_routing_put_audio_mixer),
6833 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6834 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6835 msm_routing_put_audio_mixer),
6836 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6837 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6838 msm_routing_put_audio_mixer),
6839 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6840 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6841 msm_routing_put_audio_mixer),
6842 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6843 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6844 msm_routing_put_audio_mixer),
6845 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6846 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6847 msm_routing_put_audio_mixer),
6848 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6849 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6850 msm_routing_put_audio_mixer),
6851 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6852 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6853 msm_routing_put_audio_mixer),
6854 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6855 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6856 msm_routing_put_audio_mixer),
6857 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6858 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6859 msm_routing_put_audio_mixer),
6860 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6861 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6862 msm_routing_put_audio_mixer),
6863};
6864
6865static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
6866 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6867 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6868 msm_routing_put_audio_mixer),
6869 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6870 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6871 msm_routing_put_audio_mixer),
6872 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6873 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6874 msm_routing_put_audio_mixer),
6875 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6876 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6877 msm_routing_put_audio_mixer),
6878 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6879 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6880 msm_routing_put_audio_mixer),
6881 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6882 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6883 msm_routing_put_audio_mixer),
6884 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6885 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6886 msm_routing_put_audio_mixer),
6887 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6888 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6889 msm_routing_put_audio_mixer),
6890 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6891 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6892 msm_routing_put_audio_mixer),
6893 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6894 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6895 msm_routing_put_audio_mixer),
6896 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6897 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6898 msm_routing_put_audio_mixer),
6899 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6900 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6901 msm_routing_put_audio_mixer),
6902 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6903 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6904 msm_routing_put_audio_mixer),
6905 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6906 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6907 msm_routing_put_audio_mixer),
6908 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6909 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6910 msm_routing_put_audio_mixer),
6911 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6912 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6913 msm_routing_put_audio_mixer),
6914 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6915 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6916 msm_routing_put_audio_mixer),
6917};
6918
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306919static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
6920 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
6921 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6922 msm_routing_put_audio_mixer),
6923 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6924 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6925 msm_routing_put_audio_mixer),
6926 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6927 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6928 msm_routing_put_audio_mixer),
6929 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6930 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6931 msm_routing_put_audio_mixer),
6932 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6933 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6934 msm_routing_put_audio_mixer),
6935 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6936 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6937 msm_routing_put_audio_mixer),
6938 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6939 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6940 msm_routing_put_audio_mixer),
6941 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6942 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6943 msm_routing_put_audio_mixer),
6944 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6945 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6946 msm_routing_put_audio_mixer),
6947 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6948 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6949 msm_routing_put_audio_mixer),
6950 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6951 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6952 msm_routing_put_audio_mixer),
6953 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6954 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6955 msm_routing_put_audio_mixer),
6956 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6957 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6958 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306959 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
6960 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6961 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306962 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6963 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6964 msm_routing_put_audio_mixer),
6965 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6966 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6967 msm_routing_put_audio_mixer),
6968 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6969 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6970 msm_routing_put_audio_mixer),
6971 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
6972 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6973 msm_routing_put_audio_mixer),
6974 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
6975 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6976 msm_routing_put_audio_mixer),
6977 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
6978 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6979 msm_routing_put_audio_mixer),
6980 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6981 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6982 msm_routing_put_audio_mixer),
6983 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6984 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6985 msm_routing_put_audio_mixer),
6986 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6987 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6988 msm_routing_put_audio_mixer),
6989 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6990 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6991 msm_routing_put_audio_mixer),
6992 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6993 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6994 msm_routing_put_audio_mixer),
6995 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6996 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6997 msm_routing_put_audio_mixer),
6998 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6999 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7000 msm_routing_put_audio_mixer),
7001 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7002 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7003 msm_routing_put_audio_mixer),
7004 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7005 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7006 msm_routing_put_audio_mixer),
7007 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7008 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7009 msm_routing_put_audio_mixer),
7010 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7011 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7012 msm_routing_put_audio_mixer),
7013 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7014 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7015 msm_routing_put_audio_mixer),
7016 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7017 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7018 msm_routing_put_audio_mixer),
7019 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7020 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7021 msm_routing_put_audio_mixer),
7022 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7023 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7024 msm_routing_put_audio_mixer),
7025 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7026 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7027 msm_routing_put_audio_mixer),
7028 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7029 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7030 msm_routing_put_audio_mixer),
7031 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7032 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7033 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307034 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7035 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7036 msm_routing_put_audio_mixer),
7037 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7038 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7039 msm_routing_put_audio_mixer),
7040 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7041 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7042 msm_routing_put_audio_mixer),
7043 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7044 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7045 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307046 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7047 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7048 msm_routing_put_audio_mixer),
7049 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7050 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7051 msm_routing_put_audio_mixer),
7052 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7053 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7054 msm_routing_put_audio_mixer),
7055};
7056
7057static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
7058 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7059 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7060 msm_routing_put_audio_mixer),
7061 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7062 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7063 msm_routing_put_audio_mixer),
7064 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7065 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7066 msm_routing_put_audio_mixer),
7067 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7068 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7069 msm_routing_put_audio_mixer),
7070 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7071 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7072 msm_routing_put_audio_mixer),
7073 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7074 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7075 msm_routing_put_audio_mixer),
7076 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7077 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7078 msm_routing_put_audio_mixer),
7079 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7080 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7081 msm_routing_put_audio_mixer),
7082 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7083 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7084 msm_routing_put_audio_mixer),
7085 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7086 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7087 msm_routing_put_audio_mixer),
7088 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
7089 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7090 msm_routing_put_audio_mixer),
7091 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7092 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7093 msm_routing_put_audio_mixer),
7094 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7095 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7096 msm_routing_put_audio_mixer),
7097 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7098 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7099 msm_routing_put_audio_mixer),
7100 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7101 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7102 msm_routing_put_audio_mixer),
7103 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7104 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7105 msm_routing_put_audio_mixer),
7106 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7107 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7108 msm_routing_put_audio_mixer),
7109 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7110 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7111 msm_routing_put_audio_mixer),
7112 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7113 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7114 msm_routing_put_audio_mixer),
7115 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7116 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7117 msm_routing_put_audio_mixer),
7118 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7119 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7120 msm_routing_put_audio_mixer),
7121 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7122 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7123 msm_routing_put_audio_mixer),
7124 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7125 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7126 msm_routing_put_audio_mixer),
7127 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7128 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7129 msm_routing_put_audio_mixer),
7130 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7131 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7132 msm_routing_put_audio_mixer),
7133 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7134 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7135 msm_routing_put_audio_mixer),
7136 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7137 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7138 msm_routing_put_audio_mixer),
7139 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7140 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7141 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307142 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7143 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7144 msm_routing_put_audio_mixer),
7145 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7146 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7147 msm_routing_put_audio_mixer),
7148 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7149 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7150 msm_routing_put_audio_mixer),
7151 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7152 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7153 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307154 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7155 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7156 msm_routing_put_audio_mixer),
7157 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7158 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7159 msm_routing_put_audio_mixer),
7160};
7161
7162static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7163 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7164 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7165 msm_routing_put_audio_mixer),
7166 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7167 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7168 msm_routing_put_audio_mixer),
7169 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7170 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7171 msm_routing_put_audio_mixer),
7172 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7173 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7174 msm_routing_put_audio_mixer),
7175 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7176 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7177 msm_routing_put_audio_mixer),
7178 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7179 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7180 msm_routing_put_audio_mixer),
7181 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7182 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7183 msm_routing_put_audio_mixer),
7184 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7185 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7186 msm_routing_put_audio_mixer),
7187 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7188 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7189 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307190 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7191 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7192 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307193 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7194 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7195 msm_routing_put_audio_mixer),
7196 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7197 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7198 msm_routing_put_audio_mixer),
7199 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7200 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7201 msm_routing_put_audio_mixer),
7202 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7203 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7204 msm_routing_put_audio_mixer),
7205 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7206 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7207 msm_routing_put_audio_mixer),
7208 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7209 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7210 msm_routing_put_audio_mixer),
7211 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7212 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7213 msm_routing_put_audio_mixer),
7214 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7215 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7216 msm_routing_put_audio_mixer),
7217 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7218 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7219 msm_routing_put_audio_mixer),
7220 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7221 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7222 msm_routing_put_audio_mixer),
7223 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7224 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7225 msm_routing_put_audio_mixer),
7226 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7227 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7228 msm_routing_put_audio_mixer),
7229 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7230 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7231 msm_routing_put_audio_mixer),
7232 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7233 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7234 msm_routing_put_audio_mixer),
7235 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7236 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7237 msm_routing_put_audio_mixer),
7238 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7239 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7240 msm_routing_put_audio_mixer),
7241 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7242 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7243 msm_routing_put_audio_mixer),
7244 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7245 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7246 msm_routing_put_audio_mixer),
7247 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7248 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7249 msm_routing_put_audio_mixer),
7250 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7251 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7252 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307253 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7254 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7255 msm_routing_put_audio_mixer),
7256 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7257 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7258 msm_routing_put_audio_mixer),
7259 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7260 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7261 msm_routing_put_audio_mixer),
7262 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7263 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7264 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307265};
7266
7267static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7268 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7269 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7270 msm_routing_put_audio_mixer),
7271 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7272 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7273 msm_routing_put_audio_mixer),
7274 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7275 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7276 msm_routing_put_audio_mixer),
7277 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7278 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7279 msm_routing_put_audio_mixer),
7280 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7281 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7282 msm_routing_put_audio_mixer),
7283 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7284 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7285 msm_routing_put_audio_mixer),
7286 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7287 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7288 msm_routing_put_audio_mixer),
7289 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7290 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7291 msm_routing_put_audio_mixer),
7292 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7293 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7294 msm_routing_put_audio_mixer),
7295 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7296 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7297 msm_routing_put_audio_mixer),
7298 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7299 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7300 msm_routing_put_audio_mixer),
7301 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7302 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7303 msm_routing_put_audio_mixer),
7304 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7305 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7306 msm_routing_put_audio_mixer),
7307 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7308 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7309 msm_routing_put_audio_mixer),
7310 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7311 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7312 msm_routing_put_audio_mixer),
7313 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7314 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7315 msm_routing_put_audio_mixer),
7316 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7317 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7318 msm_routing_put_audio_mixer),
7319 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7320 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7321 msm_routing_put_audio_mixer),
7322 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7323 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7324 msm_routing_put_audio_mixer),
7325 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7326 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7327 msm_routing_put_audio_mixer),
7328 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7329 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7330 msm_routing_put_audio_mixer),
7331 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7332 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7333 msm_routing_put_audio_mixer),
7334 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7335 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7336 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307337 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7338 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7339 msm_routing_put_audio_mixer),
7340 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7341 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7342 msm_routing_put_audio_mixer),
7343 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7344 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7345 msm_routing_put_audio_mixer),
7346 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7347 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7348 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307349 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7350 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7351 msm_routing_put_audio_mixer),
7352 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7353 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7354 msm_routing_put_audio_mixer),
7355 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7356 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7357 msm_routing_put_audio_mixer),
7358 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7359 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7360 msm_routing_put_audio_mixer),
7361 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7362 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7363 msm_routing_put_audio_mixer),
7364 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7365 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7366 msm_routing_put_audio_mixer),
7367};
7368
7369static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7370 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7371 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7372 msm_routing_put_audio_mixer),
7373 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7374 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7375 msm_routing_put_audio_mixer),
7376 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7377 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7378 msm_routing_put_audio_mixer),
7379 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7380 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7381 msm_routing_put_audio_mixer),
7382 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7383 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7384 msm_routing_put_audio_mixer),
7385 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7386 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7387 msm_routing_put_audio_mixer),
7388 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7389 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7390 msm_routing_put_audio_mixer),
7391 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7392 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7393 msm_routing_put_audio_mixer),
7394 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7395 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7396 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307397 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7398 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7399 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307400 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7401 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7402 msm_routing_put_audio_mixer),
7403 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7404 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7405 msm_routing_put_audio_mixer),
7406 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7407 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7408 msm_routing_put_audio_mixer),
7409 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7410 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7411 msm_routing_put_audio_mixer),
7412 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7413 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7414 msm_routing_put_audio_mixer),
7415 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7416 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7417 msm_routing_put_audio_mixer),
7418 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7419 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7420 msm_routing_put_audio_mixer),
7421 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7422 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7423 msm_routing_put_audio_mixer),
7424 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7425 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7426 msm_routing_put_audio_mixer),
7427 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7428 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7429 msm_routing_put_audio_mixer),
7430 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7431 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7432 msm_routing_put_audio_mixer),
7433 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7434 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7435 msm_routing_put_audio_mixer),
7436 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7437 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7438 msm_routing_put_audio_mixer),
7439 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7440 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7441 msm_routing_put_audio_mixer),
7442 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7443 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7444 msm_routing_put_audio_mixer),
7445 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7446 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7447 msm_routing_put_audio_mixer),
7448 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7449 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7450 msm_routing_put_audio_mixer),
7451 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7452 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7453 msm_routing_put_audio_mixer),
7454 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7455 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7456 msm_routing_put_audio_mixer),
7457 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7458 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7459 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307460 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7461 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7462 msm_routing_put_audio_mixer),
7463 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7464 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7465 msm_routing_put_audio_mixer),
7466 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7467 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7468 msm_routing_put_audio_mixer),
7469 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7470 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7471 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307472 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7473 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7474 msm_routing_put_audio_mixer),
7475 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7476 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7477 msm_routing_put_audio_mixer),
7478 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7479 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7480 msm_routing_put_audio_mixer),
7481 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7482 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7483 msm_routing_put_audio_mixer),
7484 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7485 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7486 msm_routing_put_audio_mixer),
7487};
7488
7489static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7490 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7491 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7492 msm_routing_put_audio_mixer),
7493 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7494 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7495 msm_routing_put_audio_mixer),
7496 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7497 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7498 msm_routing_put_audio_mixer),
7499 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7500 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7501 msm_routing_put_audio_mixer),
7502 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7503 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7504 msm_routing_put_audio_mixer),
7505 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7506 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7507 msm_routing_put_audio_mixer),
7508 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7509 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7510 msm_routing_put_audio_mixer),
7511 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7512 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7513 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307514 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7515 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7516 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307517 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7518 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7519 msm_routing_put_audio_mixer),
7520 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7521 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7522 msm_routing_put_audio_mixer),
7523 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7524 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7525 msm_routing_put_audio_mixer),
7526 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7527 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7528 msm_routing_put_audio_mixer),
7529 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7530 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7531 msm_routing_put_audio_mixer),
7532 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7533 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7534 msm_routing_put_audio_mixer),
7535 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7536 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7537 msm_routing_put_audio_mixer),
7538 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7539 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7540 msm_routing_put_audio_mixer),
7541 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7542 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7543 msm_routing_put_audio_mixer),
7544 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7545 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7546 msm_routing_put_audio_mixer),
7547 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7548 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7549 msm_routing_put_audio_mixer),
7550 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7551 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7552 msm_routing_put_audio_mixer),
7553 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7554 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7555 msm_routing_put_audio_mixer),
7556 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7557 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7558 msm_routing_put_audio_mixer),
7559 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7560 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7561 msm_routing_put_audio_mixer),
7562 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7563 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7564 msm_routing_put_audio_mixer),
7565 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7566 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7567 msm_routing_put_audio_mixer),
7568 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7569 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7570 msm_routing_put_audio_mixer),
7571 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7572 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7573 msm_routing_put_audio_mixer),
7574 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7575 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7576 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307577 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7578 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7579 msm_routing_put_audio_mixer),
7580 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7581 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7582 msm_routing_put_audio_mixer),
7583 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7584 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7585 msm_routing_put_audio_mixer),
7586 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7587 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7588 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307589 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7590 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7591 msm_routing_put_audio_mixer),
7592};
7593
7594static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7595 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7596 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7597 msm_routing_put_audio_mixer),
7598 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7599 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7600 msm_routing_put_audio_mixer),
7601 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7602 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7603 msm_routing_put_audio_mixer),
7604 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7605 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7606 msm_routing_put_audio_mixer),
7607 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7608 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7609 msm_routing_put_audio_mixer),
7610 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7611 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7612 msm_routing_put_audio_mixer),
7613 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7614 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7615 msm_routing_put_audio_mixer),
7616 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7617 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7618 msm_routing_put_audio_mixer),
7619 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7620 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7621 msm_routing_put_audio_mixer),
7622 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7623 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7624 msm_routing_put_audio_mixer),
7625 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7626 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7627 msm_routing_put_audio_mixer),
7628 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7629 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7630 msm_routing_put_audio_mixer),
7631 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7632 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7633 msm_routing_put_audio_mixer),
7634 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7635 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7636 msm_routing_put_audio_mixer),
7637 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7638 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7639 msm_routing_put_audio_mixer),
7640 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7641 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7642 msm_routing_put_audio_mixer),
7643 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7644 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7645 msm_routing_put_audio_mixer),
7646 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7647 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7648 msm_routing_put_audio_mixer),
7649 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7650 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7651 msm_routing_put_audio_mixer),
7652 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7653 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7654 msm_routing_put_audio_mixer),
7655 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7656 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7657 msm_routing_put_audio_mixer),
7658 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7659 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7660 msm_routing_put_audio_mixer),
7661 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7662 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7663 msm_routing_put_audio_mixer),
7664 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7665 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7666 msm_routing_put_audio_mixer),
7667 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7668 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7669 msm_routing_put_audio_mixer),
7670 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7671 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7672 msm_routing_put_audio_mixer),
7673 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7674 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7675 msm_routing_put_audio_mixer),
7676 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7677 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7678 msm_routing_put_audio_mixer),
7679 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7680 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7681 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307682 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7683 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7684 msm_routing_put_audio_mixer),
7685 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7686 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7687 msm_routing_put_audio_mixer),
7688 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7689 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7690 msm_routing_put_audio_mixer),
7691 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7692 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7693 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307694 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7695 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7696 msm_routing_put_audio_mixer),
7697 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7698 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7699 msm_routing_put_audio_mixer),
7700};
7701
Asish Bhattacharya34504582017-08-08 12:55:01 +05307702static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7703 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7704 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7705 msm_routing_put_audio_mixer),
7706 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7707 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7708 msm_routing_put_audio_mixer),
7709 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7710 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7711 msm_routing_put_audio_mixer),
7712 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7713 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7714 msm_routing_put_audio_mixer),
7715 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7716 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7717 msm_routing_put_audio_mixer),
7718 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7719 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7720 msm_routing_put_audio_mixer),
7721 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7722 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7723 msm_routing_put_audio_mixer),
7724 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7725 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7726 msm_routing_put_audio_mixer),
7727 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7728 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7729 msm_routing_put_audio_mixer),
7730 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7731 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7732 msm_routing_put_audio_mixer),
7733 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7734 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7735 msm_routing_put_audio_mixer),
7736 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7737 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7738 msm_routing_put_audio_mixer),
7739 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7740 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7741 msm_routing_put_audio_mixer),
7742 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7743 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7744 msm_routing_put_audio_mixer),
7745 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7746 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7747 msm_routing_put_audio_mixer),
7748 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7749 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7750 msm_routing_put_audio_mixer),
7751 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7752 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7753 msm_routing_put_audio_mixer),
7754 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7755 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7756 msm_routing_put_audio_mixer),
7757 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7758 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7759 msm_routing_put_audio_mixer),
7760 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7761 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7762 msm_routing_put_audio_mixer),
7763 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7764 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7765 msm_routing_put_audio_mixer),
7766 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7767 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7768 msm_routing_put_audio_mixer),
7769 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7770 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7771 msm_routing_put_audio_mixer),
7772 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7773 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7774 msm_routing_put_audio_mixer),
7775 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7776 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7777 msm_routing_put_audio_mixer),
7778 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7779 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7780 msm_routing_put_audio_mixer),
7781 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7782 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7783 msm_routing_put_audio_mixer),
7784 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7785 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7786 msm_routing_put_audio_mixer),
7787 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7788 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7789 msm_routing_put_audio_mixer),
7790 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7791 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7792 msm_routing_put_audio_mixer),
7793 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7794 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7795 msm_routing_put_audio_mixer),
7796 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7797 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7798 msm_routing_put_audio_mixer),
7799 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7800 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7801 msm_routing_put_audio_mixer),
7802 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7803 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7804 msm_routing_put_audio_mixer),
7805 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7806 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7807 msm_routing_put_audio_mixer),
7808};
7809
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307810static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7811 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7812 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7813 msm_routing_put_audio_mixer),
7814 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7815 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7816 msm_routing_put_audio_mixer),
7817 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7818 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7819 msm_routing_put_audio_mixer),
7820 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7821 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7822 msm_routing_put_audio_mixer),
7823 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7824 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7825 msm_routing_put_audio_mixer),
7826 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7827 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7828 msm_routing_put_audio_mixer),
7829 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7830 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7831 msm_routing_put_audio_mixer),
7832 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7833 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7834 msm_routing_put_audio_mixer),
7835 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7836 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7837 msm_routing_put_audio_mixer),
7838 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7839 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7840 msm_routing_put_audio_mixer),
7841 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7842 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7843 msm_routing_put_audio_mixer),
7844 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7845 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7846 msm_routing_put_audio_mixer),
7847 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7848 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7849 msm_routing_put_audio_mixer),
7850 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7851 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7852 msm_routing_put_audio_mixer),
7853 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7854 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7855 msm_routing_put_audio_mixer),
7856 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7857 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7858 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307859 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7860 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7861 msm_routing_put_audio_mixer),
7862 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7863 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7864 msm_routing_put_audio_mixer),
7865 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7866 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7867 msm_routing_put_audio_mixer),
7868 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7869 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7870 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307871};
7872
Laxminath Kasam38070be2017-08-17 18:21:59 +05307873static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
7874 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7875 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7876 msm_routing_put_audio_mixer),
7877 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7878 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7879 msm_routing_put_audio_mixer),
7880 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7881 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7882 msm_routing_put_audio_mixer),
7883 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7884 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7885 msm_routing_put_audio_mixer),
7886 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7887 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7888 msm_routing_put_audio_mixer),
7889 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7890 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7891 msm_routing_put_audio_mixer),
7892 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7893 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7894 msm_routing_put_audio_mixer),
7895 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7896 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7897 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07007898 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7899 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7900 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307901 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7902 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7903 msm_routing_put_audio_mixer),
7904 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7905 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7906 msm_routing_put_audio_mixer),
7907 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7908 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7909 msm_routing_put_audio_mixer),
7910 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7911 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7912 msm_routing_put_audio_mixer),
7913 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7914 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7915 msm_routing_put_audio_mixer),
7916 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7917 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7918 msm_routing_put_audio_mixer),
7919 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7920 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7921 msm_routing_put_audio_mixer),
7922 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7923 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7924 msm_routing_put_audio_mixer),
7925 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7926 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7927 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007928 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7929 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7930 msm_routing_put_audio_mixer),
7931 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7932 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7933 msm_routing_put_audio_mixer),
7934 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7935 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7936 msm_routing_put_audio_mixer),
7937 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7938 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7939 msm_routing_put_audio_mixer),
7940 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7941 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7942 msm_routing_put_audio_mixer),
7943 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7944 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7945 msm_routing_put_audio_mixer),
7946 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7947 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7948 msm_routing_put_audio_mixer),
7949 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7950 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7951 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307952};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307953static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
7954 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7955 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7956 msm_routing_put_audio_mixer),
7957 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7958 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7959 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05307960 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7961 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7962 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307963 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7964 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7965 msm_routing_put_audio_mixer),
7966 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7967 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7968 msm_routing_put_audio_mixer),
7969 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7970 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7971 msm_routing_put_audio_mixer),
7972 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7973 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7974 msm_routing_put_audio_mixer),
7975 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7976 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7977 msm_routing_put_audio_mixer),
7978};
7979
7980static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
7981 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7982 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7983 msm_routing_put_audio_mixer),
7984 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7985 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7986 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05307987 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7988 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7989 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307990 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7991 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7992 msm_routing_put_audio_mixer),
7993 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7994 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7995 msm_routing_put_audio_mixer),
7996 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7997 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7998 msm_routing_put_audio_mixer),
7999 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8000 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8001 msm_routing_put_audio_mixer),
8002 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8003 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8004 msm_routing_put_audio_mixer),
8005 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8006 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8007 msm_routing_put_audio_mixer),
8008};
8009
8010static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
8011 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8012 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8013 msm_routing_put_audio_mixer),
8014 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8015 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8016 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308017 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8018 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8019 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308020 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8021 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8022 msm_routing_put_audio_mixer),
8023 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8024 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8025 msm_routing_put_audio_mixer),
8026 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8027 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8028 msm_routing_put_audio_mixer),
8029 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8030 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8031 msm_routing_put_audio_mixer),
8032 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8033 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8034 msm_routing_put_audio_mixer),
8035};
8036
8037static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
8038 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8039 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8040 msm_routing_put_audio_mixer),
8041 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
8042 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8043 msm_routing_put_audio_mixer),
8044 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8045 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8046 msm_routing_put_audio_mixer),
8047 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8048 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8049 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308050 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
8051 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8052 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308053 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
8054 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8055 msm_routing_put_audio_mixer),
8056 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
8057 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8058 msm_routing_put_audio_mixer),
8059 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
8060 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8061 msm_routing_put_audio_mixer),
8062 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
8063 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8064 msm_routing_put_audio_mixer),
8065 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
8066 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8067 msm_routing_put_audio_mixer),
8068 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
8069 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8070 msm_routing_put_audio_mixer),
8071 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
8072 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8073 msm_routing_put_audio_mixer),
8074 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
8075 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8076 msm_routing_put_audio_mixer),
8077 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
8078 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8079 msm_routing_put_audio_mixer),
8080 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
8081 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8082 msm_routing_put_audio_mixer),
8083 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
8084 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8085 msm_routing_put_audio_mixer),
8086 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
8087 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8088 msm_routing_put_audio_mixer),
8089 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
8090 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8091 msm_routing_put_audio_mixer),
8092 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
8093 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8094 msm_routing_put_audio_mixer),
8095 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
8096 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8097 msm_routing_put_audio_mixer),
8098 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
8099 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8100 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308101 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
8102 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8103 msm_routing_put_audio_mixer),
8104 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
8105 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8106 msm_routing_put_audio_mixer),
8107 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
8108 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8109 msm_routing_put_audio_mixer),
8110 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
8111 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8112 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308113};
8114
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308115static const struct snd_kcontrol_new mmul28_mixer_controls[] = {
8116 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8117 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8118 msm_routing_put_audio_mixer),
8119 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8120 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8121 msm_routing_put_audio_mixer),
8122 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8123 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8124 msm_routing_put_audio_mixer),
8125 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8126 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8127 msm_routing_put_audio_mixer),
8128 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8129 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8130 msm_routing_put_audio_mixer),
8131 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8132 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8133 msm_routing_put_audio_mixer),
8134 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8135 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8136 msm_routing_put_audio_mixer),
8137 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8138 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8139 msm_routing_put_audio_mixer),
8140};
8141
8142static const struct snd_kcontrol_new mmul29_mixer_controls[] = {
8143 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8144 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8145 msm_routing_put_audio_mixer),
8146 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8147 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8148 msm_routing_put_audio_mixer),
8149 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8150 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8151 msm_routing_put_audio_mixer),
8152 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8153 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8154 msm_routing_put_audio_mixer),
8155 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8156 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8157 msm_routing_put_audio_mixer),
8158 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8159 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8160 msm_routing_put_audio_mixer),
8161 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8162 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8163 msm_routing_put_audio_mixer),
8164 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8165 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8166 msm_routing_put_audio_mixer),
8167};
8168
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308169static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308170 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
8171 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8172 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308173 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
8174 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8175 msm_routing_put_voice_mixer),
8176 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
8177 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8178 msm_routing_put_voice_mixer),
8179 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
8180 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8181 msm_routing_put_voice_mixer),
8182 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
8183 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8184 msm_routing_put_voice_mixer),
8185};
8186
8187static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308188 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
8189 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8190 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308191 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
8192 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8193 msm_routing_put_voice_mixer),
8194 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
8195 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8196 msm_routing_put_voice_mixer),
8197};
8198
8199static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308200 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8201 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8202 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308203 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8204 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8205 msm_routing_put_voice_mixer),
8206 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8207 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8208 msm_routing_put_voice_mixer),
8209 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8210 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8211 msm_routing_put_voice_mixer),
8212 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8213 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8214 msm_routing_put_voice_mixer),
8215};
8216
8217static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308218 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8219 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8220 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308221 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8222 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8223 msm_routing_put_voice_mixer),
8224 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8225 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8226 msm_routing_put_voice_mixer),
8227 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8228 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8229 msm_routing_put_voice_mixer),
8230 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8231 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8232 msm_routing_put_voice_mixer),
8233};
8234
8235static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308236 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8237 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8238 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308239 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8240 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8241 msm_routing_put_voice_mixer),
8242 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8243 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8244 msm_routing_put_voice_mixer),
8245 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8246 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8247 msm_routing_put_voice_mixer),
8248 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8249 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8250 msm_routing_put_voice_mixer),
8251};
8252
8253static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308254 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8255 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8256 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308257 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8258 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8259 msm_routing_put_voice_mixer),
8260 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8261 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8262 msm_routing_put_voice_mixer),
8263 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8264 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8265 msm_routing_put_voice_mixer),
8266 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8267 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8268 msm_routing_put_voice_mixer),
8269};
8270
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008271static const struct snd_kcontrol_new display_port_rx_voice_mixer_controls[] = {
8272 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8273 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8274 msm_routing_put_voice_mixer),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008275 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8276 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8277 msm_routing_put_voice_mixer),
8278 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8279 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8280 msm_routing_put_voice_mixer),
8281 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8282 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8283 msm_routing_put_voice_mixer),
8284 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8285 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8286 msm_routing_put_voice_mixer),
8287};
8288
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308289static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308290 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8291 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8292 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308293 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8294 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8295 msm_routing_put_voice_mixer),
8296 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8297 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8298 msm_routing_put_voice_mixer),
8299 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8300 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8301 msm_routing_put_voice_mixer),
8302 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8303 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8304 msm_routing_put_voice_mixer),
8305};
8306
8307static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308308 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8309 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8310 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308311 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8312 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8313 msm_routing_put_voice_mixer),
8314 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8315 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8316 msm_routing_put_voice_mixer),
8317 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8318 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8319 msm_routing_put_voice_mixer),
8320 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8321 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8322 msm_routing_put_voice_mixer),
8323};
8324
8325static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308326 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8327 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8328 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308329 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8330 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8331 msm_routing_put_voice_mixer),
8332 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8333 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8334 msm_routing_put_voice_mixer),
8335 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8336 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8337 msm_routing_put_voice_mixer),
8338 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8339 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8340 msm_routing_put_voice_mixer),
8341};
8342
8343static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8344 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8345 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8346 msm_routing_put_voice_mixer),
8347 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8348 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8349 msm_routing_put_voice_mixer),
8350 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8351 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8352 msm_routing_put_voice_mixer),
8353 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8354 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8355 msm_routing_put_voice_mixer),
8356 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8357 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8358 msm_routing_put_voice_mixer),
8359};
8360
8361static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8362 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8363 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8364 msm_routing_put_voice_mixer),
8365 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8366 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8367 msm_routing_put_voice_mixer),
8368 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8369 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8370 msm_routing_put_voice_mixer),
8371 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8372 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8373 msm_routing_put_voice_mixer),
8374 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8375 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8376 msm_routing_put_voice_mixer),
8377};
8378
8379static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308380 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8381 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8382 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308383 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8384 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8385 msm_routing_put_voice_mixer),
8386 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8387 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8388 msm_routing_put_voice_mixer),
8389 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8390 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8391 msm_routing_put_voice_mixer),
8392 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8393 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8394 msm_routing_put_voice_mixer),
8395};
8396
8397static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308398 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8399 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8400 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308401 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8402 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8403 msm_routing_put_voice_mixer),
8404 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8405 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8406 msm_routing_put_voice_mixer),
8407 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8408 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8409 msm_routing_put_voice_mixer),
8410 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8411 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8412 msm_routing_put_voice_mixer),
8413};
8414
8415static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308416 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8417 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8418 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308419 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8420 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8421 msm_routing_put_voice_mixer),
8422 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8423 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8424 msm_routing_put_voice_mixer),
8425 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8426 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8427 msm_routing_put_voice_mixer),
8428 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8429 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8430 msm_routing_put_voice_mixer),
8431};
8432
8433static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308434 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8435 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8436 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308437 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8438 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8439 msm_routing_put_voice_mixer),
8440 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8441 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8442 msm_routing_put_voice_mixer),
8443 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8444 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8445 msm_routing_put_voice_mixer),
8446 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8447 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8448 msm_routing_put_voice_mixer),
8449};
8450
8451static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308452 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8453 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8454 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308455 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8456 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8457 msm_routing_put_voice_mixer),
8458 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8459 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8460 msm_routing_put_voice_mixer),
8461 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8462 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8463 msm_routing_put_voice_mixer),
8464 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8465 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8466 msm_routing_put_voice_mixer),
8467};
8468
8469static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308470 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8471 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8472 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308473 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8474 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8475 msm_routing_put_voice_mixer),
8476 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8477 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8478 msm_routing_put_voice_mixer),
8479 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8480 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8481 msm_routing_put_voice_mixer),
8482 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8483 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8484 msm_routing_put_voice_mixer),
8485};
8486
8487static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308488 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8489 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8490 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308491 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8492 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8493 msm_routing_put_voice_mixer),
8494 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8495 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8496 msm_routing_put_voice_mixer),
8497 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8498 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8499 msm_routing_put_voice_mixer),
8500 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8501 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8502 msm_routing_put_voice_mixer),
8503};
8504
8505static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308506 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8507 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8508 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308509 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8510 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8511 msm_routing_put_voice_mixer),
8512 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8513 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8514 msm_routing_put_voice_mixer),
8515 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8516 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8517 msm_routing_put_voice_mixer),
8518 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8519 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8520 msm_routing_put_voice_mixer),
8521};
8522
Rohit Kumara5077932017-09-10 22:05:05 +05308523static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Rohit Kumara5077932017-09-10 22:05:05 +05308524 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8525 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8526 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308527 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8528 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8529 msm_routing_put_voice_mixer),
8530 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8531 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8532 msm_routing_put_voice_mixer),
8533 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8534 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8535 msm_routing_put_voice_mixer),
8536 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8537 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8538 msm_routing_put_voice_mixer),
8539};
8540
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308541static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308542 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8543 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8544 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308545 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8546 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8547 msm_routing_put_voice_mixer),
8548 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8549 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8550 msm_routing_put_voice_mixer),
8551 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8552 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8553 msm_routing_put_voice_mixer),
8554 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8555 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8556 msm_routing_put_voice_mixer),
8557};
8558
Raja Mallik321d5712018-05-04 17:22:11 +05308559static const struct snd_kcontrol_new pri_tdm_rx_0_voice_mixer_controls[] = {
8560 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8561 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8562 msm_routing_put_voice_mixer),
8563 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8564 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8565 msm_routing_put_voice_stub_mixer),
8566 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8567 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8568 msm_routing_put_voice_stub_mixer),
8569 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8570 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8571 msm_routing_put_voice_mixer),
8572 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8573 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8574 msm_routing_put_voice_mixer),
8575 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8576 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8577 msm_routing_put_voice_mixer),
8578 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8579 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8580 msm_routing_put_voice_mixer),
8581 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8582 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8583 msm_routing_put_voice_mixer),
8584};
8585
8586static const struct snd_kcontrol_new pri_tdm_rx_1_voice_mixer_controls[] = {
8587 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8588 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8589 msm_routing_put_voice_mixer),
8590 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8591 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8592 msm_routing_put_voice_stub_mixer),
8593 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8594 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8595 msm_routing_put_voice_stub_mixer),
8596 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8597 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8598 msm_routing_put_voice_mixer),
8599 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8600 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8601 msm_routing_put_voice_mixer),
8602 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8603 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8604 msm_routing_put_voice_mixer),
8605 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8606 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8607 msm_routing_put_voice_mixer),
8608 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8609 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8610 msm_routing_put_voice_mixer),
8611};
8612
8613static const struct snd_kcontrol_new pri_tdm_rx_2_voice_mixer_controls[] = {
8614 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8615 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8616 msm_routing_put_voice_mixer),
8617 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8618 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8619 msm_routing_put_voice_stub_mixer),
8620 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8621 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8622 msm_routing_put_voice_stub_mixer),
8623 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8624 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8625 msm_routing_put_voice_mixer),
8626 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8627 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8628 msm_routing_put_voice_mixer),
8629 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8630 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8631 msm_routing_put_voice_mixer),
8632 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8633 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8634 msm_routing_put_voice_mixer),
8635 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8636 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8637 msm_routing_put_voice_mixer),
8638};
8639
8640static const struct snd_kcontrol_new pri_tdm_rx_3_voice_mixer_controls[] = {
8641 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8642 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8643 msm_routing_put_voice_mixer),
8644 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8645 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8646 msm_routing_put_voice_stub_mixer),
8647 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8648 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8649 msm_routing_put_voice_stub_mixer),
8650 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8651 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8652 msm_routing_put_voice_mixer),
8653 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8654 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8655 msm_routing_put_voice_mixer),
8656 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8657 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8658 msm_routing_put_voice_mixer),
8659 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8660 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8661 msm_routing_put_voice_mixer),
8662 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8663 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8664 msm_routing_put_voice_mixer),
8665};
8666
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308667static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308668 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8669 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8670 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308671 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8672 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8673 msm_routing_put_voice_mixer),
8674 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8675 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8676 msm_routing_put_voice_mixer),
8677 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8678 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8679 msm_routing_put_voice_mixer),
8680 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8681 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8682 msm_routing_put_voice_mixer),
8683};
8684
8685static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308686 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8687 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8688 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308689 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8690 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8691 msm_routing_put_voice_mixer),
8692 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8693 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8694 msm_routing_put_voice_mixer),
8695 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8696 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8697 msm_routing_put_voice_mixer),
8698 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8699 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8700 msm_routing_put_voice_mixer),
8701};
8702
8703static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8704 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8705 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8706 msm_routing_put_voice_mixer),
8707};
8708
8709static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008710 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_EXTPROC_RX,
8711 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8712 msm_routing_put_voice_mixer),
8713 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_EXTPROC_RX,
8714 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8715 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308716};
8717
8718static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008719 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8720 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8721 msm_routing_put_voice_mixer),
8722 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8723 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8724 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308725};
8726
8727static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008728 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8729 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8730 msm_routing_put_voice_mixer),
8731 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8732 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8733 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308734};
8735
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308736static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8737 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8738 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8739 msm_routing_put_voice_mixer),
8740 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8741 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8742 msm_routing_put_voice_mixer),
8743 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8744 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8745 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8746 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8747 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8748 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8749 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8750 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8751 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8752 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8753 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8754 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8755 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8756 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8757 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8758 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8759 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8760 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8761 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8762 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8763 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308764 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
8765 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8766 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308767 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8768 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8769 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8770 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8771 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8772 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8773 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8774 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8775 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8776 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8777 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8778 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8779 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8780 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8781 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8782 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8783 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8784 msm_routing_put_voice_mixer),
8785 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8786 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8787 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05308788 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode1",
8789 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE1,
8790 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308791 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode1",
8792 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8793 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8794 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode1",
8795 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8796 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308797};
8798
8799static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8800 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8801 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8802 msm_routing_put_voice_mixer),
8803 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8804 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8805 msm_routing_put_voice_mixer),
8806 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8807 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8808 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8809 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
8810 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8811 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8812 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
8813 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8814 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8815 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
8816 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8817 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8818 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
8819 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8820 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8821 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
8822 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8823 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8824 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
8825 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8826 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308827 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
8828 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8829 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308830 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
8831 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8832 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8833 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
8834 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8835 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05308836 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode2",
8837 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE2,
8838 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308839 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
8840 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8841 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8842 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
8843 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8844 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8845 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
8846 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8847 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8848 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
8849 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8850 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308851 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode2",
8852 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8853 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8854 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode2",
8855 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8856 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308857};
8858
8859static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
8860 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
8861 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8862 msm_routing_put_voice_mixer),
8863 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
8864 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8865 msm_routing_put_voice_mixer),
8866 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8867 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8868 msm_routing_put_voice_mixer),
8869 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8870 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8871 msm_routing_put_voice_mixer),
8872 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
8873 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8874 msm_routing_put_voice_mixer),
8875 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
8876 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8877 msm_routing_put_voice_mixer),
8878 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8879 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8880 msm_routing_put_voice_mixer),
8881 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8882 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8883 msm_routing_put_voice_mixer),
8884 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8885 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8886 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308887 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8888 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8889 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308890 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
8891 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8892 msm_routing_put_voice_mixer),
8893 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8894 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8895 msm_routing_put_voice_mixer),
8896 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
8897 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8898 msm_routing_put_voice_mixer),
8899 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8900 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8901 msm_routing_put_voice_mixer),
8902 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8903 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8904 msm_routing_put_voice_mixer),
8905 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
8906 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8907 msm_routing_put_voice_mixer),
8908};
8909
8910static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
8911 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8912 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8913 msm_routing_put_voice_stub_mixer),
8914 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8915 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8916 msm_routing_put_voice_stub_mixer),
8917 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8918 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8919 msm_routing_put_voice_stub_mixer),
8920 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8921 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8922 msm_routing_put_voice_stub_mixer),
8923 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
8924 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8925 msm_routing_put_voice_stub_mixer),
8926 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8927 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8928 msm_routing_put_voice_stub_mixer),
8929 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8930 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8931 msm_routing_put_voice_stub_mixer),
8932 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8933 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8934 msm_routing_put_voice_stub_mixer),
8935 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8936 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8937 msm_routing_put_voice_stub_mixer),
8938 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8939 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8940 msm_routing_put_voice_stub_mixer),
8941 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8942 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8943 msm_routing_put_voice_stub_mixer),
8944 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8945 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8946 msm_routing_put_voice_stub_mixer),
8947 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8948 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8949 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308950 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8951 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8952 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308953 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8954 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8955 msm_routing_put_voice_stub_mixer),
8956 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8957 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8958 msm_routing_put_voice_stub_mixer),
8959 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8960 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8961 msm_routing_put_voice_stub_mixer),
8962 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8963 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8964 msm_routing_put_voice_stub_mixer),
8965 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8966 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8967 msm_routing_put_voice_stub_mixer),
8968};
8969
8970static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
8971 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8972 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8973 msm_routing_put_voice_stub_mixer),
8974 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8975 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8976 msm_routing_put_voice_stub_mixer),
8977 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8978 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8979 msm_routing_put_voice_stub_mixer),
8980 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8981 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8982 msm_routing_put_voice_stub_mixer),
8983 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8984 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8985 msm_routing_put_voice_stub_mixer),
8986 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8987 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8988 msm_routing_put_voice_stub_mixer),
8989 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8990 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8991 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308992 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8993 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8994 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308995 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8996 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8997 msm_routing_put_voice_stub_mixer),
8998 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8999 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9000 msm_routing_put_voice_stub_mixer),
9001 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9002 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9003 msm_routing_put_voice_stub_mixer),
9004 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9005 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9006 msm_routing_put_voice_stub_mixer),
9007 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9008 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9009 msm_routing_put_voice_stub_mixer),
9010 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9011 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9012 msm_routing_put_voice_stub_mixer),
9013 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9014 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9015 msm_routing_put_voice_stub_mixer),
9016};
9017
9018static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
9019 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9020 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9021 msm_routing_put_voice_stub_mixer),
9022 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9023 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9024 msm_routing_put_voice_stub_mixer),
9025 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9026 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9027 msm_routing_put_voice_stub_mixer),
9028 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9029 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9030 msm_routing_put_voice_stub_mixer),
9031 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9032 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9033 msm_routing_put_voice_stub_mixer),
9034 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9035 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9036 msm_routing_put_voice_stub_mixer),
9037 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9038 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9039 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309040 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9041 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9042 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309043 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9044 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9045 msm_routing_put_voice_stub_mixer),
9046 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9047 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9048 msm_routing_put_voice_stub_mixer),
9049 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9050 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9051 msm_routing_put_voice_stub_mixer),
9052 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9053 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9054 msm_routing_put_voice_stub_mixer),
9055 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9056 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9057 msm_routing_put_voice_stub_mixer),
9058 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9059 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9060 msm_routing_put_voice_stub_mixer),
9061 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9062 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9063 msm_routing_put_voice_stub_mixer),
9064};
9065
9066static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
9067 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
9068 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9069 msm_routing_put_voice_mixer),
9070 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9071 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9072 msm_routing_put_voice_mixer),
9073 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
9074 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
9075 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9076 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
9077 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9078 msm_routing_put_voice_mixer),
9079 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
9080 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9081 msm_routing_put_voice_mixer),
9082 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9083 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9084 msm_routing_put_voice_mixer),
9085 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9086 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9087 msm_routing_put_voice_mixer),
9088 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9089 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9090 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309091 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9092 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9093 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309094 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
9095 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9096 msm_routing_put_voice_mixer),
9097 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
9098 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9099 msm_routing_put_voice_mixer),
9100 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9101 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9102 msm_routing_put_voice_mixer),
9103 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
9104 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9105 msm_routing_put_voice_mixer),
9106 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9107 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9108 msm_routing_put_voice_mixer),
9109 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9110 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9111 msm_routing_put_voice_mixer),
9112 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
9113 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9114 msm_routing_put_voice_mixer),
9115};
9116
9117static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
9118 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9119 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9120 msm_routing_put_port_mixer),
9121 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9122 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9123 msm_routing_put_port_mixer),
9124 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9125 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9126 msm_routing_put_port_mixer),
9127 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9128 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9129 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309130 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9131 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9132 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309133 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9134 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9135 msm_routing_put_port_mixer),
9136 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9137 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9138 msm_routing_put_port_mixer),
9139 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9140 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9141 msm_routing_put_port_mixer),
9142 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9143 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9144 msm_routing_put_port_mixer),
9145 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9146 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9147 msm_routing_put_port_mixer),
9148};
9149
9150static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
9151 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9152 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9153 msm_routing_put_port_mixer),
9154 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9155 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9156 msm_routing_put_port_mixer),
9157 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9158 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9159 msm_routing_put_port_mixer),
9160 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9161 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9162 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309163 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9164 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9165 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309166 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9167 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9168 msm_routing_put_port_mixer),
9169 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9170 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9171 msm_routing_put_port_mixer),
9172 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9173 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9174 msm_routing_put_port_mixer),
9175 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9176 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9177 msm_routing_put_port_mixer),
9178 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9179 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9180 msm_routing_put_port_mixer),
9181};
9182
9183static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
9184 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9185 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9186 msm_routing_put_port_mixer),
9187 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9188 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9189 msm_routing_put_port_mixer),
9190 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9191 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9192 msm_routing_put_port_mixer),
9193 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9194 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9195 msm_routing_put_port_mixer),
9196 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9197 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9198 msm_routing_put_port_mixer),
9199 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9200 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9201 msm_routing_put_port_mixer),
9202 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9203 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9204 msm_routing_put_port_mixer),
9205 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9206 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9207 msm_routing_put_port_mixer),
9208 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9209 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9210 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309211 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9212 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9213 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309214 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9215 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9216 msm_routing_put_port_mixer),
9217 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9218 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9219 msm_routing_put_port_mixer),
9220 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9221 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9222 msm_routing_put_port_mixer),
9223 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9224 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9225 msm_routing_put_port_mixer),
9226 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9227 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9228 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309229 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9230 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9231 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309232 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9233 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9234 msm_routing_put_port_mixer),
9235 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9236 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9237 msm_routing_put_port_mixer),
9238 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9239 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9240 msm_routing_put_port_mixer),
9241 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9242 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9243 msm_routing_put_port_mixer),
9244 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9245 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9246 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309247 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9248 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9249 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309250};
9251
9252static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
9253 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9254 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9255 msm_routing_put_port_mixer),
9256 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9257 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9258 msm_routing_put_port_mixer),
9259 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9260 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9261 msm_routing_put_port_mixer),
9262 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9263 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9264 msm_routing_put_port_mixer),
9265 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
9266 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
9267 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009268 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9269 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9270 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309271};
9272
9273static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
9274 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9275 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9276 msm_routing_put_port_mixer),
9277 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9278 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9279 msm_routing_put_port_mixer),
9280 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9281 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9282 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009283 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9284 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9285 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309286};
9287
9288static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
9289 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9290 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9291 msm_routing_put_port_mixer),
9292 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9293 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9294 msm_routing_put_port_mixer),
9295 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9296 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9297 msm_routing_put_port_mixer),
9298};
9299
9300static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
9301 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9302 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9303 msm_routing_put_port_mixer),
9304 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9305 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9306 msm_routing_put_port_mixer),
9307 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9308 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9309 msm_routing_put_port_mixer),
9310};
9311
Rohit Kumara5077932017-09-10 22:05:05 +05309312static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
9313 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9314 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9315 msm_routing_put_port_mixer),
9316 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9317 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9318 msm_routing_put_port_mixer),
9319 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9320 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9321 msm_routing_put_port_mixer),
9322};
9323
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309324static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9325 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9326 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9327 msm_routing_put_port_mixer),
9328 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9329 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9330 msm_routing_put_port_mixer),
9331 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9332 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9333 msm_routing_put_port_mixer),
9334 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9335 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9336 msm_routing_put_port_mixer),
9337 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9338 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9339 msm_routing_put_port_mixer),
9340 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9341 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9342 msm_routing_put_port_mixer),
9343};
9344
9345static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9346 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9347 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9348 msm_routing_put_port_mixer),
9349 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9350 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9351 msm_routing_put_port_mixer),
9352 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9353 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9354 msm_routing_put_port_mixer),
9355 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9356 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9357 msm_routing_put_port_mixer),
9358 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9359 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9360 msm_routing_put_port_mixer),
9361};
9362
9363static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9364 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9365 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9366 msm_routing_put_port_mixer),
9367 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9368 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9369 msm_routing_put_port_mixer),
9370 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9371 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9372 msm_routing_put_port_mixer),
9373 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9374 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9375 msm_routing_put_port_mixer),
9376 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9377 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9378 msm_routing_put_port_mixer),
9379 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9380 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9381 msm_routing_put_port_mixer),
9382 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9383 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9384 msm_routing_put_port_mixer),
9385 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9386 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9387 msm_routing_put_port_mixer),
9388 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9389 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9390 msm_routing_put_port_mixer),
9391 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9392 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9393 msm_routing_put_port_mixer),
9394 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9395 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9396 msm_routing_put_port_mixer),
9397 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9398 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9399 msm_routing_put_port_mixer),
9400};
9401
9402static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9403 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9404 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9405 msm_routing_put_port_mixer),
9406 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9407 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9408 msm_routing_put_port_mixer),
9409};
9410
9411static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9412 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9413 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9414 msm_routing_put_port_mixer),
9415 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9416 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9417 msm_routing_put_port_mixer),
9418};
9419
9420
9421static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9422 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9423 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9424 msm_routing_put_port_mixer),
9425};
9426
9427static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9428 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9429 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9430 msm_routing_put_port_mixer),
9431};
9432
9433static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9434 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9435 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9436 msm_routing_put_port_mixer),
9437};
9438
9439static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9440 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9441 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9442 msm_routing_put_port_mixer),
9443 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9444 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9445 msm_routing_put_port_mixer),
9446};
9447
9448static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9449 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9450 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9451 msm_routing_put_port_mixer),
9452 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9453 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9454 msm_routing_put_port_mixer),
9455 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9456 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9457 msm_routing_put_port_mixer),
9458 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9459 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9460 msm_routing_put_port_mixer),
9461 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9462 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9463 msm_routing_put_port_mixer),
9464 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9465 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9466 msm_routing_put_port_mixer),
9467 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9468 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9469 msm_routing_put_port_mixer),
9470 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9471 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9472 msm_routing_put_port_mixer),
9473 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9474 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9475 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009476 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9477 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9478 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309479};
9480
9481static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9482 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9483 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9484 msm_routing_put_port_mixer),
9485};
9486
9487static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9488 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9489 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9490 msm_routing_put_port_mixer),
9491 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9492 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9493 msm_routing_put_port_mixer),
9494 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9495 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9496 msm_routing_put_port_mixer),
9497 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9498 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9499 msm_routing_put_port_mixer),
9500 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9501 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9502 msm_routing_put_port_mixer),
9503 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9504 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9505 msm_routing_put_port_mixer),
9506 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9507 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9508 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309509 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9510 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9511 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309512 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9513 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9514 msm_routing_put_port_mixer),
9515};
9516
Rohit Kumara5077932017-09-10 22:05:05 +05309517static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9518 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9519 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9520 msm_routing_put_port_mixer),
9521 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9522 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9523 msm_routing_put_port_mixer),
9524 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9525 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9526 msm_routing_put_port_mixer),
9527 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9528 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9529 msm_routing_put_port_mixer),
9530 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9531 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9532 msm_routing_put_port_mixer),
9533 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9534 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9535 msm_routing_put_port_mixer),
9536 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9537 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9538 msm_routing_put_port_mixer),
9539};
9540
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309541static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9542 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9543 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9544 msm_routing_get_port_mixer,
9545 msm_routing_put_port_mixer),
9546 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9547 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9548 msm_routing_get_port_mixer,
9549 msm_routing_put_port_mixer),
9550 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9551 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9552 msm_routing_get_port_mixer,
9553 msm_routing_put_port_mixer),
9554 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9555 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9556 msm_routing_get_port_mixer,
9557 msm_routing_put_port_mixer),
9558 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9559 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9560 msm_routing_get_port_mixer,
9561 msm_routing_put_port_mixer),
9562 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9563 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9564 msm_routing_get_port_mixer,
9565 msm_routing_put_port_mixer),
9566 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9567 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9568 msm_routing_get_port_mixer,
9569 msm_routing_put_port_mixer),
9570 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9571 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9572 msm_routing_get_port_mixer,
9573 msm_routing_put_port_mixer),
9574 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9575 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9576 msm_routing_get_port_mixer,
9577 msm_routing_put_port_mixer),
9578 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9579 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9580 msm_routing_get_port_mixer,
9581 msm_routing_put_port_mixer),
9582 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9583 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9584 msm_routing_get_port_mixer,
9585 msm_routing_put_port_mixer),
9586 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9587 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9588 msm_routing_get_port_mixer,
9589 msm_routing_put_port_mixer),
9590 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9591 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9592 msm_routing_get_port_mixer,
9593 msm_routing_put_port_mixer),
9594 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9595 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9596 msm_routing_get_port_mixer,
9597 msm_routing_put_port_mixer),
9598 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9599 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9600 msm_routing_get_port_mixer,
9601 msm_routing_put_port_mixer),
9602 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9603 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9604 msm_routing_get_port_mixer,
9605 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309606 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9607 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9608 msm_routing_get_port_mixer,
9609 msm_routing_put_port_mixer),
9610 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9611 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9612 msm_routing_get_port_mixer,
9613 msm_routing_put_port_mixer),
9614 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9615 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9616 msm_routing_get_port_mixer,
9617 msm_routing_put_port_mixer),
9618 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9619 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9620 msm_routing_get_port_mixer,
9621 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309622};
9623
9624static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9625 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9626 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9627 msm_routing_get_port_mixer,
9628 msm_routing_put_port_mixer),
9629 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9630 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9631 msm_routing_get_port_mixer,
9632 msm_routing_put_port_mixer),
9633 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9634 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9635 msm_routing_get_port_mixer,
9636 msm_routing_put_port_mixer),
9637 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9638 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9639 msm_routing_get_port_mixer,
9640 msm_routing_put_port_mixer),
9641 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9642 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9643 msm_routing_get_port_mixer,
9644 msm_routing_put_port_mixer),
9645 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9646 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9647 msm_routing_get_port_mixer,
9648 msm_routing_put_port_mixer),
9649 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9650 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9651 msm_routing_get_port_mixer,
9652 msm_routing_put_port_mixer),
9653 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9654 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9655 msm_routing_get_port_mixer,
9656 msm_routing_put_port_mixer),
9657 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9658 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9659 msm_routing_get_port_mixer,
9660 msm_routing_put_port_mixer),
9661 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9662 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9663 msm_routing_get_port_mixer,
9664 msm_routing_put_port_mixer),
9665 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9666 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9667 msm_routing_get_port_mixer,
9668 msm_routing_put_port_mixer),
9669 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9670 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9671 msm_routing_get_port_mixer,
9672 msm_routing_put_port_mixer),
9673 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9674 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9675 msm_routing_get_port_mixer,
9676 msm_routing_put_port_mixer),
9677 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9678 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9679 msm_routing_get_port_mixer,
9680 msm_routing_put_port_mixer),
9681 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9682 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9683 msm_routing_get_port_mixer,
9684 msm_routing_put_port_mixer),
9685 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9686 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9687 msm_routing_get_port_mixer,
9688 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309689 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9690 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9691 msm_routing_get_port_mixer,
9692 msm_routing_put_port_mixer),
9693 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9694 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9695 msm_routing_get_port_mixer,
9696 msm_routing_put_port_mixer),
9697 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9698 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9699 msm_routing_get_port_mixer,
9700 msm_routing_put_port_mixer),
9701 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9702 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9703 msm_routing_get_port_mixer,
9704 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309705};
9706
9707static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9708 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9709 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9710 msm_routing_get_port_mixer,
9711 msm_routing_put_port_mixer),
9712 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9713 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9714 msm_routing_get_port_mixer,
9715 msm_routing_put_port_mixer),
9716 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9717 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9718 msm_routing_get_port_mixer,
9719 msm_routing_put_port_mixer),
9720 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9721 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9722 msm_routing_get_port_mixer,
9723 msm_routing_put_port_mixer),
9724 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9725 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9726 msm_routing_get_port_mixer,
9727 msm_routing_put_port_mixer),
9728 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9729 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9730 msm_routing_get_port_mixer,
9731 msm_routing_put_port_mixer),
9732 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9733 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9734 msm_routing_get_port_mixer,
9735 msm_routing_put_port_mixer),
9736 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9737 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9738 msm_routing_get_port_mixer,
9739 msm_routing_put_port_mixer),
9740 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9741 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9742 msm_routing_get_port_mixer,
9743 msm_routing_put_port_mixer),
9744 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9745 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9746 msm_routing_get_port_mixer,
9747 msm_routing_put_port_mixer),
9748 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9749 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9750 msm_routing_get_port_mixer,
9751 msm_routing_put_port_mixer),
9752 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9753 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9754 msm_routing_get_port_mixer,
9755 msm_routing_put_port_mixer),
9756 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9757 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9758 msm_routing_get_port_mixer,
9759 msm_routing_put_port_mixer),
9760 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9761 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9762 msm_routing_get_port_mixer,
9763 msm_routing_put_port_mixer),
9764 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9765 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9766 msm_routing_get_port_mixer,
9767 msm_routing_put_port_mixer),
9768 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9769 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9770 msm_routing_get_port_mixer,
9771 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309772 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9773 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9774 msm_routing_get_port_mixer,
9775 msm_routing_put_port_mixer),
9776 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9777 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9778 msm_routing_get_port_mixer,
9779 msm_routing_put_port_mixer),
9780 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9781 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9782 msm_routing_get_port_mixer,
9783 msm_routing_put_port_mixer),
9784 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9785 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9786 msm_routing_get_port_mixer,
9787 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309788};
9789
9790static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9791 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9792 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9793 msm_routing_get_port_mixer,
9794 msm_routing_put_port_mixer),
9795 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9796 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9797 msm_routing_get_port_mixer,
9798 msm_routing_put_port_mixer),
9799 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9800 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9801 msm_routing_get_port_mixer,
9802 msm_routing_put_port_mixer),
9803 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9804 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9805 msm_routing_get_port_mixer,
9806 msm_routing_put_port_mixer),
9807 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9808 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9809 msm_routing_get_port_mixer,
9810 msm_routing_put_port_mixer),
9811 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9812 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9813 msm_routing_get_port_mixer,
9814 msm_routing_put_port_mixer),
9815 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9816 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9817 msm_routing_get_port_mixer,
9818 msm_routing_put_port_mixer),
9819 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9820 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9821 msm_routing_get_port_mixer,
9822 msm_routing_put_port_mixer),
9823 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9824 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9825 msm_routing_get_port_mixer,
9826 msm_routing_put_port_mixer),
9827 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9828 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9829 msm_routing_get_port_mixer,
9830 msm_routing_put_port_mixer),
9831 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9832 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9833 msm_routing_get_port_mixer,
9834 msm_routing_put_port_mixer),
9835 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9836 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9837 msm_routing_get_port_mixer,
9838 msm_routing_put_port_mixer),
9839 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9840 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9841 msm_routing_get_port_mixer,
9842 msm_routing_put_port_mixer),
9843 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9844 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9845 msm_routing_get_port_mixer,
9846 msm_routing_put_port_mixer),
9847 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9848 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9849 msm_routing_get_port_mixer,
9850 msm_routing_put_port_mixer),
9851 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9852 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9853 msm_routing_get_port_mixer,
9854 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309855 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9856 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9857 msm_routing_get_port_mixer,
9858 msm_routing_put_port_mixer),
9859 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9860 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9861 msm_routing_get_port_mixer,
9862 msm_routing_put_port_mixer),
9863 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9864 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9865 msm_routing_get_port_mixer,
9866 msm_routing_put_port_mixer),
9867 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9868 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9869 msm_routing_get_port_mixer,
9870 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309871};
9872
9873static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
9874 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9875 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9876 msm_routing_get_port_mixer,
9877 msm_routing_put_port_mixer),
9878 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9879 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9880 msm_routing_get_port_mixer,
9881 msm_routing_put_port_mixer),
9882 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9883 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9884 msm_routing_get_port_mixer,
9885 msm_routing_put_port_mixer),
9886 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9887 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9888 msm_routing_get_port_mixer,
9889 msm_routing_put_port_mixer),
9890 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9891 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9892 msm_routing_get_port_mixer,
9893 msm_routing_put_port_mixer),
9894 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9895 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9896 msm_routing_get_port_mixer,
9897 msm_routing_put_port_mixer),
9898 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9899 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9900 msm_routing_get_port_mixer,
9901 msm_routing_put_port_mixer),
9902 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9903 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9904 msm_routing_get_port_mixer,
9905 msm_routing_put_port_mixer),
9906 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9907 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9908 msm_routing_get_port_mixer,
9909 msm_routing_put_port_mixer),
9910 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9911 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9912 msm_routing_get_port_mixer,
9913 msm_routing_put_port_mixer),
9914 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9915 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9916 msm_routing_get_port_mixer,
9917 msm_routing_put_port_mixer),
9918 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9919 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9920 msm_routing_get_port_mixer,
9921 msm_routing_put_port_mixer),
9922 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9923 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9924 msm_routing_get_port_mixer,
9925 msm_routing_put_port_mixer),
9926 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9927 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9928 msm_routing_get_port_mixer,
9929 msm_routing_put_port_mixer),
9930 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9931 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9932 msm_routing_get_port_mixer,
9933 msm_routing_put_port_mixer),
9934 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9935 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9936 msm_routing_get_port_mixer,
9937 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309938 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9939 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9940 msm_routing_get_port_mixer,
9941 msm_routing_put_port_mixer),
9942 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9943 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9944 msm_routing_get_port_mixer,
9945 msm_routing_put_port_mixer),
9946 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9947 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9948 msm_routing_get_port_mixer,
9949 msm_routing_put_port_mixer),
9950 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9951 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9952 msm_routing_get_port_mixer,
9953 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309954};
9955
9956static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
9957 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9958 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9959 msm_routing_get_port_mixer,
9960 msm_routing_put_port_mixer),
9961 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9962 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9963 msm_routing_get_port_mixer,
9964 msm_routing_put_port_mixer),
9965 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9966 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9967 msm_routing_get_port_mixer,
9968 msm_routing_put_port_mixer),
9969 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9970 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9971 msm_routing_get_port_mixer,
9972 msm_routing_put_port_mixer),
9973 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9974 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9975 msm_routing_get_port_mixer,
9976 msm_routing_put_port_mixer),
9977 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9978 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9979 msm_routing_get_port_mixer,
9980 msm_routing_put_port_mixer),
9981 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9982 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9983 msm_routing_get_port_mixer,
9984 msm_routing_put_port_mixer),
9985 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9986 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9987 msm_routing_get_port_mixer,
9988 msm_routing_put_port_mixer),
9989 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9990 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9991 msm_routing_get_port_mixer,
9992 msm_routing_put_port_mixer),
9993 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9994 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9995 msm_routing_get_port_mixer,
9996 msm_routing_put_port_mixer),
9997 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9998 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9999 msm_routing_get_port_mixer,
10000 msm_routing_put_port_mixer),
10001 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10002 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10003 msm_routing_get_port_mixer,
10004 msm_routing_put_port_mixer),
10005 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10006 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10007 msm_routing_get_port_mixer,
10008 msm_routing_put_port_mixer),
10009 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10010 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10011 msm_routing_get_port_mixer,
10012 msm_routing_put_port_mixer),
10013 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10014 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10015 msm_routing_get_port_mixer,
10016 msm_routing_put_port_mixer),
10017 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10018 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10019 msm_routing_get_port_mixer,
10020 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010021 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10022 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10023 msm_routing_get_port_mixer,
10024 msm_routing_put_port_mixer),
10025 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10026 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10027 msm_routing_get_port_mixer,
10028 msm_routing_put_port_mixer),
10029 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10030 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10031 msm_routing_get_port_mixer,
10032 msm_routing_put_port_mixer),
10033 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10034 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10035 msm_routing_get_port_mixer,
10036 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010037};
10038
10039static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
10040 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10041 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10042 msm_routing_get_port_mixer,
10043 msm_routing_put_port_mixer),
10044 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10045 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10046 msm_routing_get_port_mixer,
10047 msm_routing_put_port_mixer),
10048 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10049 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10050 msm_routing_get_port_mixer,
10051 msm_routing_put_port_mixer),
10052 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10053 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10054 msm_routing_get_port_mixer,
10055 msm_routing_put_port_mixer),
10056 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10057 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10058 msm_routing_get_port_mixer,
10059 msm_routing_put_port_mixer),
10060 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10061 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10062 msm_routing_get_port_mixer,
10063 msm_routing_put_port_mixer),
10064 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10065 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10066 msm_routing_get_port_mixer,
10067 msm_routing_put_port_mixer),
10068 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10069 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10070 msm_routing_get_port_mixer,
10071 msm_routing_put_port_mixer),
10072 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10073 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10074 msm_routing_get_port_mixer,
10075 msm_routing_put_port_mixer),
10076 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10077 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10078 msm_routing_get_port_mixer,
10079 msm_routing_put_port_mixer),
10080 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10081 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10082 msm_routing_get_port_mixer,
10083 msm_routing_put_port_mixer),
10084 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10085 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10086 msm_routing_get_port_mixer,
10087 msm_routing_put_port_mixer),
10088 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10089 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10090 msm_routing_get_port_mixer,
10091 msm_routing_put_port_mixer),
10092 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10093 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10094 msm_routing_get_port_mixer,
10095 msm_routing_put_port_mixer),
10096 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10097 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10098 msm_routing_get_port_mixer,
10099 msm_routing_put_port_mixer),
10100 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10101 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10102 msm_routing_get_port_mixer,
10103 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010104 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10105 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10106 msm_routing_get_port_mixer,
10107 msm_routing_put_port_mixer),
10108 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10109 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10110 msm_routing_get_port_mixer,
10111 msm_routing_put_port_mixer),
10112 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10113 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10114 msm_routing_get_port_mixer,
10115 msm_routing_put_port_mixer),
10116 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10117 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10118 msm_routing_get_port_mixer,
10119 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010120};
10121
10122static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
10123 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10124 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10125 msm_routing_get_port_mixer,
10126 msm_routing_put_port_mixer),
10127 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10128 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10129 msm_routing_get_port_mixer,
10130 msm_routing_put_port_mixer),
10131 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10132 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10133 msm_routing_get_port_mixer,
10134 msm_routing_put_port_mixer),
10135 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10136 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10137 msm_routing_get_port_mixer,
10138 msm_routing_put_port_mixer),
10139 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10140 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10141 msm_routing_get_port_mixer,
10142 msm_routing_put_port_mixer),
10143 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10144 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10145 msm_routing_get_port_mixer,
10146 msm_routing_put_port_mixer),
10147 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10148 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10149 msm_routing_get_port_mixer,
10150 msm_routing_put_port_mixer),
10151 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10152 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10153 msm_routing_get_port_mixer,
10154 msm_routing_put_port_mixer),
10155 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10156 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10157 msm_routing_get_port_mixer,
10158 msm_routing_put_port_mixer),
10159 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10160 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10161 msm_routing_get_port_mixer,
10162 msm_routing_put_port_mixer),
10163 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10164 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10165 msm_routing_get_port_mixer,
10166 msm_routing_put_port_mixer),
10167 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10168 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10169 msm_routing_get_port_mixer,
10170 msm_routing_put_port_mixer),
10171 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10172 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10173 msm_routing_get_port_mixer,
10174 msm_routing_put_port_mixer),
10175 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10176 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10177 msm_routing_get_port_mixer,
10178 msm_routing_put_port_mixer),
10179 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10180 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10181 msm_routing_get_port_mixer,
10182 msm_routing_put_port_mixer),
10183 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10184 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10185 msm_routing_get_port_mixer,
10186 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010187 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10188 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10189 msm_routing_get_port_mixer,
10190 msm_routing_put_port_mixer),
10191 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10192 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10193 msm_routing_get_port_mixer,
10194 msm_routing_put_port_mixer),
10195 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10196 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10197 msm_routing_get_port_mixer,
10198 msm_routing_put_port_mixer),
10199 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10200 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10201 msm_routing_get_port_mixer,
10202 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010203};
10204
10205static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
10206 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10207 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10208 msm_routing_get_port_mixer,
10209 msm_routing_put_port_mixer),
10210 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10211 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10212 msm_routing_get_port_mixer,
10213 msm_routing_put_port_mixer),
10214 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10215 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10216 msm_routing_get_port_mixer,
10217 msm_routing_put_port_mixer),
10218 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10219 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10220 msm_routing_get_port_mixer,
10221 msm_routing_put_port_mixer),
10222 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10223 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10224 msm_routing_get_port_mixer,
10225 msm_routing_put_port_mixer),
10226 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10227 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10228 msm_routing_get_port_mixer,
10229 msm_routing_put_port_mixer),
10230 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10231 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10232 msm_routing_get_port_mixer,
10233 msm_routing_put_port_mixer),
10234 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10235 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10236 msm_routing_get_port_mixer,
10237 msm_routing_put_port_mixer),
10238 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10239 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10240 msm_routing_get_port_mixer,
10241 msm_routing_put_port_mixer),
10242 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10243 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10244 msm_routing_get_port_mixer,
10245 msm_routing_put_port_mixer),
10246 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10247 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10248 msm_routing_get_port_mixer,
10249 msm_routing_put_port_mixer),
10250 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10251 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10252 msm_routing_get_port_mixer,
10253 msm_routing_put_port_mixer),
10254 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10255 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10256 msm_routing_get_port_mixer,
10257 msm_routing_put_port_mixer),
10258 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10259 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10260 msm_routing_get_port_mixer,
10261 msm_routing_put_port_mixer),
10262 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10263 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10264 msm_routing_get_port_mixer,
10265 msm_routing_put_port_mixer),
10266 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10267 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10268 msm_routing_get_port_mixer,
10269 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010270 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10271 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10272 msm_routing_get_port_mixer,
10273 msm_routing_put_port_mixer),
10274 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10275 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10276 msm_routing_get_port_mixer,
10277 msm_routing_put_port_mixer),
10278 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10279 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10280 msm_routing_get_port_mixer,
10281 msm_routing_put_port_mixer),
10282 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10283 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10284 msm_routing_get_port_mixer,
10285 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010286};
10287
10288static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
10289 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10290 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10291 msm_routing_get_port_mixer,
10292 msm_routing_put_port_mixer),
10293 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10294 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10295 msm_routing_get_port_mixer,
10296 msm_routing_put_port_mixer),
10297 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10298 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10299 msm_routing_get_port_mixer,
10300 msm_routing_put_port_mixer),
10301 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10302 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10303 msm_routing_get_port_mixer,
10304 msm_routing_put_port_mixer),
10305 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10306 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10307 msm_routing_get_port_mixer,
10308 msm_routing_put_port_mixer),
10309 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10310 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10311 msm_routing_get_port_mixer,
10312 msm_routing_put_port_mixer),
10313 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10314 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10315 msm_routing_get_port_mixer,
10316 msm_routing_put_port_mixer),
10317 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10318 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10319 msm_routing_get_port_mixer,
10320 msm_routing_put_port_mixer),
10321 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10322 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10323 msm_routing_get_port_mixer,
10324 msm_routing_put_port_mixer),
10325 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10326 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10327 msm_routing_get_port_mixer,
10328 msm_routing_put_port_mixer),
10329 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10330 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10331 msm_routing_get_port_mixer,
10332 msm_routing_put_port_mixer),
10333 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10334 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10335 msm_routing_get_port_mixer,
10336 msm_routing_put_port_mixer),
10337 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10338 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10339 msm_routing_get_port_mixer,
10340 msm_routing_put_port_mixer),
10341 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10342 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10343 msm_routing_get_port_mixer,
10344 msm_routing_put_port_mixer),
10345 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10346 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10347 msm_routing_get_port_mixer,
10348 msm_routing_put_port_mixer),
10349 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10350 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10351 msm_routing_get_port_mixer,
10352 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010353 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10354 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10355 msm_routing_get_port_mixer,
10356 msm_routing_put_port_mixer),
10357 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10358 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10359 msm_routing_get_port_mixer,
10360 msm_routing_put_port_mixer),
10361 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10362 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10363 msm_routing_get_port_mixer,
10364 msm_routing_put_port_mixer),
10365 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10366 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10367 msm_routing_get_port_mixer,
10368 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010369};
10370
10371static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10372 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10373 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10374 msm_routing_get_port_mixer,
10375 msm_routing_put_port_mixer),
10376 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10377 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10378 msm_routing_get_port_mixer,
10379 msm_routing_put_port_mixer),
10380 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10381 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10382 msm_routing_get_port_mixer,
10383 msm_routing_put_port_mixer),
10384 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10385 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10386 msm_routing_get_port_mixer,
10387 msm_routing_put_port_mixer),
10388 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10389 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10390 msm_routing_get_port_mixer,
10391 msm_routing_put_port_mixer),
10392 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10393 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10394 msm_routing_get_port_mixer,
10395 msm_routing_put_port_mixer),
10396 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10397 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10398 msm_routing_get_port_mixer,
10399 msm_routing_put_port_mixer),
10400 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10401 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10402 msm_routing_get_port_mixer,
10403 msm_routing_put_port_mixer),
10404 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10405 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10406 msm_routing_get_port_mixer,
10407 msm_routing_put_port_mixer),
10408 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10409 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10410 msm_routing_get_port_mixer,
10411 msm_routing_put_port_mixer),
10412 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10413 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10414 msm_routing_get_port_mixer,
10415 msm_routing_put_port_mixer),
10416 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10417 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10418 msm_routing_get_port_mixer,
10419 msm_routing_put_port_mixer),
10420 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10421 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10422 msm_routing_get_port_mixer,
10423 msm_routing_put_port_mixer),
10424 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10425 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10426 msm_routing_get_port_mixer,
10427 msm_routing_put_port_mixer),
10428 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10429 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10430 msm_routing_get_port_mixer,
10431 msm_routing_put_port_mixer),
10432 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10433 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10434 msm_routing_get_port_mixer,
10435 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010436 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10437 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10438 msm_routing_get_port_mixer,
10439 msm_routing_put_port_mixer),
10440 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10441 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10442 msm_routing_get_port_mixer,
10443 msm_routing_put_port_mixer),
10444 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10445 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10446 msm_routing_get_port_mixer,
10447 msm_routing_put_port_mixer),
10448 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10449 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10450 msm_routing_get_port_mixer,
10451 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010452};
10453
10454static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10455 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10456 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10457 msm_routing_get_port_mixer,
10458 msm_routing_put_port_mixer),
10459 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10460 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10461 msm_routing_get_port_mixer,
10462 msm_routing_put_port_mixer),
10463 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10464 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10465 msm_routing_get_port_mixer,
10466 msm_routing_put_port_mixer),
10467 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10468 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10469 msm_routing_get_port_mixer,
10470 msm_routing_put_port_mixer),
10471 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10472 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10473 msm_routing_get_port_mixer,
10474 msm_routing_put_port_mixer),
10475 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10476 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10477 msm_routing_get_port_mixer,
10478 msm_routing_put_port_mixer),
10479 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10480 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10481 msm_routing_get_port_mixer,
10482 msm_routing_put_port_mixer),
10483 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10484 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10485 msm_routing_get_port_mixer,
10486 msm_routing_put_port_mixer),
10487 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10488 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10489 msm_routing_get_port_mixer,
10490 msm_routing_put_port_mixer),
10491 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10492 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10493 msm_routing_get_port_mixer,
10494 msm_routing_put_port_mixer),
10495 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10496 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10497 msm_routing_get_port_mixer,
10498 msm_routing_put_port_mixer),
10499 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10500 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10501 msm_routing_get_port_mixer,
10502 msm_routing_put_port_mixer),
10503 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10504 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10505 msm_routing_get_port_mixer,
10506 msm_routing_put_port_mixer),
10507 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10508 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10509 msm_routing_get_port_mixer,
10510 msm_routing_put_port_mixer),
10511 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10512 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10513 msm_routing_get_port_mixer,
10514 msm_routing_put_port_mixer),
10515 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10516 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10517 msm_routing_get_port_mixer,
10518 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010519 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10520 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10521 msm_routing_get_port_mixer,
10522 msm_routing_put_port_mixer),
10523 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10524 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10525 msm_routing_get_port_mixer,
10526 msm_routing_put_port_mixer),
10527 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10528 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10529 msm_routing_get_port_mixer,
10530 msm_routing_put_port_mixer),
10531 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10532 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10533 msm_routing_get_port_mixer,
10534 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010535};
10536
10537static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10538 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10539 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10540 msm_routing_get_port_mixer,
10541 msm_routing_put_port_mixer),
10542 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10543 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10544 msm_routing_get_port_mixer,
10545 msm_routing_put_port_mixer),
10546 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10547 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10548 msm_routing_get_port_mixer,
10549 msm_routing_put_port_mixer),
10550 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10551 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10552 msm_routing_get_port_mixer,
10553 msm_routing_put_port_mixer),
10554 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10555 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10556 msm_routing_get_port_mixer,
10557 msm_routing_put_port_mixer),
10558 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10559 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10560 msm_routing_get_port_mixer,
10561 msm_routing_put_port_mixer),
10562 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10563 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10564 msm_routing_get_port_mixer,
10565 msm_routing_put_port_mixer),
10566 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10567 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10568 msm_routing_get_port_mixer,
10569 msm_routing_put_port_mixer),
10570 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10571 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10572 msm_routing_get_port_mixer,
10573 msm_routing_put_port_mixer),
10574 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10575 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10576 msm_routing_get_port_mixer,
10577 msm_routing_put_port_mixer),
10578 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10579 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10580 msm_routing_get_port_mixer,
10581 msm_routing_put_port_mixer),
10582 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10583 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10584 msm_routing_get_port_mixer,
10585 msm_routing_put_port_mixer),
10586 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10587 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10588 msm_routing_get_port_mixer,
10589 msm_routing_put_port_mixer),
10590 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10591 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10592 msm_routing_get_port_mixer,
10593 msm_routing_put_port_mixer),
10594 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10595 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10596 msm_routing_get_port_mixer,
10597 msm_routing_put_port_mixer),
10598 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10599 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10600 msm_routing_get_port_mixer,
10601 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010602 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10603 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10604 msm_routing_get_port_mixer,
10605 msm_routing_put_port_mixer),
10606 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10607 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10608 msm_routing_get_port_mixer,
10609 msm_routing_put_port_mixer),
10610 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10611 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10612 msm_routing_get_port_mixer,
10613 msm_routing_put_port_mixer),
10614 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10615 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10616 msm_routing_get_port_mixer,
10617 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010618};
10619
10620static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10621 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10622 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10623 msm_routing_get_port_mixer,
10624 msm_routing_put_port_mixer),
10625 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10626 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10627 msm_routing_get_port_mixer,
10628 msm_routing_put_port_mixer),
10629 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10630 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10631 msm_routing_get_port_mixer,
10632 msm_routing_put_port_mixer),
10633 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10634 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10635 msm_routing_get_port_mixer,
10636 msm_routing_put_port_mixer),
10637 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10638 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10639 msm_routing_get_port_mixer,
10640 msm_routing_put_port_mixer),
10641 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10642 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10643 msm_routing_get_port_mixer,
10644 msm_routing_put_port_mixer),
10645 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10646 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10647 msm_routing_get_port_mixer,
10648 msm_routing_put_port_mixer),
10649 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10650 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10651 msm_routing_get_port_mixer,
10652 msm_routing_put_port_mixer),
10653 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10654 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10655 msm_routing_get_port_mixer,
10656 msm_routing_put_port_mixer),
10657 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10658 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10659 msm_routing_get_port_mixer,
10660 msm_routing_put_port_mixer),
10661 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10662 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10663 msm_routing_get_port_mixer,
10664 msm_routing_put_port_mixer),
10665 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10666 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10667 msm_routing_get_port_mixer,
10668 msm_routing_put_port_mixer),
10669 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10670 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10671 msm_routing_get_port_mixer,
10672 msm_routing_put_port_mixer),
10673 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10674 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10675 msm_routing_get_port_mixer,
10676 msm_routing_put_port_mixer),
10677 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10678 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10679 msm_routing_get_port_mixer,
10680 msm_routing_put_port_mixer),
10681 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10682 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10683 msm_routing_get_port_mixer,
10684 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010685 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10686 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10687 msm_routing_get_port_mixer,
10688 msm_routing_put_port_mixer),
10689 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10690 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10691 msm_routing_get_port_mixer,
10692 msm_routing_put_port_mixer),
10693 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10694 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10695 msm_routing_get_port_mixer,
10696 msm_routing_put_port_mixer),
10697 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10698 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10699 msm_routing_get_port_mixer,
10700 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010701};
10702
10703static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10704 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10705 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10706 msm_routing_get_port_mixer,
10707 msm_routing_put_port_mixer),
10708 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10709 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10710 msm_routing_get_port_mixer,
10711 msm_routing_put_port_mixer),
10712 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10713 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10714 msm_routing_get_port_mixer,
10715 msm_routing_put_port_mixer),
10716 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10717 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10718 msm_routing_get_port_mixer,
10719 msm_routing_put_port_mixer),
10720 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10721 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10722 msm_routing_get_port_mixer,
10723 msm_routing_put_port_mixer),
10724 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10725 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10726 msm_routing_get_port_mixer,
10727 msm_routing_put_port_mixer),
10728 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10729 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10730 msm_routing_get_port_mixer,
10731 msm_routing_put_port_mixer),
10732 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10733 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10734 msm_routing_get_port_mixer,
10735 msm_routing_put_port_mixer),
10736 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10737 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10738 msm_routing_get_port_mixer,
10739 msm_routing_put_port_mixer),
10740 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10741 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10742 msm_routing_get_port_mixer,
10743 msm_routing_put_port_mixer),
10744 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10745 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10746 msm_routing_get_port_mixer,
10747 msm_routing_put_port_mixer),
10748 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10749 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10750 msm_routing_get_port_mixer,
10751 msm_routing_put_port_mixer),
10752 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10753 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10754 msm_routing_get_port_mixer,
10755 msm_routing_put_port_mixer),
10756 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10757 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10758 msm_routing_get_port_mixer,
10759 msm_routing_put_port_mixer),
10760 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10761 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10762 msm_routing_get_port_mixer,
10763 msm_routing_put_port_mixer),
10764 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10765 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10766 msm_routing_get_port_mixer,
10767 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010768 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10769 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10770 msm_routing_get_port_mixer,
10771 msm_routing_put_port_mixer),
10772 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10773 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10774 msm_routing_get_port_mixer,
10775 msm_routing_put_port_mixer),
10776 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10777 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10778 msm_routing_get_port_mixer,
10779 msm_routing_put_port_mixer),
10780 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10781 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10782 msm_routing_get_port_mixer,
10783 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010784};
10785
10786static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10787 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10788 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10789 msm_routing_get_port_mixer,
10790 msm_routing_put_port_mixer),
10791 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10792 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10793 msm_routing_get_port_mixer,
10794 msm_routing_put_port_mixer),
10795 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10796 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10797 msm_routing_get_port_mixer,
10798 msm_routing_put_port_mixer),
10799 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10800 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10801 msm_routing_get_port_mixer,
10802 msm_routing_put_port_mixer),
10803 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10804 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10805 msm_routing_get_port_mixer,
10806 msm_routing_put_port_mixer),
10807 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10808 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10809 msm_routing_get_port_mixer,
10810 msm_routing_put_port_mixer),
10811 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10812 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10813 msm_routing_get_port_mixer,
10814 msm_routing_put_port_mixer),
10815 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10816 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10817 msm_routing_get_port_mixer,
10818 msm_routing_put_port_mixer),
10819 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10820 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10821 msm_routing_get_port_mixer,
10822 msm_routing_put_port_mixer),
10823 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10824 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10825 msm_routing_get_port_mixer,
10826 msm_routing_put_port_mixer),
10827 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10828 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10829 msm_routing_get_port_mixer,
10830 msm_routing_put_port_mixer),
10831 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10832 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10833 msm_routing_get_port_mixer,
10834 msm_routing_put_port_mixer),
10835 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10836 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10837 msm_routing_get_port_mixer,
10838 msm_routing_put_port_mixer),
10839 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10840 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10841 msm_routing_get_port_mixer,
10842 msm_routing_put_port_mixer),
10843 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10844 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10845 msm_routing_get_port_mixer,
10846 msm_routing_put_port_mixer),
10847 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10848 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10849 msm_routing_get_port_mixer,
10850 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010851 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10852 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10853 msm_routing_get_port_mixer,
10854 msm_routing_put_port_mixer),
10855 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10856 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10857 msm_routing_get_port_mixer,
10858 msm_routing_put_port_mixer),
10859 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10860 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10861 msm_routing_get_port_mixer,
10862 msm_routing_put_port_mixer),
10863 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10864 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10865 msm_routing_get_port_mixer,
10866 msm_routing_put_port_mixer),
10867};
10868
10869static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
10870 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10871 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10872 msm_routing_get_port_mixer,
10873 msm_routing_put_port_mixer),
10874 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10875 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10876 msm_routing_get_port_mixer,
10877 msm_routing_put_port_mixer),
10878 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10879 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10880 msm_routing_get_port_mixer,
10881 msm_routing_put_port_mixer),
10882 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10883 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10884 msm_routing_get_port_mixer,
10885 msm_routing_put_port_mixer),
10886 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10887 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10888 msm_routing_get_port_mixer,
10889 msm_routing_put_port_mixer),
10890 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10891 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10892 msm_routing_get_port_mixer,
10893 msm_routing_put_port_mixer),
10894 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10895 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10896 msm_routing_get_port_mixer,
10897 msm_routing_put_port_mixer),
10898 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10899 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10900 msm_routing_get_port_mixer,
10901 msm_routing_put_port_mixer),
10902 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10903 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10904 msm_routing_get_port_mixer,
10905 msm_routing_put_port_mixer),
10906 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10907 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10908 msm_routing_get_port_mixer,
10909 msm_routing_put_port_mixer),
10910 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10911 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10912 msm_routing_get_port_mixer,
10913 msm_routing_put_port_mixer),
10914 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10915 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10916 msm_routing_get_port_mixer,
10917 msm_routing_put_port_mixer),
10918 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10919 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10920 msm_routing_get_port_mixer,
10921 msm_routing_put_port_mixer),
10922 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10923 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10924 msm_routing_get_port_mixer,
10925 msm_routing_put_port_mixer),
10926 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10927 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10928 msm_routing_get_port_mixer,
10929 msm_routing_put_port_mixer),
10930 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10931 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10932 msm_routing_get_port_mixer,
10933 msm_routing_put_port_mixer),
10934 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10935 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10936 msm_routing_get_port_mixer,
10937 msm_routing_put_port_mixer),
10938 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10939 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10940 msm_routing_get_port_mixer,
10941 msm_routing_put_port_mixer),
10942 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10943 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10944 msm_routing_get_port_mixer,
10945 msm_routing_put_port_mixer),
10946 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10947 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10948 msm_routing_get_port_mixer,
10949 msm_routing_put_port_mixer),
10950};
10951
10952static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
10953 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10954 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10955 msm_routing_get_port_mixer,
10956 msm_routing_put_port_mixer),
10957 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10958 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10959 msm_routing_get_port_mixer,
10960 msm_routing_put_port_mixer),
10961 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10962 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10963 msm_routing_get_port_mixer,
10964 msm_routing_put_port_mixer),
10965 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10966 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10967 msm_routing_get_port_mixer,
10968 msm_routing_put_port_mixer),
10969 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10970 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10971 msm_routing_get_port_mixer,
10972 msm_routing_put_port_mixer),
10973 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10974 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10975 msm_routing_get_port_mixer,
10976 msm_routing_put_port_mixer),
10977 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10978 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10979 msm_routing_get_port_mixer,
10980 msm_routing_put_port_mixer),
10981 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10982 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10983 msm_routing_get_port_mixer,
10984 msm_routing_put_port_mixer),
10985 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10986 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10987 msm_routing_get_port_mixer,
10988 msm_routing_put_port_mixer),
10989 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10990 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10991 msm_routing_get_port_mixer,
10992 msm_routing_put_port_mixer),
10993 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10994 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10995 msm_routing_get_port_mixer,
10996 msm_routing_put_port_mixer),
10997 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10998 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10999 msm_routing_get_port_mixer,
11000 msm_routing_put_port_mixer),
11001 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11002 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11003 msm_routing_get_port_mixer,
11004 msm_routing_put_port_mixer),
11005 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11006 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11007 msm_routing_get_port_mixer,
11008 msm_routing_put_port_mixer),
11009 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11010 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11011 msm_routing_get_port_mixer,
11012 msm_routing_put_port_mixer),
11013 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11014 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11015 msm_routing_get_port_mixer,
11016 msm_routing_put_port_mixer),
11017 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11018 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11019 msm_routing_get_port_mixer,
11020 msm_routing_put_port_mixer),
11021 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11022 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11023 msm_routing_get_port_mixer,
11024 msm_routing_put_port_mixer),
11025 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11026 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11027 msm_routing_get_port_mixer,
11028 msm_routing_put_port_mixer),
11029 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11030 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11031 msm_routing_get_port_mixer,
11032 msm_routing_put_port_mixer),
11033};
11034
11035static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
11036 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11037 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11038 msm_routing_get_port_mixer,
11039 msm_routing_put_port_mixer),
11040 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11041 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11042 msm_routing_get_port_mixer,
11043 msm_routing_put_port_mixer),
11044 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11045 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11046 msm_routing_get_port_mixer,
11047 msm_routing_put_port_mixer),
11048 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11049 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11050 msm_routing_get_port_mixer,
11051 msm_routing_put_port_mixer),
11052 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11053 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11054 msm_routing_get_port_mixer,
11055 msm_routing_put_port_mixer),
11056 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11057 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11058 msm_routing_get_port_mixer,
11059 msm_routing_put_port_mixer),
11060 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11061 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11062 msm_routing_get_port_mixer,
11063 msm_routing_put_port_mixer),
11064 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11065 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11066 msm_routing_get_port_mixer,
11067 msm_routing_put_port_mixer),
11068 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11069 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11070 msm_routing_get_port_mixer,
11071 msm_routing_put_port_mixer),
11072 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11073 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11074 msm_routing_get_port_mixer,
11075 msm_routing_put_port_mixer),
11076 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11077 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11078 msm_routing_get_port_mixer,
11079 msm_routing_put_port_mixer),
11080 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11081 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11082 msm_routing_get_port_mixer,
11083 msm_routing_put_port_mixer),
11084 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11085 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11086 msm_routing_get_port_mixer,
11087 msm_routing_put_port_mixer),
11088 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11089 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11090 msm_routing_get_port_mixer,
11091 msm_routing_put_port_mixer),
11092 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11093 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11094 msm_routing_get_port_mixer,
11095 msm_routing_put_port_mixer),
11096 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11097 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11098 msm_routing_get_port_mixer,
11099 msm_routing_put_port_mixer),
11100 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11101 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11102 msm_routing_get_port_mixer,
11103 msm_routing_put_port_mixer),
11104 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11105 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11106 msm_routing_get_port_mixer,
11107 msm_routing_put_port_mixer),
11108 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11109 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11110 msm_routing_get_port_mixer,
11111 msm_routing_put_port_mixer),
11112 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11113 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11114 msm_routing_get_port_mixer,
11115 msm_routing_put_port_mixer),
11116};
11117
11118static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
11119 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11120 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11121 msm_routing_get_port_mixer,
11122 msm_routing_put_port_mixer),
11123 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11124 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11125 msm_routing_get_port_mixer,
11126 msm_routing_put_port_mixer),
11127 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11128 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11129 msm_routing_get_port_mixer,
11130 msm_routing_put_port_mixer),
11131 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11132 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11133 msm_routing_get_port_mixer,
11134 msm_routing_put_port_mixer),
11135 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11136 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11137 msm_routing_get_port_mixer,
11138 msm_routing_put_port_mixer),
11139 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11140 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11141 msm_routing_get_port_mixer,
11142 msm_routing_put_port_mixer),
11143 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11144 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11145 msm_routing_get_port_mixer,
11146 msm_routing_put_port_mixer),
11147 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11148 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11149 msm_routing_get_port_mixer,
11150 msm_routing_put_port_mixer),
11151 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11152 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11153 msm_routing_get_port_mixer,
11154 msm_routing_put_port_mixer),
11155 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11156 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11157 msm_routing_get_port_mixer,
11158 msm_routing_put_port_mixer),
11159 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11160 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11161 msm_routing_get_port_mixer,
11162 msm_routing_put_port_mixer),
11163 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11164 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11165 msm_routing_get_port_mixer,
11166 msm_routing_put_port_mixer),
11167 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11168 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11169 msm_routing_get_port_mixer,
11170 msm_routing_put_port_mixer),
11171 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11172 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11173 msm_routing_get_port_mixer,
11174 msm_routing_put_port_mixer),
11175 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11176 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11177 msm_routing_get_port_mixer,
11178 msm_routing_put_port_mixer),
11179 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11180 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11181 msm_routing_get_port_mixer,
11182 msm_routing_put_port_mixer),
11183 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11184 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11185 msm_routing_get_port_mixer,
11186 msm_routing_put_port_mixer),
11187 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11188 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11189 msm_routing_get_port_mixer,
11190 msm_routing_put_port_mixer),
11191 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11192 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11193 msm_routing_get_port_mixer,
11194 msm_routing_put_port_mixer),
11195 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11196 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11197 msm_routing_get_port_mixer,
11198 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011199};
11200
11201static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
11202 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11203 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11204 msm_routing_put_port_mixer),
11205 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11206 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11207 msm_routing_put_port_mixer),
11208 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11209 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11210 msm_routing_put_port_mixer),
11211 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11212 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11213 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011214 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11215 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11216 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011217 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11218 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11219 msm_routing_put_port_mixer),
11220 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11221 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11222 msm_routing_put_port_mixer),
11223};
11224
11225static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
11226 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11227 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11228 msm_routing_put_port_mixer),
11229 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11230 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11231 msm_routing_put_port_mixer),
11232 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11233 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11234 msm_routing_put_port_mixer),
11235 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11236 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11237 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011238 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11239 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11240 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011241 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11242 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11243 msm_routing_put_port_mixer),
11244 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11245 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
11246 msm_routing_put_port_mixer),
11247 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11248 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11249 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080011250 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11251 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
11252 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011253};
11254
11255static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
11256 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11257 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11258 msm_routing_put_listen_mixer),
11259 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11260 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11261 msm_routing_put_listen_mixer),
11262 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11263 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11264 msm_routing_put_listen_mixer),
11265 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11266 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11267 msm_routing_put_listen_mixer),
11268 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11269 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11270 msm_routing_put_listen_mixer),
11271 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11272 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11273 msm_routing_put_listen_mixer),
11274 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11275 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11276 msm_routing_put_listen_mixer),
11277 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11278 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11279 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011280 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11281 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11282 msm_routing_put_listen_mixer),
11283 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11284 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11285 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011286};
11287
11288static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
11289 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11290 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11291 msm_routing_put_listen_mixer),
11292 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11293 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11294 msm_routing_put_listen_mixer),
11295 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11296 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11297 msm_routing_put_listen_mixer),
11298 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11299 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11300 msm_routing_put_listen_mixer),
11301 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11302 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11303 msm_routing_put_listen_mixer),
11304 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11305 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11306 msm_routing_put_listen_mixer),
11307 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11308 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11309 msm_routing_put_listen_mixer),
11310 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11311 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11312 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011313 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11314 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11315 msm_routing_put_listen_mixer),
11316 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11317 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11318 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011319};
11320
11321static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
11322 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11323 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11324 msm_routing_put_listen_mixer),
11325 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11326 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11327 msm_routing_put_listen_mixer),
11328 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11329 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11330 msm_routing_put_listen_mixer),
11331 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11332 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11333 msm_routing_put_listen_mixer),
11334 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11335 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11336 msm_routing_put_listen_mixer),
11337 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11338 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11339 msm_routing_put_listen_mixer),
11340 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11341 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11342 msm_routing_put_listen_mixer),
11343 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11344 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11345 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011346 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11347 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11348 msm_routing_put_listen_mixer),
11349 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11350 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11351 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011352};
11353
11354static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11355 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11356 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11357 msm_routing_put_listen_mixer),
11358 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11359 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11360 msm_routing_put_listen_mixer),
11361 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11362 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11363 msm_routing_put_listen_mixer),
11364 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11365 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11366 msm_routing_put_listen_mixer),
11367 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11368 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11369 msm_routing_put_listen_mixer),
11370 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11371 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11372 msm_routing_put_listen_mixer),
11373 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11374 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11375 msm_routing_put_listen_mixer),
11376 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11377 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11378 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011379 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11380 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11381 msm_routing_put_listen_mixer),
11382 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11383 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11384 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011385};
11386
11387static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11388 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11389 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11390 msm_routing_put_listen_mixer),
11391 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11392 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11393 msm_routing_put_listen_mixer),
11394 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11395 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11396 msm_routing_put_listen_mixer),
11397 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11398 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11399 msm_routing_put_listen_mixer),
11400 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11401 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11402 msm_routing_put_listen_mixer),
11403 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11404 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11405 msm_routing_put_listen_mixer),
11406 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11407 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11408 msm_routing_put_listen_mixer),
11409 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11410 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11411 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011412 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11413 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11414 msm_routing_put_listen_mixer),
11415 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11416 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11417 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011418};
11419
11420static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11421 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11422 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11423 msm_routing_put_listen_mixer),
11424 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11425 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11426 msm_routing_put_listen_mixer),
11427 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11428 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11429 msm_routing_put_listen_mixer),
11430 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11431 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11432 msm_routing_put_listen_mixer),
11433 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11434 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11435 msm_routing_put_listen_mixer),
11436 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11437 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11438 msm_routing_put_listen_mixer),
11439 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11440 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11441 msm_routing_put_listen_mixer),
11442 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11443 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11444 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011445 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11446 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11447 msm_routing_put_listen_mixer),
11448 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11449 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11450 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011451};
11452
11453static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11454 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11455 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11456 msm_routing_put_listen_mixer),
11457 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11458 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11459 msm_routing_put_listen_mixer),
11460 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11461 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11462 msm_routing_put_listen_mixer),
11463 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11464 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11465 msm_routing_put_listen_mixer),
11466 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11467 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11468 msm_routing_put_listen_mixer),
11469 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11470 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11471 msm_routing_put_listen_mixer),
11472 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11473 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11474 msm_routing_put_listen_mixer),
11475 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11476 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11477 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011478 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11479 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11480 msm_routing_put_listen_mixer),
11481 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11482 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11483 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011484};
11485
11486static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11487 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11488 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11489 msm_routing_put_listen_mixer),
11490 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11491 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11492 msm_routing_put_listen_mixer),
11493 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11494 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11495 msm_routing_put_listen_mixer),
11496 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11497 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11498 msm_routing_put_listen_mixer),
11499 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11500 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11501 msm_routing_put_listen_mixer),
11502 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11503 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11504 msm_routing_put_listen_mixer),
11505 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11506 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11507 msm_routing_put_listen_mixer),
11508 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11509 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11510 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011511 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11512 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11513 msm_routing_put_listen_mixer),
11514 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11515 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11516 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011517};
11518
11519static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11520 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11521 0, 1, 0, msm_routing_get_switch_mixer,
11522 msm_routing_put_switch_mixer);
11523
11524static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11525 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11526 0, 1, 0, msm_routing_get_switch_mixer,
11527 msm_routing_put_switch_mixer);
11528
11529static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11530 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11531 0, 1, 0, msm_routing_get_switch_mixer,
11532 msm_routing_put_switch_mixer);
11533
11534static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11535 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11536 0, 1, 0, msm_routing_get_switch_mixer,
11537 msm_routing_put_switch_mixer);
11538
11539static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11540 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11541 0, 1, 0, msm_routing_get_switch_mixer,
11542 msm_routing_put_switch_mixer);
11543
11544static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11545 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11546 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11547 msm_routing_put_fm_pcmrx_switch_mixer);
11548
11549static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11550 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11551 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11552 msm_routing_put_int0_mi2s_switch_mixer);
11553
11554static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11555 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11556 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11557 msm_routing_put_int4_mi2s_switch_mixer);
11558
11559static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11560 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11561 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11562 msm_routing_put_pri_mi2s_switch_mixer);
11563
11564static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11565 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11566 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11567 msm_routing_put_sec_mi2s_switch_mixer);
11568
11569static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11570 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11571 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11572 msm_routing_put_tert_mi2s_switch_mixer);
11573
11574static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11575 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11576 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11577 msm_routing_put_quat_mi2s_switch_mixer);
11578
Rohit Kumara5077932017-09-10 22:05:05 +053011579static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11580 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11581 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11582 msm_routing_put_quin_mi2s_switch_mixer);
11583
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011584static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11585 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11586 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11587 msm_routing_put_hfp_switch_mixer);
11588
11589static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11590 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11591 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11592 msm_routing_put_hfp_switch_mixer);
11593
11594static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11595 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11596 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11597 msm_routing_put_hfp_switch_mixer);
11598
11599static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11600 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11601 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11602 msm_routing_put_hfp_switch_mixer);
11603
11604static const struct snd_kcontrol_new usb_switch_mixer_controls =
11605 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11606 0, 1, 0, msm_routing_get_usb_switch_mixer,
11607 msm_routing_put_usb_switch_mixer);
11608
11609static const struct soc_enum lsm_port_enum =
11610 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11611
11612static const char * const lsm_func_text[] = {
11613 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11614};
11615static const struct soc_enum lsm_func_enum =
11616 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11617
11618static const struct snd_kcontrol_new lsm_controls[] = {
11619 /* kcontrol of lsm_function */
11620 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11621 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11622 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11623 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11624 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11625 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11626 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11627 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11628 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11629 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11630 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11631 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11632 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11633 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11634 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11635 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11636 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11637 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Ashish Jain01b10322018-05-12 15:37:44 +053011638 SOC_ENUM_EXT(PRI_TDM_TX_2_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11639 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11640 SOC_ENUM_EXT(PRI_TDM_TX_3_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11641 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011642 /* kcontrol of lsm_port */
11643 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11644 msm_routing_lsm_port_get,
11645 msm_routing_lsm_port_put),
11646 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11647 msm_routing_lsm_port_get,
11648 msm_routing_lsm_port_put),
11649 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11650 msm_routing_lsm_port_get,
11651 msm_routing_lsm_port_put),
11652 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11653 msm_routing_lsm_port_get,
11654 msm_routing_lsm_port_put),
11655 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11656 msm_routing_lsm_port_get,
11657 msm_routing_lsm_port_put),
11658 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11659 msm_routing_lsm_port_get,
11660 msm_routing_lsm_port_put),
11661 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11662 msm_routing_lsm_port_get,
11663 msm_routing_lsm_port_put),
11664 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11665 msm_routing_lsm_port_get,
11666 msm_routing_lsm_port_put),
11667};
11668
11669static const char * const aanc_slim_0_rx_text[] = {
11670 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11671 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11672};
11673
11674static const struct soc_enum aanc_slim_0_rx_enum =
11675 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11676 aanc_slim_0_rx_text);
11677
11678static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11679 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11680 msm_routing_slim_0_rx_aanc_mux_get,
11681 msm_routing_slim_0_rx_aanc_mux_put)
11682};
11683
11684static int msm_routing_get_stereo_to_custom_stereo_control(
11685 struct snd_kcontrol *kcontrol,
11686 struct snd_ctl_elem_value *ucontrol)
11687{
11688 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11689 return 0;
11690}
11691
11692static int msm_routing_put_stereo_to_custom_stereo_control(
11693 struct snd_kcontrol *kcontrol,
11694 struct snd_ctl_elem_value *ucontrol)
11695{
11696 int flag = 0, i = 0, rc = 0, idx = 0;
11697 int be_index = 0, port_id, topo_id;
11698 unsigned int session_id = 0;
11699 uint16_t op_FL_ip_FL_weight = 0;
11700 uint16_t op_FL_ip_FR_weight = 0;
11701 uint16_t op_FR_ip_FL_weight = 0;
11702 uint16_t op_FR_ip_FR_weight = 0;
11703
11704 flag = ucontrol->value.integer.value[0];
11705 pr_debug("%s E flag %d\n", __func__, flag);
11706
11707 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11708 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11709 __func__, is_custom_stereo_on, flag);
11710 return 0;
11711 }
11712 is_custom_stereo_on = flag ? true : false;
11713 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11714 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11715 port_id = msm_bedais[be_index].port_id;
11716 if (!msm_bedais[be_index].active)
11717 continue;
11718 if ((port_id != SLIMBUS_0_RX) &&
11719 (port_id != RT_PROXY_PORT_001_RX) &&
11720 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11721 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11722 continue;
11723
11724 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11725 MSM_FRONTEND_DAI_MM_SIZE) {
11726 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11727 LEGACY_PCM_MODE)
11728 goto skip_send_custom_stereo;
11729 session_id =
11730 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11731 if (is_custom_stereo_on) {
11732 op_FL_ip_FL_weight =
11733 Q14_GAIN_ZERO_POINT_FIVE;
11734 op_FL_ip_FR_weight =
11735 Q14_GAIN_ZERO_POINT_FIVE;
11736 op_FR_ip_FL_weight =
11737 Q14_GAIN_ZERO_POINT_FIVE;
11738 op_FR_ip_FR_weight =
11739 Q14_GAIN_ZERO_POINT_FIVE;
11740 } else {
11741 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11742 op_FL_ip_FR_weight = 0;
11743 op_FR_ip_FL_weight = 0;
11744 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11745 }
11746 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11747 unsigned long copp =
11748 session_copp_map[i]
11749 [SESSION_TYPE_RX][be_index];
11750 if (!test_bit(idx, &copp))
11751 goto skip_send_custom_stereo;
11752 topo_id = adm_get_topology_for_port_copp_idx(
11753 msm_bedais[be_index].port_id, idx);
11754 if (topo_id < 0)
11755 pr_debug("%s:Err:custom stereo topo %d",
11756 __func__, topo_id);
11757 pr_debug("idx %d\n", idx);
11758 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11759 rc = msm_ds2_dap_set_custom_stereo_onoff
11760 (msm_bedais[be_index].port_id,
11761 idx, is_custom_stereo_on);
11762 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11763 rc = dolby_dap_set_custom_stereo_onoff(
11764 msm_bedais[be_index].port_id,
11765 idx, is_custom_stereo_on);
11766 else
11767 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11768 (msm_bedais[be_index].port_id,
11769 idx, session_id,
11770 op_FL_ip_FL_weight,
11771 op_FL_ip_FR_weight,
11772 op_FR_ip_FL_weight,
11773 op_FR_ip_FR_weight);
11774 if (rc < 0)
11775skip_send_custom_stereo:
11776 pr_err("%s: err setting custom stereo\n",
11777 __func__);
11778 }
11779
11780 }
11781 }
11782 return 0;
11783}
11784
11785static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11786 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11787 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11788 msm_routing_put_stereo_to_custom_stereo_control),
11789};
11790
11791static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11792 struct snd_ctl_elem_value *ucontrol)
11793{
11794 return 0;
11795}
11796
11797static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11798 struct snd_ctl_elem_value *ucontrol)
11799{
11800 int i = 0, j;
11801 int num_app_types = ucontrol->value.integer.value[i++];
11802
11803 pr_debug("%s\n", __func__);
11804
11805 memset(app_type_cfg, 0, MAX_APP_TYPES*
11806 sizeof(struct msm_pcm_routing_app_type_data));
11807 if (num_app_types > MAX_APP_TYPES) {
11808 pr_err("%s: number of app types exceed the max supported\n",
11809 __func__);
11810 return -EINVAL;
11811 }
11812 for (j = 0; j < num_app_types; j++) {
11813 app_type_cfg[j].app_type =
11814 ucontrol->value.integer.value[i++];
11815 app_type_cfg[j].sample_rate =
11816 ucontrol->value.integer.value[i++];
11817 app_type_cfg[j].bit_width =
11818 ucontrol->value.integer.value[i++];
11819 }
11820
11821 return 0;
11822}
11823
11824static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
11825 struct snd_ctl_elem_value *ucontrol)
11826{
11827 int j, fe_id, be_id, port_type;
11828 int ret = 0;
11829 unsigned long copp;
11830 struct msm_pcm_routing_bdai_data *bedai;
11831 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11832 SESSION_TYPE_RX;
11833 int app_type = ucontrol->value.integer.value[1];
11834 int gain = (ucontrol->value.integer.value[2] +
11835 ucontrol->value.integer.value[3])/2;
11836
11837 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11838 MSM_AFE_PORT_TYPE_TX;
11839
11840 mutex_lock(&routing_lock);
11841 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11842 if (is_be_dai_extproc(be_id))
11843 continue;
11844
11845 bedai = &msm_bedais[be_id];
11846 if (afe_get_port_type(bedai->port_id) != port_type)
11847 continue;
11848
11849 if (!bedai->active)
11850 continue;
11851
11852 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11853 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11854 continue;
11855
11856 if (app_type !=
11857 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11858 continue;
11859
11860 copp = session_copp_map[fe_id][dir][be_id];
11861 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
11862 if (!test_bit(j, &copp))
11863 continue;
11864 ret |= adm_set_volume(bedai->port_id, j, gain);
11865 }
11866 }
11867 }
11868 mutex_unlock(&routing_lock);
11869 return ret ? -EINVAL : 0;
11870}
11871
11872static const struct snd_kcontrol_new app_type_cfg_controls[] = {
11873 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
11874 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
11875 msm_routing_put_app_type_cfg_control),
11876 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
11877 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
11878};
11879
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070011880static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
11881 struct snd_ctl_elem_value *ucontrol)
11882{
11883 int copp_idx, fe_id, be_id, port_type;
11884 int ret = 0;
11885 unsigned long copp;
11886 struct msm_pcm_routing_bdai_data *bedai;
11887 char *param_data = NULL;
11888 uint32_t *update_param_data = NULL;
11889 uint32_t param_size = sizeof(uint32_t) +
11890 sizeof(struct adm_param_data_v5);
11891 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11892 SESSION_TYPE_RX;
11893 int app_type = ucontrol->value.integer.value[1];
11894 int module_id = ucontrol->value.integer.value[2];
11895 int instance_id = ucontrol->value.integer.value[3];
11896 int param_id = ucontrol->value.integer.value[4];
11897 int param_value = ucontrol->value.integer.value[5];
11898
11899 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11900 MSM_AFE_PORT_TYPE_TX;
11901 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
11902 __func__, app_type, module_id,
11903 instance_id, param_id, param_value);
11904
11905 param_data = kzalloc(param_size, GFP_KERNEL);
11906 if (!param_data)
11907 return -ENOMEM;
11908
11909 update_param_data = (uint32_t *)param_data;
11910 *update_param_data++ = module_id;
11911 *update_param_data++ = param_id;
11912 *update_param_data++ = sizeof(uint32_t);
11913 *update_param_data++ = param_value;
11914
11915 mutex_lock(&routing_lock);
11916 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11917 if (is_be_dai_extproc(be_id))
11918 continue;
11919
11920 bedai = &msm_bedais[be_id];
11921 if (afe_get_port_type(bedai->port_id) != port_type)
11922 continue;
11923
11924 if (!bedai->active)
11925 continue;
11926
11927 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11928 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11929 continue;
11930
11931 if (app_type !=
11932 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11933 continue;
11934
11935 copp = session_copp_map[fe_id][dir][be_id];
11936 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
11937 copp_idx++) {
11938 if (!test_bit(copp_idx, &copp))
11939 continue;
11940
11941 ret = adm_send_params_v5(bedai->port_id,
11942 copp_idx,
11943 param_data,
11944 param_size);
11945 if (ret) {
11946 pr_err("%s: Setting param failed with err=%d\n",
11947 __func__, ret);
11948 ret = -EINVAL;
11949 goto done;
11950 }
11951 }
11952 }
11953 }
11954done:
11955 mutex_unlock(&routing_lock);
11956 kfree(param_data);
11957 return ret;
11958}
11959
11960static const struct snd_kcontrol_new module_cfg_controls[] = {
11961 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
11962 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
11963};
11964
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011965static int msm_routing_get_lsm_app_type_cfg_control(
11966 struct snd_kcontrol *kcontrol,
11967 struct snd_ctl_elem_value *ucontrol)
11968{
11969 return 0;
11970}
11971
11972static int msm_routing_put_lsm_app_type_cfg_control(
11973 struct snd_kcontrol *kcontrol,
11974 struct snd_ctl_elem_value *ucontrol)
11975{
11976 int i = 0, j;
11977 int num_app_types = ucontrol->value.integer.value[i++];
11978
11979 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
11980 sizeof(struct msm_pcm_routing_app_type_data));
11981 if (num_app_types > MAX_APP_TYPES) {
11982 pr_err("%s: number of app types exceed the max supported\n",
11983 __func__);
11984 return -EINVAL;
11985 }
11986 for (j = 0; j < num_app_types; j++) {
11987 lsm_app_type_cfg[j].app_type =
11988 ucontrol->value.integer.value[i++];
11989 lsm_app_type_cfg[j].sample_rate =
11990 ucontrol->value.integer.value[i++];
11991 lsm_app_type_cfg[j].bit_width =
11992 ucontrol->value.integer.value[i++];
11993 }
11994
11995 return 0;
11996}
11997
11998static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
11999 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
12000 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
12001 msm_routing_put_lsm_app_type_cfg_control),
12002};
12003
12004static int msm_routing_get_use_ds1_or_ds2_control(
12005 struct snd_kcontrol *kcontrol,
12006 struct snd_ctl_elem_value *ucontrol)
12007{
12008 ucontrol->value.integer.value[0] = is_ds2_on;
12009 return 0;
12010}
12011
12012static int msm_routing_put_use_ds1_or_ds2_control(
12013 struct snd_kcontrol *kcontrol,
12014 struct snd_ctl_elem_value *ucontrol)
12015{
12016 is_ds2_on = ucontrol->value.integer.value[0];
12017 return 0;
12018}
12019
12020static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
12021 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
12022 1, 0, msm_routing_get_use_ds1_or_ds2_control,
12023 msm_routing_put_use_ds1_or_ds2_control),
12024};
12025
12026int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
12027 struct snd_ctl_elem_value *ucontrol) {
12028 int rc = 0;
12029 int be_idx = 0;
12030 char *param_value;
12031 int *update_param_value;
12032 uint32_t param_length = sizeof(uint32_t);
12033 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
12034
12035 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
12036 if (!param_value)
12037 return -ENOMEM;
12038
12039 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
12040 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
12041 break;
12042 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
12043 rc = adm_get_params(SLIMBUS_0_TX, 0,
12044 RMS_MODULEID_APPI_PASSTHRU,
12045 RMS_PARAM_FIRST_SAMPLE,
12046 param_length + param_payload_len,
12047 param_value);
12048 if (rc) {
12049 pr_err("%s: get parameters failed:%d\n", __func__, rc);
12050 kfree(param_value);
12051 return -EINVAL;
12052 }
12053 update_param_value = (int *)param_value;
12054 ucontrol->value.integer.value[0] = update_param_value[0];
12055
12056 pr_debug("%s: FROM DSP value[0] 0x%x\n",
12057 __func__, update_param_value[0]);
12058 }
12059 kfree(param_value);
12060 return 0;
12061}
12062
12063static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
12064 struct snd_ctl_elem_value *ucontrol)
12065{
12066 voc_session_id = ucontrol->value.integer.value[0];
12067
12068 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
12069
12070 return 0;
12071}
12072
12073static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
12074 struct snd_ctl_elem_value *ucontrol)
12075{
12076 ucontrol->value.integer.value[0] = voc_session_id;
12077
12078 return 0;
12079}
12080
12081static struct snd_kcontrol_new msm_voc_session_controls[] = {
12082 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
12083 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
12084 msm_voc_session_id_put),
12085};
12086
12087static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
12088 struct snd_ctl_elem_info *uinfo)
12089{
12090 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12091 uinfo->count = sizeof(struct sound_focus_param);
12092
12093 return 0;
12094}
12095
12096static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
12097 struct snd_ctl_elem_value *ucontrol)
12098{
12099 int ret = 0;
12100 struct sound_focus_param soundFocusData;
12101
12102 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12103 sizeof(struct sound_focus_param));
12104 ret = voc_set_sound_focus(soundFocusData);
12105 if (ret) {
12106 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12107 __func__, ret);
12108
12109 ret = -EINVAL;
12110 }
12111
12112 return ret;
12113}
12114
12115static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
12116 struct snd_ctl_elem_value *ucontrol)
12117{
12118 int ret = 0;
12119 struct sound_focus_param soundFocusData;
12120
12121 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
12122
12123 ret = voc_get_sound_focus(&soundFocusData);
12124 if (ret) {
12125 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12126 __func__, ret);
12127
12128 ret = -EINVAL;
12129 goto done;
12130 }
12131 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12132 sizeof(struct sound_focus_param));
12133
12134done:
12135 return ret;
12136}
12137
12138static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
12139 struct snd_ctl_elem_info *uinfo)
12140{
12141 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12142 uinfo->count = sizeof(struct source_tracking_param);
12143
12144 return 0;
12145}
12146
12147static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
12148 struct snd_ctl_elem_value *ucontrol)
12149{
12150 int ret = 0;
12151 struct source_tracking_param sourceTrackingData;
12152
12153 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
12154
12155 ret = voc_get_source_tracking(&sourceTrackingData);
12156 if (ret) {
12157 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12158 __func__, ret);
12159
12160 ret = -EINVAL;
12161 goto done;
12162 }
12163 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12164 sizeof(struct source_tracking_param));
12165
12166done:
12167 return ret;
12168}
12169
12170static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
12171 int *copp_idx)
12172{
12173 int i, idx, be_idx;
12174 int ret = 0;
12175 unsigned long copp;
12176
12177 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
12178
12179 ret = q6audio_validate_port(port_id);
12180 if (ret < 0) {
12181 pr_err("%s: port validation failed id 0x%x ret %d\n",
12182 __func__, port_id, ret);
12183
12184 ret = -EINVAL;
12185 goto done;
12186 }
12187
12188 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
12189 if (msm_bedais[be_idx].port_id == port_id)
12190 break;
12191 }
12192 if (be_idx >= MSM_BACKEND_DAI_MAX) {
12193 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
12194
12195 ret = -EINVAL;
12196 goto done;
12197 }
12198
12199 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
12200 MSM_FRONTEND_DAI_MM_SIZE) {
12201 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
12202 copp = session_copp_map[i]
12203 [session_type][be_idx];
12204 if (test_bit(idx, &copp))
12205 break;
12206 }
12207 if (idx >= MAX_COPPS_PER_PORT)
12208 continue;
12209 else
12210 break;
12211 }
12212 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
12213 pr_err("%s: Invalid FE, exiting\n", __func__);
12214
12215 ret = -EINVAL;
12216 goto done;
12217 }
12218 *copp_idx = idx;
12219 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
12220
12221done:
12222 return ret;
12223}
12224
12225static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
12226 const char *prefix, int *port_id)
12227{
12228 int ret = 0;
12229
12230 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
12231
12232 /*
12233 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
12234 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
12235 * and compare the string with the backend name to derive the port id.
12236 */
12237 if (!strcmp(kcontrol->id.name + strlen(prefix),
12238 "SLIMBUS_0")) {
12239 *port_id = SLIMBUS_0_TX;
12240 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12241 "TERT_MI2S")) {
12242 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
12243 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12244 "INT3_MI2S")) {
12245 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
12246 } else {
12247 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
12248 __func__, kcontrol->id.name);
12249
12250 ret = -EINVAL;
12251 goto done;
12252 }
12253 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
12254 __func__, kcontrol->id.name, *port_id);
12255
12256done:
12257 return ret;
12258}
12259
12260static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
12261 struct snd_ctl_elem_value *ucontrol)
12262{
12263 int ret = 0;
12264 struct sound_focus_param soundFocusData;
12265 int port_id, copp_idx;
12266
12267 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12268 "Sound Focus Audio Tx ", &port_id);
12269 if (ret != 0) {
12270 pr_err("%s: Error in deriving port id, err=%d\n",
12271 __func__, ret);
12272
12273 ret = -EINVAL;
12274 goto done;
12275 }
12276
12277 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12278 &copp_idx);
12279 if (ret) {
12280 pr_err("%s: Could not get copp idx for port_id=%d\n",
12281 __func__, port_id);
12282
12283 ret = -EINVAL;
12284 goto done;
12285 }
12286
12287 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12288 sizeof(struct sound_focus_param));
12289
12290 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
12291 if (ret) {
12292 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12293 __func__, ret);
12294
12295 ret = -EINVAL;
12296 goto done;
12297 }
12298
12299done:
12300 return ret;
12301}
12302
12303static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
12304 struct snd_ctl_elem_value *ucontrol)
12305{
12306 int ret = 0;
12307 struct sound_focus_param soundFocusData;
12308 int port_id, copp_idx;
12309
12310 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12311 "Sound Focus Audio Tx ", &port_id);
12312 if (ret) {
12313 pr_err("%s: Error in deriving port id, err=%d\n",
12314 __func__, ret);
12315
12316 ret = -EINVAL;
12317 goto done;
12318 }
12319
12320 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12321 &copp_idx);
12322 if (ret) {
12323 pr_err("%s: Could not get copp idx for port_id=%d\n",
12324 __func__, port_id);
12325
12326 ret = -EINVAL;
12327 goto done;
12328 }
12329
12330 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
12331 if (ret) {
12332 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12333 __func__, ret);
12334
12335 ret = -EINVAL;
12336 goto done;
12337 }
12338
12339 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12340 sizeof(struct sound_focus_param));
12341
12342done:
12343 return ret;
12344}
12345
12346static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
12347 struct snd_ctl_elem_value *ucontrol)
12348{
12349 int ret = 0;
12350 struct source_tracking_param sourceTrackingData;
12351 int port_id, copp_idx;
12352
12353 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12354 "Source Tracking Audio Tx ", &port_id);
12355 if (ret) {
12356 pr_err("%s: Error in deriving port id, err=%d\n",
12357 __func__, ret);
12358
12359 ret = -EINVAL;
12360 goto done;
12361 }
12362
12363 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12364 &copp_idx);
12365 if (ret) {
12366 pr_err("%s: Could not get copp idx for port_id=%d\n",
12367 __func__, port_id);
12368
12369 ret = -EINVAL;
12370 goto done;
12371 }
12372
12373 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
12374 if (ret) {
12375 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12376 __func__, ret);
12377
12378 ret = -EINVAL;
12379 goto done;
12380 }
12381
12382 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12383 sizeof(struct source_tracking_param));
12384
12385done:
12386 return ret;
12387}
12388
12389static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12390 {
12391 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12392 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12393 .name = "Sound Focus Voice Tx SLIMBUS_0",
12394 .info = msm_sound_focus_info,
12395 .get = msm_voice_sound_focus_get,
12396 .put = msm_voice_sound_focus_put,
12397 },
12398 {
12399 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12400 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12401 .name = "Source Tracking Voice Tx SLIMBUS_0",
12402 .info = msm_source_tracking_info,
12403 .get = msm_voice_source_tracking_get,
12404 },
12405 {
12406 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12407 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12408 .name = "Sound Focus Audio Tx SLIMBUS_0",
12409 .info = msm_sound_focus_info,
12410 .get = msm_audio_sound_focus_get,
12411 .put = msm_audio_sound_focus_put,
12412 },
12413 {
12414 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12415 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12416 .name = "Source Tracking Audio Tx SLIMBUS_0",
12417 .info = msm_source_tracking_info,
12418 .get = msm_audio_source_tracking_get,
12419 },
12420 {
12421 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12422 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12423 .name = "Sound Focus Voice Tx TERT_MI2S",
12424 .info = msm_sound_focus_info,
12425 .get = msm_voice_sound_focus_get,
12426 .put = msm_voice_sound_focus_put,
12427 },
12428 {
12429 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12430 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12431 .name = "Source Tracking Voice Tx TERT_MI2S",
12432 .info = msm_source_tracking_info,
12433 .get = msm_voice_source_tracking_get,
12434 },
12435 {
12436 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12437 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12438 .name = "Sound Focus Audio Tx TERT_MI2S",
12439 .info = msm_sound_focus_info,
12440 .get = msm_audio_sound_focus_get,
12441 .put = msm_audio_sound_focus_put,
12442 },
12443 {
12444 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12445 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12446 .name = "Source Tracking Audio Tx TERT_MI2S",
12447 .info = msm_source_tracking_info,
12448 .get = msm_audio_source_tracking_get,
12449 },
12450 {
12451 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12452 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12453 .name = "Sound Focus Voice Tx INT3_MI2S",
12454 .info = msm_sound_focus_info,
12455 .get = msm_voice_sound_focus_get,
12456 .put = msm_voice_sound_focus_put,
12457 },
12458 {
12459 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12460 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12461 .name = "Source Tracking Voice Tx INT3_MI2S",
12462 .info = msm_source_tracking_info,
12463 .get = msm_voice_source_tracking_get,
12464 },
12465 {
12466 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12467 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12468 .name = "Sound Focus Audio Tx INT3_MI2S",
12469 .info = msm_sound_focus_info,
12470 .get = msm_audio_sound_focus_get,
12471 .put = msm_audio_sound_focus_put,
12472 },
12473 {
12474 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12475 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12476 .name = "Source Tracking Audio Tx INT3_MI2S",
12477 .info = msm_source_tracking_info,
12478 .get = msm_audio_source_tracking_get,
12479 },
12480};
12481
12482static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12483 struct snd_ctl_elem_value *ucontrol)
12484{
12485 int ret = 0;
12486 int item;
12487 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12488
12489 pr_debug("%s item is %d\n", __func__,
12490 ucontrol->value.enumerated.item[0]);
12491 mutex_lock(&routing_lock);
12492 item = ucontrol->value.enumerated.item[0];
12493 if (item < e->items) {
12494 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12495 __func__, e->shift_l, e->values[item]);
12496 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12497 e->values[item] < MSM_BACKEND_DAI_MAX)
12498 /* Enable feedback TX path */
12499 ret = afe_spk_prot_feed_back_cfg(
12500 msm_bedais[e->values[item]].port_id,
12501 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12502 else {
12503 pr_debug("%s values are out of range item %d\n",
12504 __func__, e->values[item]);
12505 /* Disable feedback TX path */
12506 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12507 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12508 else
12509 ret = -EINVAL;
12510 }
12511 } else {
12512 pr_err("%s item value is out of range item\n", __func__);
12513 ret = -EINVAL;
12514 }
12515 mutex_unlock(&routing_lock);
12516 return ret;
12517}
12518
12519static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12520 struct snd_ctl_elem_value *ucontrol)
12521{
12522 int ret = 0;
12523 int item;
12524 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12525
12526 pr_debug("%s item is %d\n", __func__,
12527 ucontrol->value.enumerated.item[0]);
12528 mutex_lock(&routing_lock);
12529 item = ucontrol->value.enumerated.item[0];
12530 if (item < e->items) {
12531 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12532 __func__, e->shift_l, e->values[item]);
12533 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12534 e->values[item] < MSM_BACKEND_DAI_MAX)
12535 /* Enable feedback TX path */
12536 ret = afe_spk_prot_feed_back_cfg(
12537 msm_bedais[e->values[item]].port_id,
12538 msm_bedais[e->shift_l].port_id,
12539 1, 1, 1);
12540 else {
12541 pr_debug("%s values are out of range item %d\n",
12542 __func__, e->values[item]);
12543 /* Disable feedback TX path */
12544 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12545 ret = afe_spk_prot_feed_back_cfg(0,
12546 0, 0, 0, 0);
12547 else
12548 ret = -EINVAL;
12549 }
12550 } else {
12551 pr_err("%s item value is out of range item\n", __func__);
12552 ret = -EINVAL;
12553 }
12554 mutex_unlock(&routing_lock);
12555 return ret;
12556}
12557
12558static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12559 struct snd_ctl_elem_value *ucontrol)
12560{
12561 pr_debug("%s\n", __func__);
12562 return 0;
12563}
12564
12565static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12566 struct snd_ctl_elem_value *ucontrol)
12567{
12568 pr_debug("%s\n", __func__);
12569 ucontrol->value.enumerated.item[0] = 0;
12570 return 0;
12571}
12572
12573static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12574 "ZERO", "SLIM4_TX"
12575};
12576
12577static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12578 "ZERO", "SLIM4_TX"
12579};
12580
12581static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12582 "ZERO", "SENARY_TX"
12583};
12584
12585static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12586 "ZERO", "INT5_MI2S_TX"
12587};
12588
12589static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12590 "ZERO", "INT5_MI2S_TX"
12591};
12592
12593static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12594 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12595};
12596
12597static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12598 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12599};
12600
12601static const int const mi2s_rx_vi_fb_tx_value[] = {
12602 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12603};
12604
12605static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12606 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12607};
12608
12609static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12610 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12611};
12612
12613static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
12614 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12615 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12616 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12617
12618static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
12619 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12620 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12621 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12622
12623static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
12624 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
12625 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12626 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12627
12628static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
12629 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12630 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12631 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12632 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12633
12634static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
12635 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12636 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12637 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12638 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12639
12640static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12641 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12642 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12643 spkr_prot_put_vi_lch_port);
12644
12645static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12646 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12647 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12648 spkr_prot_put_vi_rch_port);
12649
12650static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12651 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12652 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12653 spkr_prot_put_vi_lch_port);
12654
12655static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12656 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12657 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12658 spkr_prot_put_vi_lch_port);
12659
12660static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12661 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12662 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12663 spkr_prot_put_vi_rch_port);
12664
12665static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12666 /* Frontend AIF */
12667 /* Widget name equals to Front-End DAI name<Need confirmation>,
12668 * Stream name must contains substring of front-end dai name
12669 */
12670 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12671 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12672 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12673 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12674 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12675 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12676 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12677 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12678 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12679 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12680 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12681 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12682 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12683 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12684 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12685 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12686 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12687 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12688 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12689 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12690 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12691 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12692 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12693 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12694 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12695 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012696 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012697 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012698 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12699 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12700 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12701 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012702 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12703 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12704 "VoiceMMode1 Playback", 0, 0, 0, 0),
12705 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12706 "VoiceMMode1 Capture", 0, 0, 0, 0),
12707 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12708 "VoiceMMode2 Playback", 0, 0, 0, 0),
12709 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12710 "VoiceMMode2 Capture", 0, 0, 0, 0),
12711 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12712 0, 0, 0, 0),
12713 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12714 0, 0, 0, 0),
12715 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12716 0, 0, 0, 0),
12717 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12718 0, 0, 0, 0),
12719 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12720 0, 0, 0, 0),
12721 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12722 0, 0, 0, 0),
12723 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12724 0, 0, 0, 0),
12725 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12726 0, 0, 0, 0),
12727 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12728 0, 0, 0, 0),
12729 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12730 0, 0, 0, 0),
12731 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12732 0, 0, 0, 0),
12733 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12734 0, 0, 0, 0),
12735 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12736 0, 0, 0, 0),
12737 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12738 0, 0, 0, 0),
12739 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12740 0, 0, 0, 0),
12741 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12742 0, 0, 0, 0),
12743 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12744 0, 0, 0, 0),
12745 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12746 0, 0, 0, 0),
12747 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12748 0, 0, 0, 0),
12749 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12750 0, 0, 0, 0),
12751 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12752 0, 0, 0, 0),
12753 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12754 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12755 0, 0, 0, 0),
12756 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12757 "INT0 MI2S_RX Hostless Playback",
12758 0, 0, 0, 0),
12759 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12760 "INT4 MI2S_RX Hostless Playback",
12761 0, 0, 0, 0),
12762 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12763 "Primary MI2S_RX Hostless Playback",
12764 0, 0, 0, 0),
12765 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12766 "Secondary MI2S_RX Hostless Playback",
12767 0, 0, 0, 0),
12768 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12769 "Tertiary MI2S_RX Hostless Playback",
12770 0, 0, 0, 0),
12771 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12772 "Quaternary MI2S_RX Hostless Playback",
12773 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012774 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12775 "Quinary MI2S_RX Hostless Playback",
12776 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012777
12778 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12779 0, 0, 0, 0),
12780 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
12781 0, 0, 0, 0),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080012782 SND_SOC_DAPM_AIF_IN("SEC_AUXPCM_DL_HL", "SEC_AUXPCM_HOSTLESS Playback",
12783 0, 0, 0, 0),
12784 SND_SOC_DAPM_AIF_OUT("SEC_AUXPCM_UL_HL", "SEC_AUXPCM_HOSTLESS Capture",
12785 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012786 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
12787 0, 0, 0, 0),
12788 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
12789 "INT3 MI2S_TX Hostless Capture",
12790 0, 0, 0, 0),
12791 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
12792 "Tertiary MI2S_TX Hostless Capture",
12793 0, 0, 0, 0),
12794 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
12795 "Secondary MI2S_TX Hostless Capture",
12796 0, 0, 0, 0),
12797 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
12798 "Primary MI2S_TX Hostless Capture",
12799 0, 0, 0, 0),
12800 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
12801 0, 0, 0, 0),
12802 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
12803 0, 0, 0, 0),
12804 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
12805 "Quaternary MI2S_TX Hostless Capture",
12806 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012807 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
12808 "Quinary MI2S_TX Hostless Capture",
12809 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012810
12811 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
12812 "Primary TDM0 Hostless Playback",
12813 0, 0, 0, 0),
12814 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
12815 "Primary TDM0 Hostless Capture",
12816 0, 0, 0, 0),
12817 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
12818 "Primary TDM1 Hostless Playback",
12819 0, 0, 0, 0),
12820 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
12821 "Primary TDM1 Hostless Capture",
12822 0, 0, 0, 0),
12823 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
12824 "Primary TDM2 Hostless Playback",
12825 0, 0, 0, 0),
12826 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
12827 "Primary TDM2 Hostless Capture",
12828 0, 0, 0, 0),
12829 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
12830 "Primary TDM3 Hostless Playback",
12831 0, 0, 0, 0),
12832 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
12833 "Primary TDM3 Hostless Capture",
12834 0, 0, 0, 0),
12835 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
12836 "Primary TDM4 Hostless Playback",
12837 0, 0, 0, 0),
12838 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
12839 "Primary TDM4 Hostless Capture",
12840 0, 0, 0, 0),
12841 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
12842 "Primary TDM5 Hostless Playback",
12843 0, 0, 0, 0),
12844 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
12845 "Primary TDM5 Hostless Capture",
12846 0, 0, 0, 0),
12847 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
12848 "Primary TDM6 Hostless Playback",
12849 0, 0, 0, 0),
12850 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
12851 "Primary TDM6 Hostless Capture",
12852 0, 0, 0, 0),
12853 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
12854 "Primary TDM7 Hostless Playback",
12855 0, 0, 0, 0),
12856 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
12857 "Primary TDM7 Hostless Capture",
12858 0, 0, 0, 0),
12859 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
12860 "Secondary TDM0 Hostless Playback",
12861 0, 0, 0, 0),
12862 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
12863 "Secondary TDM0 Hostless Capture",
12864 0, 0, 0, 0),
12865 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
12866 "Secondary TDM1 Hostless Playback",
12867 0, 0, 0, 0),
12868 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
12869 "Secondary TDM1 Hostless Capture",
12870 0, 0, 0, 0),
12871 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
12872 "Secondary TDM2 Hostless Playback",
12873 0, 0, 0, 0),
12874 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
12875 "Secondary TDM2 Hostless Capture",
12876 0, 0, 0, 0),
12877 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
12878 "Secondary TDM3 Hostless Playback",
12879 0, 0, 0, 0),
12880 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
12881 "Secondary TDM3 Hostless Capture",
12882 0, 0, 0, 0),
12883 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
12884 "Secondary TDM4 Hostless Playback",
12885 0, 0, 0, 0),
12886 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
12887 "Secondary TDM4 Hostless Capture",
12888 0, 0, 0, 0),
12889 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
12890 "Secondary TDM5 Hostless Playback",
12891 0, 0, 0, 0),
12892 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
12893 "Secondary TDM5 Hostless Capture",
12894 0, 0, 0, 0),
12895 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
12896 "Secondary TDM6 Hostless Playback",
12897 0, 0, 0, 0),
12898 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
12899 "Secondary TDM6 Hostless Capture",
12900 0, 0, 0, 0),
12901 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
12902 "Secondary TDM7 Hostless Playback",
12903 0, 0, 0, 0),
12904 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
12905 "Secondary TDM7 Hostless Capture",
12906 0, 0, 0, 0),
12907 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
12908 "Tertiary TDM0 Hostless Playback",
12909 0, 0, 0, 0),
12910 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
12911 "Tertiary TDM0 Hostless Capture",
12912 0, 0, 0, 0),
12913 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
12914 "Tertiary TDM1 Hostless Playback",
12915 0, 0, 0, 0),
12916 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
12917 "Tertiary TDM1 Hostless Capture",
12918 0, 0, 0, 0),
12919 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
12920 "Tertiary TDM2 Hostless Playback",
12921 0, 0, 0, 0),
12922 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
12923 "Tertiary TDM2 Hostless Capture",
12924 0, 0, 0, 0),
12925 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
12926 "Tertiary TDM3 Hostless Playback",
12927 0, 0, 0, 0),
12928 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
12929 "Tertiary TDM3 Hostless Capture",
12930 0, 0, 0, 0),
12931 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
12932 "Tertiary TDM4 Hostless Playback",
12933 0, 0, 0, 0),
12934 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
12935 "Tertiary TDM4 Hostless Capture",
12936 0, 0, 0, 0),
12937 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
12938 "Tertiary TDM5 Hostless Playback",
12939 0, 0, 0, 0),
12940 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
12941 "Tertiary TDM5 Hostless Capture",
12942 0, 0, 0, 0),
12943 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
12944 "Tertiary TDM6 Hostless Playback",
12945 0, 0, 0, 0),
12946 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
12947 "Tertiary TDM6 Hostless Capture",
12948 0, 0, 0, 0),
12949 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
12950 "Tertiary TDM7 Hostless Playback",
12951 0, 0, 0, 0),
12952 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
12953 "Tertiary TDM7 Hostless Capture",
12954 0, 0, 0, 0),
12955 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
12956 "Quaternary TDM0 Hostless Playback",
12957 0, 0, 0, 0),
12958 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
12959 "Quaternary TDM0 Hostless Capture",
12960 0, 0, 0, 0),
12961 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
12962 "Quaternary TDM1 Hostless Playback",
12963 0, 0, 0, 0),
12964 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
12965 "Quaternary TDM1 Hostless Capture",
12966 0, 0, 0, 0),
12967 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
12968 "Quaternary TDM2 Hostless Playback",
12969 0, 0, 0, 0),
12970 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
12971 "Quaternary TDM2 Hostless Capture",
12972 0, 0, 0, 0),
12973 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
12974 "Quaternary TDM3 Hostless Playback",
12975 0, 0, 0, 0),
12976 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
12977 "Quaternary TDM3 Hostless Capture",
12978 0, 0, 0, 0),
12979 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
12980 "Quaternary TDM4 Hostless Playback",
12981 0, 0, 0, 0),
12982 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
12983 "Quaternary TDM4 Hostless Capture",
12984 0, 0, 0, 0),
12985 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
12986 "Quaternary TDM5 Hostless Playback",
12987 0, 0, 0, 0),
12988 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
12989 "Quaternary TDM5 Hostless Capture",
12990 0, 0, 0, 0),
12991 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
12992 "Quaternary TDM6 Hostless Playback",
12993 0, 0, 0, 0),
12994 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
12995 "Quaternary TDM6 Hostless Capture",
12996 0, 0, 0, 0),
12997 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
12998 "Quaternary TDM7 Hostless Playback",
12999 0, 0, 0, 0),
13000 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
13001 "Quaternary TDM7 Hostless Capture",
13002 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013003 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
13004 "Quinary TDM0 Hostless Playback",
13005 0, 0, 0, 0),
13006 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
13007 "Quinary TDM0 Hostless Capture",
13008 0, 0, 0, 0),
13009 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
13010 "Quinary TDM1 Hostless Playback",
13011 0, 0, 0, 0),
13012 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
13013 "Quinary TDM1 Hostless Capture",
13014 0, 0, 0, 0),
13015 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
13016 "Quinary TDM2 Hostless Playback",
13017 0, 0, 0, 0),
13018 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
13019 "Quinary TDM2 Hostless Capture",
13020 0, 0, 0, 0),
13021 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
13022 "Quinary TDM3 Hostless Playback",
13023 0, 0, 0, 0),
13024 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
13025 "Quinary TDM3 Hostless Capture",
13026 0, 0, 0, 0),
13027 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
13028 "Quinary TDM4 Hostless Playback",
13029 0, 0, 0, 0),
13030 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
13031 "Quinary TDM4 Hostless Capture",
13032 0, 0, 0, 0),
13033 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
13034 "Quinary TDM5 Hostless Playback",
13035 0, 0, 0, 0),
13036 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
13037 "Quinary TDM5 Hostless Capture",
13038 0, 0, 0, 0),
13039 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
13040 "Quinary TDM6 Hostless Playback",
13041 0, 0, 0, 0),
13042 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
13043 "Quinary TDM6 Hostless Capture",
13044 0, 0, 0, 0),
13045 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
13046 "Quinary TDM7 Hostless Playback",
13047 0, 0, 0, 0),
13048 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
13049 "Quinary TDM7 Hostless Capture",
13050 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013051
13052 /* LSM */
13053 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
13054 0, 0, 0, 0),
13055 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
13056 0, 0, 0, 0),
13057 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
13058 0, 0, 0, 0),
13059 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
13060 0, 0, 0, 0),
13061 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
13062 0, 0, 0, 0),
13063 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
13064 0, 0, 0, 0),
13065 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
13066 0, 0, 0, 0),
13067 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
13068 0, 0, 0, 0),
13069 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
13070 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
13071 /* Backend AIF */
13072 /* Stream name equals to backend dai link stream name */
13073 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
13074 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
13075 0, 0, 0, 0),
13076 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
13077 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
13078 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
13079 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
13080 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
13081 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
13082 0, 0, 0, 0),
13083 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
13084 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
13085 0, 0, 0, 0),
13086 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
13087 0, 0, 0, 0),
13088 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
13089 0, 0, 0, 0),
13090 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
13091 "Secondary MI2S Playback SD1",
13092 0, 0, 0, 0),
13093 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
13094 0, 0, 0, 0),
13095 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
13096 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013097 SND_SOC_DAPM_AIF_OUT("INT2_MI2S_RX", "INT2 MI2S Playback",
13098 0, 0, 0, 0),
13099 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_RX", "INT3 MI2S Playback",
13100 0, 0, 0, 0),
13101 SND_SOC_DAPM_AIF_OUT("INT5_MI2S_RX", "INT5 MI2S Playback",
13102 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013103 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
13104 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013105 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_TX", "INT4 MI2S Capture",
13106 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013107 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
13108 0, 0, 0, 0),
13109 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
13110 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
13111 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
13112 0, 0, 0, 0),
13113 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
13114 0, 0, 0, 0),
13115 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
13116 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013117 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_TX", "INT0 MI2S Capture",
13118 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013119 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
13120 0, 0, 0, 0),
13121 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
13122 0, 0, 0, 0),
13123 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
13124 0, 0, 0, 0),
13125 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
13126 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
13127 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
13128 0, 0, 0, 0),
13129 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
13130 0, 0, 0, 0),
13131 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
13132 0, 0, 0, 0),
13133 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
13134 0, 0, 0, 0),
13135 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
13136 0, 0, 0, 0),
13137 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
13138 0, 0, 0, 0),
13139 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
13140 0, 0, 0, 0),
13141 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
13142 0, 0, 0, 0),
13143 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
13144 0, 0, 0, 0),
13145 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
13146 0, 0, 0, 0),
13147 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
13148 0, 0, 0, 0),
13149 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
13150 0, 0, 0, 0),
13151 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
13152 0, 0, 0, 0),
13153 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
13154 0, 0, 0, 0),
13155 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
13156 0, 0, 0, 0),
13157 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
13158 0, 0, 0, 0),
13159 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
13160 0, 0, 0, 0),
13161 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
13162 0, 0, 0, 0),
13163 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
13164 0, 0, 0, 0),
13165 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
13166 0, 0, 0, 0),
13167 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
13168 0, 0, 0, 0),
13169 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
13170 0, 0, 0, 0),
13171 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
13172 0, 0, 0, 0),
13173 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
13174 0, 0, 0, 0),
13175 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
13176 0, 0, 0, 0),
13177 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
13178 0, 0, 0, 0),
13179 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
13180 0, 0, 0, 0),
13181 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
13182 0, 0, 0, 0),
13183 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
13184 0, 0, 0, 0),
13185 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
13186 0, 0, 0, 0),
13187 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
13188 0, 0, 0, 0),
13189 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
13190 0, 0, 0, 0),
13191 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
13192 0, 0, 0, 0),
13193 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
13194 0, 0, 0, 0),
13195 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
13196 0, 0, 0, 0),
13197 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
13198 0, 0, 0, 0),
13199 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
13200 0, 0, 0, 0),
13201 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
13202 0, 0, 0, 0),
13203 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
13204 0, 0, 0, 0),
13205 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
13206 0, 0, 0, 0),
13207 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
13208 0, 0, 0, 0),
13209 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
13210 0, 0, 0, 0),
13211 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
13212 0, 0, 0, 0),
13213 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
13214 0, 0, 0, 0),
13215 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
13216 0, 0, 0, 0),
13217 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
13218 0, 0, 0, 0),
13219 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
13220 0, 0, 0, 0),
13221 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
13222 0, 0, 0, 0),
13223 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
13224 0, 0, 0, 0),
13225 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
13226 0, 0, 0, 0),
13227 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
13228 0, 0, 0, 0),
13229 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
13230 0, 0, 0, 0),
13231 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
13232 0, 0, 0, 0),
13233 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
13234 0, 0, 0, 0),
13235 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
13236 0, 0, 0, 0),
13237 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
13238 0, 0, 0, 0),
13239 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
13240 0, 0, 0, 0),
13241 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
13242 0, 0, 0, 0),
13243 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
13244 0, 0, 0, 0),
13245 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
13246 0, 0, 0, 0),
13247 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
13248 0, 0, 0, 0),
13249 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
13250 0, 0, 0, 0),
13251 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
13252 0, 0, 0, 0),
13253 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
13254 0, 0, 0, 0),
13255 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
13256 0, 0, 0, 0),
13257 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
13258 0, 0, 0, 0),
13259 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
13260 0, 0, 0, 0),
13261 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
13262 0, 0, 0, 0),
13263 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
13264 0, 0, 0, 0),
13265 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
13266 0, 0, 0, 0),
13267 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
13268 0, 0, 0, 0),
13269 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
13270 0, 0, 0, 0),
13271 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
13272 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013273 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
13274 0, 0, 0, 0),
13275 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
13276 0, 0, 0, 0),
13277 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
13278 0, 0, 0, 0),
13279 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
13280 0, 0, 0, 0),
13281 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
13282 0, 0, 0, 0),
13283 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
13284 0, 0, 0, 0),
13285 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
13286 0, 0, 0, 0),
13287 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
13288 0, 0, 0, 0),
13289 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
13290 0, 0, 0, 0),
13291 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
13292 0, 0, 0, 0),
13293 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
13294 0, 0, 0, 0),
13295 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
13296 0, 0, 0, 0),
13297 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
13298 0, 0, 0, 0),
13299 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
13300 0, 0, 0, 0),
13301 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
13302 0, 0, 0, 0),
13303 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
13304 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013305 /* incall */
13306 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
13307 0, 0, 0, 0),
13308 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
13309 0, 0, 0, 0),
13310 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
13311 0, 0, 0, 0),
13312 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
13313 0, 0, 0, 0),
13314 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
13315 0, 0, 0, 0),
13316 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
13317 0, 0, 0, 0),
13318 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
13319 0, 0, 0, 0),
13320 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
13321 0, 0, 0, 0),
13322 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
13323
13324 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
13325 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
13326 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
13327 0, 0, 0, 0),
13328 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
13329 0, 0, 0, 0),
13330 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
13331 0, 0, 0, 0),
13332 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
13333 0, 0, 0, 0),
13334 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
13335 0, 0, 0, 0),
13336 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
13337 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013338 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
13339 0, 0, 0, 0),
13340 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
13341 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013342 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
13343 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
13344 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
13345 0, 0, 0, 0),
13346 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
13347 0, 0, 0, 0),
13348 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
13349 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
13350 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
13351 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
13352 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
13353 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
13354 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
13355 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
13356 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
13357 /* In- call recording */
13358 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
13359 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
13360
13361 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
13362 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
13363
13364 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
13365 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
13366 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
13367 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
13368
13369 /* Switch Definitions */
13370 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
13371 &slim_fm_switch_mixer_controls),
13372 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
13373 &slim1_fm_switch_mixer_controls),
13374 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
13375 &slim3_fm_switch_mixer_controls),
13376 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
13377 &slim4_fm_switch_mixer_controls),
13378 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
13379 &slim6_fm_switch_mixer_controls),
13380 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13381 &pcm_rx_switch_mixer_controls),
13382 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13383 &int0_mi2s_rx_switch_mixer_controls),
13384 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13385 &int4_mi2s_rx_switch_mixer_controls),
13386 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13387 &pri_mi2s_rx_switch_mixer_controls),
13388 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13389 &sec_mi2s_rx_switch_mixer_controls),
13390 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13391 &tert_mi2s_rx_switch_mixer_controls),
13392 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13393 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013394 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13395 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013396 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13397 &hfp_pri_aux_switch_mixer_controls),
13398 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13399 &hfp_aux_switch_mixer_controls),
13400 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13401 &hfp_int_switch_mixer_controls),
13402 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13403 &hfp_slim7_switch_mixer_controls),
13404 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13405 &usb_switch_mixer_controls),
13406
13407 /* Mixer definitions */
13408 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13409 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13410 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13411 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13412 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13413 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13414 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13415 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13416 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13417 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13418 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13419 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13420 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13421 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13422 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13423 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13424 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13425 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13426 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13427 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13428 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13429 quaternary_mi2s_rx_mixer_controls,
13430 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13431 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13432 tertiary_mi2s_rx_mixer_controls,
13433 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13434 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13435 secondary_mi2s_rx_mixer_controls,
13436 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13437 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13438 secondary_mi2s_rx2_mixer_controls,
13439 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13440 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13441 primary_mi2s_rx_mixer_controls,
13442 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13443 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13444 int0_mi2s_rx_mixer_controls,
13445 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13446 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13447 int4_mi2s_rx_mixer_controls,
13448 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13449 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13450 quinary_mi2s_rx_mixer_controls,
13451 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13452 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13453 pri_tdm_rx_0_mixer_controls,
13454 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13455 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13456 pri_tdm_rx_1_mixer_controls,
13457 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13458 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13459 pri_tdm_rx_2_mixer_controls,
13460 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13461 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13462 pri_tdm_rx_3_mixer_controls,
13463 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13464 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13465 pri_tdm_tx_0_mixer_controls,
13466 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13467 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13468 sec_tdm_rx_0_mixer_controls,
13469 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13470 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13471 sec_tdm_rx_1_mixer_controls,
13472 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13473 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13474 sec_tdm_rx_2_mixer_controls,
13475 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13476 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13477 sec_tdm_rx_3_mixer_controls,
13478 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13479 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13480 sec_tdm_tx_0_mixer_controls,
13481 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13482 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13483 tert_tdm_rx_0_mixer_controls,
13484 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13485 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13486 tert_tdm_tx_0_mixer_controls,
13487 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13488 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13489 tert_tdm_rx_1_mixer_controls,
13490 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13491 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13492 tert_tdm_rx_2_mixer_controls,
13493 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13494 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13495 tert_tdm_rx_3_mixer_controls,
13496 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13497 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13498 tert_tdm_rx_4_mixer_controls,
13499 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13500 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13501 quat_tdm_rx_0_mixer_controls,
13502 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13503 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13504 quat_tdm_tx_0_mixer_controls,
13505 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13506 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13507 quat_tdm_rx_1_mixer_controls,
13508 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13509 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13510 quat_tdm_rx_2_mixer_controls,
13511 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13512 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13513 quat_tdm_rx_3_mixer_controls,
13514 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013515 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13516 quin_tdm_rx_0_mixer_controls,
13517 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13518 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13519 quin_tdm_tx_0_mixer_controls,
13520 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13521 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13522 quin_tdm_rx_1_mixer_controls,
13523 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13524 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13525 quin_tdm_rx_2_mixer_controls,
13526 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13527 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13528 quin_tdm_rx_3_mixer_controls,
13529 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013530 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13531 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13532 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13533 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13534 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13535 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13536 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13537 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13538 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13539 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13540 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13541 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13542 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13543 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13544 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13545 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013546 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13547 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013548 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13549 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013550 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13551 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13552 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13553 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13554 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13555 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13556 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13557 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053013558 SND_SOC_DAPM_MIXER("MultiMedia28 Mixer", SND_SOC_NOPM, 0, 0,
13559 mmul28_mixer_controls, ARRAY_SIZE(mmul28_mixer_controls)),
13560 SND_SOC_DAPM_MIXER("MultiMedia29 Mixer", SND_SOC_NOPM, 0, 0,
13561 mmul29_mixer_controls, ARRAY_SIZE(mmul29_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013562 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13563 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13564 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13565 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13566 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13567 tert_auxpcm_rx_mixer_controls,
13568 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13569 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13570 quat_auxpcm_rx_mixer_controls,
13571 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013572 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13573 quin_auxpcm_rx_mixer_controls,
13574 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013575 /* incall */
13576 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13577 incall_music_delivery_mixer_controls,
13578 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13579 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13580 incall_music2_delivery_mixer_controls,
13581 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13582 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13583 slimbus_4_rx_mixer_controls,
13584 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13585 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13586 slimbus_6_rx_mixer_controls,
13587 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13588 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13589 usb_audio_rx_mixer_controls,
13590 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13591 /* Voice Mixer */
13592 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13593 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13594 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13595 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13596 SND_SOC_NOPM, 0, 0,
13597 sec_i2s_rx_voice_mixer_controls,
13598 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13599 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13600 SND_SOC_NOPM, 0, 0,
13601 sec_mi2s_rx_voice_mixer_controls,
13602 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13603 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13604 SND_SOC_NOPM, 0, 0,
13605 slimbus_rx_voice_mixer_controls,
13606 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13607 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13608 SND_SOC_NOPM, 0, 0,
13609 bt_sco_rx_voice_mixer_controls,
13610 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13611 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13612 SND_SOC_NOPM, 0, 0,
13613 afe_pcm_rx_voice_mixer_controls,
13614 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13615 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13616 SND_SOC_NOPM, 0, 0,
13617 aux_pcm_rx_voice_mixer_controls,
13618 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13619 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13620 SND_SOC_NOPM, 0, 0,
13621 sec_aux_pcm_rx_voice_mixer_controls,
13622 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13623 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13624 SND_SOC_NOPM, 0, 0,
13625 tert_aux_pcm_rx_voice_mixer_controls,
13626 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13627 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13628 SND_SOC_NOPM, 0, 0,
13629 quat_aux_pcm_rx_voice_mixer_controls,
13630 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013631 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13632 SND_SOC_NOPM, 0, 0,
13633 quin_aux_pcm_rx_voice_mixer_controls,
13634 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013635 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13636 SND_SOC_NOPM, 0, 0,
13637 hdmi_rx_voice_mixer_controls,
13638 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13639 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13640 SND_SOC_NOPM, 0, 0,
13641 mi2s_rx_voice_mixer_controls,
13642 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13643 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13644 SND_SOC_NOPM, 0, 0,
13645 pri_mi2s_rx_voice_mixer_controls,
13646 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13647 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13648 SND_SOC_NOPM, 0, 0,
13649 int0_mi2s_rx_voice_mixer_controls,
13650 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13651 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13652 SND_SOC_NOPM, 0, 0,
13653 int4_mi2s_rx_voice_mixer_controls,
13654 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13655 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13656 SND_SOC_NOPM, 0, 0,
13657 tert_mi2s_rx_voice_mixer_controls,
13658 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13659 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13660 SND_SOC_NOPM, 0, 0,
13661 quat_mi2s_rx_voice_mixer_controls,
13662 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13663 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13664 SND_SOC_NOPM, 0, 0,
13665 quin_mi2s_rx_voice_mixer_controls,
13666 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
Raja Mallik321d5712018-05-04 17:22:11 +053013667 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0_Voice Mixer",
13668 SND_SOC_NOPM, 0, 0,
13669 pri_tdm_rx_0_voice_mixer_controls,
13670 ARRAY_SIZE(pri_tdm_rx_0_voice_mixer_controls)),
13671 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1_Voice Mixer",
13672 SND_SOC_NOPM, 0, 0,
13673 pri_tdm_rx_1_voice_mixer_controls,
13674 ARRAY_SIZE(pri_tdm_rx_1_voice_mixer_controls)),
13675 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2_Voice Mixer",
13676 SND_SOC_NOPM, 0, 0,
13677 pri_tdm_rx_2_voice_mixer_controls,
13678 ARRAY_SIZE(pri_tdm_rx_2_voice_mixer_controls)),
13679 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3_Voice Mixer",
13680 SND_SOC_NOPM, 0, 0,
13681 pri_tdm_rx_3_voice_mixer_controls,
13682 ARRAY_SIZE(pri_tdm_rx_3_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013683 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13684 SND_SOC_NOPM, 0, 0,
13685 quat_tdm_rx_2_voice_mixer_controls,
13686 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013687 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13688 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13689 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013690 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13691 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13692 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13693 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13694 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13695 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13696 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13697 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13698 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13699 int_bt_a2dp_rx_mixer_controls,
13700 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13701 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13702 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13703 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13704 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13705 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13706 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13707 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13708 tx_voice2_stub_mixer_controls,
13709 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13710 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13711 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13712 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13713 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13714 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13715 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13716 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13717 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13718 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13719 SND_SOC_NOPM, 0, 0,
13720 slimbus_6_rx_voice_mixer_controls,
13721 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13722 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13723 slimbus_7_rx_voice_mixer_controls,
13724 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13725 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13726 slimbus_8_rx_voice_mixer_controls,
13727 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13728 /* port mixer */
13729 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13730 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13731 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13732 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13733 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13734 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13735 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13736 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13737 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13738 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13739 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13740 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13741 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13742 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13743 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013744 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13745 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13746 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013747 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13748 sbus_1_rx_port_mixer_controls,
13749 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13750 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13751 bt_sco_rx_port_mixer_controls,
13752 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13753 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13754 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13755 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13756 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13757 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13758 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13759 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13760 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13761 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13762 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13763 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13764 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13765 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13766 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13767 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13768 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13769 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13770 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13771 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13772 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13773 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13774 primary_mi2s_rx_port_mixer_controls,
13775 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13776 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13777 sec_mi2s_rx_port_mixer_controls,
13778 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
13779 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13780 tert_mi2s_rx_port_mixer_controls,
13781 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
13782 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13783 quat_mi2s_rx_port_mixer_controls,
13784 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013785 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13786 quin_mi2s_rx_port_mixer_controls,
13787 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013788 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13789 pri_tdm_rx_0_port_mixer_controls,
13790 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
13791 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13792 pri_tdm_rx_1_port_mixer_controls,
13793 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
13794 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13795 pri_tdm_rx_2_port_mixer_controls,
13796 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
13797 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13798 pri_tdm_rx_3_port_mixer_controls,
13799 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
13800 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13801 sec_tdm_rx_0_port_mixer_controls,
13802 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
13803 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13804 sec_tdm_rx_1_port_mixer_controls,
13805 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
13806 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13807 sec_tdm_rx_2_port_mixer_controls,
13808 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
13809 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13810 sec_tdm_rx_3_port_mixer_controls,
13811 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
13812 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13813 tert_tdm_rx_0_port_mixer_controls,
13814 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
13815 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13816 tert_tdm_rx_1_port_mixer_controls,
13817 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
13818 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13819 tert_tdm_rx_2_port_mixer_controls,
13820 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
13821 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13822 tert_tdm_rx_3_port_mixer_controls,
13823 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
13824 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13825 quat_tdm_rx_0_port_mixer_controls,
13826 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
13827 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13828 quat_tdm_rx_1_port_mixer_controls,
13829 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
13830 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13831 quat_tdm_rx_2_port_mixer_controls,
13832 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
13833 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13834 quat_tdm_rx_3_port_mixer_controls,
13835 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013836 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13837 quin_tdm_rx_0_port_mixer_controls,
13838 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
13839 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13840 quin_tdm_rx_1_port_mixer_controls,
13841 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
13842 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13843 quin_tdm_rx_2_port_mixer_controls,
13844 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
13845 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13846 quin_tdm_rx_3_port_mixer_controls,
13847 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013848 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13849 int0_mi2s_rx_port_mixer_controls,
13850 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
13851 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13852 int4_mi2s_rx_port_mixer_controls,
13853 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
13854 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
13855 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
13856 ARRAY_SIZE(tx_qchat_mixer_controls)),
13857 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
13858 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
13859 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
13860 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
13861 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
13862 ARRAY_SIZE(usb_rx_port_mixer_controls)),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080013863 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
13864 SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
13865 ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013866 /* lsm mixer definitions */
13867 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
13868 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
13869 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
13870 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
13871 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
13872 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
13873 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
13874 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
13875 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
13876 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
13877 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
13878 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
13879 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
13880 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
13881 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
13882 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
13883 /* Virtual Pins to force backends ON atm */
13884 SND_SOC_DAPM_OUTPUT("BE_OUT"),
13885 SND_SOC_DAPM_INPUT("BE_IN"),
13886
13887 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
13888 &slim0_rx_vi_fb_lch_mux),
13889 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
13890 &slim0_rx_vi_fb_rch_mux),
13891 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
13892 &mi2s_rx_vi_fb_mux),
13893 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
13894 &int4_mi2s_rx_vi_fb_mono_ch_mux),
13895 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
13896 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
13897
13898 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
13899 &voc_ext_ec_mux),
13900 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
13901 &ext_ec_ref_mux_ul1),
13902 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
13903 &ext_ec_ref_mux_ul2),
13904 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
13905 &ext_ec_ref_mux_ul3),
13906 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
13907 &ext_ec_ref_mux_ul4),
13908 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
13909 &ext_ec_ref_mux_ul5),
13910 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
13911 &ext_ec_ref_mux_ul6),
13912 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
13913 &ext_ec_ref_mux_ul8),
13914 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
13915 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013916 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
13917 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013918 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
13919 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013920 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
13921 &ext_ec_ref_mux_ul17),
13922 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
13923 &ext_ec_ref_mux_ul18),
13924 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
13925 &ext_ec_ref_mux_ul19),
13926};
13927
13928static const struct snd_soc_dapm_route intercon[] = {
13929 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13930 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13931 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13932 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13933 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13934 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13935 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13936 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13937 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13938 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13939 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13940 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13941 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13942 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13943 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13944 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13945 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
13946
13947 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13948 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13949 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13950 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13951 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13952 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13953 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13954 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13955 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13956 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13957 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13958 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13959 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13960 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13961 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13962 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13963 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
13964
13965 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13966 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13967 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13968 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13969 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13970 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13971 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13972 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13973 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13974 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13975 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13976 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13977 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13978 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13979 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13980 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13981 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
13982
13983 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13984 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13985 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13986 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13987 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13988 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13989 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13990 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13991 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13992 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13993 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13994 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13995 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13996 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13997 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13998 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13999 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
14000
14001 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14002 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14003 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14004 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14005 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14006 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14007 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14008 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14009 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14010 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14011 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14012 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14013 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14014 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14015 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14016 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14017 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
14018
14019 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
14020 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
14021 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
14022 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
14023 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
14024 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
14025 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
14026 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
14027 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
14028 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
14029 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
14030 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
14031 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
14032 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
14033 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
14034 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
14035 {"HDMI", NULL, "HDMI Mixer"},
14036
14037 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
14038 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
14039 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
14040 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
14041 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
14042 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
14043 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
14044 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
14045 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
14046 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
14047 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
14048 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
14049 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
14050 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
14051 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
14052 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
14053 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
14054
14055 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14056 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14057 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14058 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14059 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14060 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14061 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14062 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14063 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14064 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14065 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14066 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14067 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14068 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14069 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14070 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14071 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
14072
14073 /* incall */
14074 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
14075 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
14076 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
14077 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
14078 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
14079 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14080 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14081 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14082 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14083 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
14084 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14085 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14086 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14087 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14088 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
14089
14090 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14091 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14092 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14093 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14094 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14095 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14096 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14097 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14098 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14099 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14100 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14101 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14102 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14103 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14104 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14105 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14106 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
14107
14108 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14109 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14110 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14111 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14112 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14113 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14114 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14115 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14116 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14117 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14118 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14119 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14120 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14121 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14122 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14123 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14124 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
14125
14126 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14127 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14128 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14129 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14130 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14131 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14132 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14133 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14134 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14135 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14136 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14137 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14138 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14139 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14140 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14141 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14142 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
14143
14144 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14145 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14146 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14147 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14148 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14149 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14150 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
14151 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14152 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14153 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14154 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14155 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14156 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14157 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14158 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14159 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014160 {"MultiMedia28 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14161 {"MultiMedia29 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014162 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14163 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14164 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14165 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14166 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14167 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014168 {"MultiMedia28 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14169 {"MultiMedia29 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014170 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014171 {"MultiMedia17 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14172 {"MultiMedia18 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14173 {"MultiMedia19 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14174 {"MultiMedia28 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14175 {"MultiMedia29 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14176 {"MultiMedia17 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014177 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014178 {"MultiMedia19 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14179 {"MultiMedia28 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14180 {"MultiMedia29 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014181 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14182 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14183 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014184 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014185 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014186 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14187 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014188 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014189 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14190 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14191 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14192 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14193 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14194 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14195 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14196 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14197 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14198 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14199 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14200 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14201 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14202 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14203 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14204 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14205 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
14206
14207 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14208 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14209 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14210 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14211 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14212 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14213 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14214 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14215 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14216 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14217 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14218 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14219 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14220 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14221 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14222 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
14223
14224 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14225 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14226 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14227 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14228 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14229 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14230 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14231 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14232 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14233 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14234 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14235 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14236 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14237 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14238 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
14239
14240 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14241 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14242 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14243 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14244 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14245 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14246 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14247 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14248 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14249 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14250 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14251 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14252 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14253 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14254 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
14255
14256 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14257 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
14258
14259 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14260 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14261
14262 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14263 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14264 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14265 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14266 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14267 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14268 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14269 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14270 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14271 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14272 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14273 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14274 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14275 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14276 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14277 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
14278
14279 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14280 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14281 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14282 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14283 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14284 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14285 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14286 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14287 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14288 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14289 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14290 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14291 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14292 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14293 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14294 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
14295
14296 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14297 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14298 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14299 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14300 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14301 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14302 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14303 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14304 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14305 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14306 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14307 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14308 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14309 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14310 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14311 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
14312
14313 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14314 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14315 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14316 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14317 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14318 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14319 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14320 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14321 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14322 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14323 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14324 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14325 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14326 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14327 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14328 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14329 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14330 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
14331
14332 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14333 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14334 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14335 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14336 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14337 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14338 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14339 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14340 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14341 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14342 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14343 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14344 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14345 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14346 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14347 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14348 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
14349
14350 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14351 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14352 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14353 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14354 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14355 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14356 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14357 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14358 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14359 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14360 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14361 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14362 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14363 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14364 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14365 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14366 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
14367
14368 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14369 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14370 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14371 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14372 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14373 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14374 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14375 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14376 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14377 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14378 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14379 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14380 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14381 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14382 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14383 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14384 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
14385
14386 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14387 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14388 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14389 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14390 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14391 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14392 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14393 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14394 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14395 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14396 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14397 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14398 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14399 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14400 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14401 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14402 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
14403
14404 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14405 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14406 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14407 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14408 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14409 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14410 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14411 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14412 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14413 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14414 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14415 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14416 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14417 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14418 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14419 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14420 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14421
14422 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14423 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14424 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14425 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14426 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14427 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14428 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14429 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14430 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14431 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14432 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14433 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14434 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14435 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14436 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14437 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14438 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14439
14440 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14441 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14442 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14443 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14444 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14445 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14446 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14447 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14448 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14449 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14450 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14451 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14452 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14453 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14454 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14455 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14456 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14457
14458 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14459 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14460 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14461 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14462 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14463 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14464 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14465 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14466 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14467 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14468 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14469 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14470 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14471 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14472 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14473 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14474 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14475
14476 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14477 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14478 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14479 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14480 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14481 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14482 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14483 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14484 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14485 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14486 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14487 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14488 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14489 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14490 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14491 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14492 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14493
14494 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14495 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14496 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14497 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14498 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14499 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14500 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14501 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14502 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14503 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14504 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14505 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14506 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14507 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14508 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14509 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14510 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14511
14512 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14513 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14514 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14515 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14516 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14517 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14518 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14519 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14520 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14521 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14522 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14523 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14524 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14525 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14526 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14527 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14528 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14529
14530 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14531 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14532 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14533 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14534 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14535 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14536 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14537 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14538 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14539 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14540 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14541 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14542 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14543 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14544 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14545 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14546 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14547
14548 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14549 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14550 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14551 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14552 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14553 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14554 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14555 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14556 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14557 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14558 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14559 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14560 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14561 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14562 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14563 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14564 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14565
14566 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14567 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14568 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14569 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14570 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14571 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14572 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14573 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14574 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14575 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14576 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14577 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14578 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14579 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14580 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14581 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14582 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14583
14584 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14585 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14586 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14587 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14588 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14589 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14590 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14591 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14592 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14593 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14594 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14595 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14596 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14597 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14598 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14599 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14600 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14601
14602 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14603 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14604 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14605 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14606 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14607 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14608 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14609 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14610 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14611 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14612 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14613 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14614 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14615 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14616 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14617 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14618 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14619
14620 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14621 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14622 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14623 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14624 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14625 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14626 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14627 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14628 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14629 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14630 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14631 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14632 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14633 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14634 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14635 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14636 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14637 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14638
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014639 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14640 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14641 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14642 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14643 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14644 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14645 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14646 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14647 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14648 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14649 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14650 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14651 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14652 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14653 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14654 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14655 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14656
14657 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14658 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14659 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14660 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14661 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14662 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14663 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14664 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14665 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14666 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14667 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14668 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14669 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14670 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14671 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14672 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14673 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14674 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14675
14676 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14677 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14678 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14679 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14680 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14681 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14682 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14683 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14684 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14685 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14686 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14687 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14688 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14689 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14690 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14691 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14692 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14693 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14694
14695 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14696 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14697 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14698 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14699 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14700 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14701 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14702 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14703 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14704 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14705 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14706 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14707 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14708 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14709 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14710 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14711 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14712 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14713
Rohit Kumara5077932017-09-10 22:05:05 +053014714 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14715 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14716 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14717 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14718 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14719 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14720 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14721 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14722 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14723 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14724 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14725 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14726 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14727 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14728 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14729 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14730 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14731 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14732
14733 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14734 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14735 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14736 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14737 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14738 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14739 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14740 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14741 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14742 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14743 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14744 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14745 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14746 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14747 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14748 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14749 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14750
14751 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14752 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14753 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14754 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14755 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14756 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14757 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14758 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14759 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14760 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14761 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14762 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14763 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14764 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14765 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14766 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14767 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14768 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14769
14770 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14771 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14772 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14773 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14774 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14775 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14776 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14777 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14778 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14779 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14780 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14781 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14782 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14783 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14784 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14785 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14786 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14787 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
14788
14789 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14790 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14791 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14792 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14793 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14794 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14795 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14796 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14797 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14798 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14799 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14800 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14801 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14802 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14803 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14804 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14805 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14806 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
14807
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014808 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
14809 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
14810 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
14811 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
14812 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014813 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014814 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014815 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14816 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14817 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14818 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14819 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14820 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14821 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14822 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14823 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14824 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14825 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14826 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14827 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14828 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14829 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014830 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014831 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14832 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
14833 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014834 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014835 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14836 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014837 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14838 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
14839 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014840 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014841 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14842 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
14843 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014844 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014845 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014846 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
14847 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
14848 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014849 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14850 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14851 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14852 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14853 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14854 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14855 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14856 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14857 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14858 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14859 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014860 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014861 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14862 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14863 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014864 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014865 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014866 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14867 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14868 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014869 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014870 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014871 {"MultiMedia17 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14872 {"MultiMedia18 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14873 {"MultiMedia19 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14874 {"MultiMedia28 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14875 {"MultiMedia29 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014876 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14877 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14878 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14879 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014880 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014881
14882 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14883 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14884 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14885 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14886 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14887 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14888 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14889 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14890 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14891 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14892 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14893 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14894 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14895 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14896 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14897 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014898 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14899 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14900 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14901 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014902
14903 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14904 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14905 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14906 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14907 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14908 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14909 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14910 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14911 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14912 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14913 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14914 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14915 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14916 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14917 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14918 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014919 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14920 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14921 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14922 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014923
14924 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14925 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14926 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14927 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14928 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14929 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14930 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14931 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14932 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14933 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14934 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14935 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14936 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14937 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14938 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14939 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014940 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14941 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14942 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14943 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014944
14945 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14946 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14947 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14948 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14949 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14950 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14951 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14952 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14953 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14954 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14955 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14956 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14957 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14958 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14959 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14960 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014961 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14962 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14963 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14964 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014965
14966 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14967 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14968 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14969 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14970 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14971 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14972 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14973 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14974 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14975 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14976 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14977 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14978 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14979 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14980 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14981 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014982 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14983 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14984 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14985 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014986
14987 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14988 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14989 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14990 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14991 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14992 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14993 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14994 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14995 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14996 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14997 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14998 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14999 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15000 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15001 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15002 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015003 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15004 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15005 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15006 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015007
15008 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15009 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15010 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15011 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15012 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15013 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15014 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15015 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15016 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15017 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15018 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15019 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15020 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15021 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15022 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15023 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015024 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15025 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15026 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15027 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015028
15029 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15030 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15031 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15032 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15033 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15034 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15035 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15036 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015037 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15038 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15039 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15040 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015041
Laxminath Kasam38070be2017-08-17 18:21:59 +053015042 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15043 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15044 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15045 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15046 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15047 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15048 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15049 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015050 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15051 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15052 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15053 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015054 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015055 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15056 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15057 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15058 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15059 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15060 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15061 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15062 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15063 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15064 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15065 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15066 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15067 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15068 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15069 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15070 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015071 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15072 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15073 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15074 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015075
15076 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15077 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15078 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15079 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15080 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15081 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015082 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015083
Asish Bhattacharya34504582017-08-08 12:55:01 +053015084 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15085 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15086 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15087 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15088 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15089 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15090 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15091 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15092 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15093 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15094 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15095 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15096 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15097 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15098 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15099 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15100 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15101
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015102 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15103 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15104 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15105 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15106 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15107 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15108 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15109 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15110 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15111 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15112 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15113 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15114 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15115 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15116 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15117 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15118 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15119 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
15120
15121 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15122 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15123 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15124 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15125 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15126 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15127 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15128 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15129 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15130 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15131 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15132 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15133 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15134 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15135 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15136 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15137 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15138 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
15139
15140 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15141 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15142 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15143 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15144 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15145 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15146 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15147 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15148 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15149 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15150 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15151 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15152 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15153 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15154 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15155 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15156 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
15157
15158 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15159 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15160 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15161 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15162 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15163 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15164 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15165 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15166 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15167 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15168 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15169 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15170 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15171 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15172 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15173 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15174 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
15175
15176 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15177 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15178 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015179 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015180 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15181 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15182 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015183 {"MultiMedia28 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15184 {"MultiMedia29 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015185 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15186 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015187 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015188 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15189 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015190 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015191 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15192 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15193 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015194 {"MultiMedia28 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15195 {"MultiMedia29 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015196 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15197 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15198 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15199
15200 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
15201 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
15202 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015203 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015204 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
15205 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
15206 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015207 {"MultiMedia28 Mixer", "AFE_PCM_TX", "PCM_TX"},
15208 {"MultiMedia29 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015209 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
15210 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015211 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015212 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
15213 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15214 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
15215 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
15216 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
15217 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
15218 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
15219 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
15220 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015221 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015222 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015223 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
15224 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
15225 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
15226 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015227 {"MM_UL28", NULL, "MultiMedia28 Mixer"},
15228 {"MM_UL29", NULL, "MultiMedia29 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015229
15230 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15231 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15232 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15233 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15234 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15235 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15236 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15237 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15238 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15239 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15240 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15241 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15242 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15243 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15244 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15245 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15246 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
15247
15248 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15249 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15250 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15251 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15252 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15253 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15254 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15255 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15256 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15257 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15258 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15259 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15260 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15261 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15262 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15263 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15264 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
15265
15266 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15267 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15268 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15269 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15270 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15271 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15272 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15273 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15274 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15275 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15276 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15277 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15278 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15279 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15280 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15281 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15282 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
15283
15284 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15285 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15286 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15287 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15288 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15289 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15290 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15291 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15292 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15293 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15294 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15295 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15296 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15297 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15298 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15299 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15300 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
15301
Rohit Kumara5077932017-09-10 22:05:05 +053015302 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15303 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15304 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15305 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15306 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15307 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15308 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15309 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15310 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15311 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15312 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15313 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15314 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15315 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15316 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15317 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15318 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
15319
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015320 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15321 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15322 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15323 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15324 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15325 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
15326
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015327 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
15328 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15329 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15330 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
15331
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015332 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15333 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15334 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15335 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15336 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15337 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
15338
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015339 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
15340 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015341 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15342 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15343 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15344 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
15345
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015346 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
15347 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015348 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15349 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15350 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15351 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
15352
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015353 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15354 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015355 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15356 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15357 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15358 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
15359
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015360 {"DISPLAY_PORT_RX_Voice Mixer", "Voip", "VOIP_DL"},
15361 {"DISPLAY_PORT_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015362 {"DISPLAY_PORT_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15363 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15364 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15365 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
15366
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015367 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15368 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15369 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15370 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15371 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015372 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
15373
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015374 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15375 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15376 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15377 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15378 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15379 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
15380
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015381 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15382 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015383 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15384 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15385 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15386 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
15387
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015388 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15389 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015390 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15391 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15392 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15393 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
15394
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015395 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15396 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015397 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15398 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15399 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15400 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
15401
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015402 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15403 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015404 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15405 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15406 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15407 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
15408
Rohit Kumara5077932017-09-10 22:05:05 +053015409 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15410 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015411 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15412 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15413 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15414 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
15415
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015416 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15417 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15418 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15419 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15420 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15421 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
15422 {"HDMI", NULL, "HDMI_DL_HL"},
15423
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015424 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015425 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15426 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15427 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080015428 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015429 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15430
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015431 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015432 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15433 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15434 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15435 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15436 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15437
15438 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15439 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15440 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15441 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15442 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15443 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15444
15445 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15446 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15447 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15448 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15449 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15450 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15451
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015452 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015453 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15454 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15455 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15456 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15457 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15458
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015459 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015460 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15461 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15462 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15463 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15464
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015465 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015466 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15467 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15468 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15469 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15470
Raja Mallik321d5712018-05-04 17:22:11 +053015471 {"PRI_TDM_RX_0_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15472 {"PRI_TDM_RX_0_Voice Mixer", "Voice2", "VOICE2_DL"},
15473 {"PRI_TDM_RX_0_Voice Mixer", "Voip", "VOIP_DL"},
15474 {"PRI_TDM_RX_0_Voice Mixer", "VoLTE", "VoLTE_DL"},
15475 {"PRI_TDM_RX_0_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15476 {"PRI_TDM_RX_0_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15477 {"PRI_TDM_RX_0_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15478 {"PRI_TDM_RX_0_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15479 {"PRI_TDM_RX_0_Voice Mixer", "QCHAT", "QCHAT_DL"},
15480 {"PRI_TDM_RX_0_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15481 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15482 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15483 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_Voice Mixer"},
15484
15485 {"PRI_TDM_RX_1_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15486 {"PRI_TDM_RX_1_Voice Mixer", "Voice2", "VOICE2_DL"},
15487 {"PRI_TDM_RX_1_Voice Mixer", "Voip", "VOIP_DL"},
15488 {"PRI_TDM_RX_1_Voice Mixer", "VoLTE", "VoLTE_DL"},
15489 {"PRI_TDM_RX_1_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15490 {"PRI_TDM_RX_1_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15491 {"PRI_TDM_RX_1_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15492 {"PRI_TDM_RX_1_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15493 {"PRI_TDM_RX_1_Voice Mixer", "QCHAT", "QCHAT_DL"},
15494 {"PRI_TDM_RX_1_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15495 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15496 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15497 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_Voice Mixer"},
15498
15499 {"PRI_TDM_RX_2_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15500 {"PRI_TDM_RX_2_Voice Mixer", "Voice2", "VOICE2_DL"},
15501 {"PRI_TDM_RX_2_Voice Mixer", "Voip", "VOIP_DL"},
15502 {"PRI_TDM_RX_2_Voice Mixer", "VoLTE", "VoLTE_DL"},
15503 {"PRI_TDM_RX_2_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15504 {"PRI_TDM_RX_2_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15505 {"PRI_TDM_RX_2_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15506 {"PRI_TDM_RX_2_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15507 {"PRI_TDM_RX_2_Voice Mixer", "QCHAT", "QCHAT_DL"},
15508 {"PRI_TDM_RX_2_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15509 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15510 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15511 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_Voice Mixer"},
15512
15513 {"PRI_TDM_RX_3_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15514 {"PRI_TDM_RX_3_Voice Mixer", "Voice2", "VOICE2_DL"},
15515 {"PRI_TDM_RX_3_Voice Mixer", "Voip", "VOIP_DL"},
15516 {"PRI_TDM_RX_3_Voice Mixer", "VoLTE", "VoLTE_DL"},
15517 {"PRI_TDM_RX_3_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15518 {"PRI_TDM_RX_3_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15519 {"PRI_TDM_RX_3_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15520 {"PRI_TDM_RX_3_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15521 {"PRI_TDM_RX_3_Voice Mixer", "QCHAT", "QCHAT_DL"},
15522 {"PRI_TDM_RX_3_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15523 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15524 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15525 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_Voice Mixer"},
15526
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015527 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15528 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15529
15530 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15531 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15532 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15533 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015534 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015535 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015536 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015537 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15538 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15539
15540 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15541 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15542 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15543 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15544 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15545 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15546 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15547 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15548 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15549 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15550
15551 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15552 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15553 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15554 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15555
15556 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15557 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15558 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15559 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15560
15561 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15562 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15563 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15564 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15565
15566 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15567 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15568 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15569 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15570
15571 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15572 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15573 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15574 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15575
15576 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15577 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15578 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15579 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15580
15581 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15582 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15583 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15584 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15585
Laxminath Kasam38070be2017-08-17 18:21:59 +053015586 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15587 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15588 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15589 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15590 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15591 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15592 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15593 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15594 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15595 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015596
15597 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15598 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15599 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15600 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15601
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015602 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15603 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15604 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15605 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15606
15607 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15608 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15609 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15610 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15611
15612 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15613 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15614 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15615 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15616
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015617 {"AUDIO_REF_EC_UL28 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15618 {"AUDIO_REF_EC_UL28 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15619 {"AUDIO_REF_EC_UL28 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15620 {"AUDIO_REF_EC_UL28 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15621
15622 {"AUDIO_REF_EC_UL29 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15623 {"AUDIO_REF_EC_UL29 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15624 {"AUDIO_REF_EC_UL29 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15625 {"AUDIO_REF_EC_UL29 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Yunfei Zhang3efc4a22017-11-07 16:30:13 +080015626
15627 {"LSM1_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15628 {"LSM2_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15629 {"LSM3_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15630 {"LSM4_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15631 {"LSM5_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15632 {"LSM6_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15633 {"LSM7_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15634 {"LSM8_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15635
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015636 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15637 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15638 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15639 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15640 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15641 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15642 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15643 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015644 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015645 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015646 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15647 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15648 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015649 {"MM_UL28", NULL, "AUDIO_REF_EC_UL28 MUX"},
15650 {"MM_UL29", NULL, "AUDIO_REF_EC_UL29 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015651
Raja Mallik321d5712018-05-04 17:22:11 +053015652 {"Voice_Tx Mixer", "PRI_TX_Voice", "PRI_I2S_TX"},
15653 {"Voice_Tx Mixer", "PRI_MI2S_TX_Voice", "PRI_MI2S_TX"},
15654 {"Voice_Tx Mixer", "MI2S_TX_Voice", "MI2S_TX"},
15655 {"Voice_Tx Mixer", "TERT_MI2S_TX_Voice", "TERT_MI2S_TX"},
15656 {"Voice_Tx Mixer", "SLIM_0_TX_Voice", "SLIMBUS_0_TX"},
15657 {"Voice_Tx Mixer", "INTERNAL_BT_SCO_TX_Voice", "INT_BT_SCO_TX"},
15658 {"Voice_Tx Mixer", "AFE_PCM_TX_Voice", "PCM_TX"},
15659 {"Voice_Tx Mixer", "AUX_PCM_TX_Voice", "AUX_PCM_TX"},
15660 {"Voice_Tx Mixer", "SEC_AUX_PCM_TX_Voice", "SEC_AUX_PCM_TX"},
15661 {"Voice_Tx Mixer", "SEC_MI2S_TX_Voice", "SEC_MI2S_TX"},
15662 {"Voice_Tx Mixer", "PRI_TDM_TX_3_Voice", "PRI_TDM_TX_3"},
15663 {"CS-VOICE_UL1", NULL, "Voice_Tx Mixer"},
15664
15665 {"Voice2_Tx Mixer", "PRI_TX_Voice2", "PRI_I2S_TX"},
15666 {"Voice2_Tx Mixer", "PRI_MI2S_TX_Voice2", "PRI_MI2S_TX"},
15667 {"Voice2_Tx Mixer", "MI2S_TX_Voice2", "MI2S_TX"},
15668 {"Voice2_Tx Mixer", "TERT_MI2S_TX_Voice2", "TERT_MI2S_TX"},
15669 {"Voice2_Tx Mixer", "SLIM_0_TX_Voice2", "SLIMBUS_0_TX"},
15670 {"Voice2_Tx Mixer", "INTERNAL_BT_SCO_TX_Voice2", "INT_BT_SCO_TX"},
15671 {"Voice2_Tx Mixer", "AFE_PCM_TX_Voice2", "PCM_TX"},
15672 {"Voice2_Tx Mixer", "AUX_PCM_TX_Voice2", "AUX_PCM_TX"},
15673 {"Voice2_Tx Mixer", "SEC_AUX_PCM_TX_Voice2", "SEC_AUX_PCM_TX"},
15674 {"Voice2_Tx Mixer", "PRI_TDM_TX_3_Voice2", "PRI_TDM_TX_3"},
15675 {"VOICE2_UL", NULL, "Voice2_Tx Mixer"},
15676
15677 {"VoLTE_Tx Mixer", "PRI_TX_VoLTE", "PRI_I2S_TX"},
15678 {"VoLTE_Tx Mixer", "SLIM_0_TX_VoLTE", "SLIMBUS_0_TX"},
15679 {"VoLTE_Tx Mixer", "INTERNAL_BT_SCO_TX_VoLTE", "INT_BT_SCO_TX"},
15680 {"VoLTE_Tx Mixer", "AFE_PCM_TX_VoLTE", "PCM_TX"},
15681 {"VoLTE_Tx Mixer", "AUX_PCM_TX_VoLTE", "AUX_PCM_TX"},
15682 {"VoLTE_Tx Mixer", "SEC_AUX_PCM_TX_VoLTE", "SEC_AUX_PCM_TX"},
15683 {"VoLTE_Tx Mixer", "MI2S_TX_VoLTE", "MI2S_TX"},
15684 {"VoLTE_Tx Mixer", "PRI_MI2S_TX_VoLTE", "PRI_MI2S_TX"},
15685 {"VoLTE_Tx Mixer", "TERT_MI2S_TX_VoLTE", "TERT_MI2S_TX"},
15686 {"VoLTE_Tx Mixer", "PRI_TDM_TX_3_VoLTE", "PRI_TDM_TX_3"},
15687 {"VoLTE_UL", NULL, "VoLTE_Tx Mixer"},
15688
15689 {"VoWLAN_Tx Mixer", "PRI_TX_VoWLAN", "PRI_I2S_TX"},
15690 {"VoWLAN_Tx Mixer", "SLIM_0_TX_VoWLAN", "SLIMBUS_0_TX"},
15691 {"VoWLAN_Tx Mixer", "INTERNAL_BT_SCO_TX_VoWLAN", "INT_BT_SCO_TX"},
15692 {"VoWLAN_Tx Mixer", "AFE_PCM_TX_VoWLAN", "PCM_TX"},
15693 {"VoWLAN_Tx Mixer", "AUX_PCM_TX_VoWLAN", "AUX_PCM_TX"},
15694 {"VoWLAN_Tx Mixer", "SEC_AUX_PCM_TX_VoWLAN", "SEC_AUX_PCM_TX"},
15695 {"VoWLAN_Tx Mixer", "MI2S_TX_VoWLAN", "MI2S_TX"},
15696 {"VoWLAN_Tx Mixer", "PRI_MI2S_TX_VoWLAN", "PRI_MI2S_TX"},
15697 {"VoWLAN_Tx Mixer", "TERT_MI2S_TX_VoWLAN", "TERT_MI2S_TX"},
15698 {"VoWLAN_Tx Mixer", "PRI_TDM_TX_3_VoWLAN", "PRI_TDM_TX_3"},
15699 {"VoWLAN_UL", NULL, "VoWLAN_Tx Mixer"},
15700
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015701 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15702 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15703 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15704 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15705 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15706 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15707 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15708 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15709 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15710 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15711 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15712 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15713 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15714 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15715 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015716 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015717 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
Raja Mallik321d5712018-05-04 17:22:11 +053015718 {"VoiceMMode1_Tx Mixer", "PRI_TDM_TX_3_MMode1", "PRI_TDM_TX_3"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015719 {"VoiceMMode1_Tx Mixer", "QUAT_MI2S_TX_MMode1", "QUAT_MI2S_TX"},
15720 {"VoiceMMode1_Tx Mixer", "QUIN_MI2S_TX_MMode1", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015721 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15722
15723 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15724 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15725 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15726 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15727 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15728 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15729 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15730 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15731 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15732 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15733 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15734 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15735 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15736 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15737 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015738 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015739 {"VoiceMMode2_Tx Mixer", "QUAT_MI2S_TX_MMode2", "QUAT_MI2S_TX"},
15740 {"VoiceMMode2_Tx Mixer", "QUIN_MI2S_TX_MMode2", "QUIN_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015741 {"VoiceMMode2_Tx Mixer", "PRI_TDM_TX_3_MMode2", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015742 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15743
15744 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15745 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15746 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15747 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15748 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15749 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15750 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15751 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15752 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15753 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15754 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15755 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15756 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15757 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015758 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015759 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015760 {"Voip_Tx Mixer", "PRI_TDM_TX_3_Voip", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015761 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15762
15763 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15764 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15765 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15766 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15767 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15768 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15769 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15770 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15771 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15772 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15773 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15774 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15775 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15776 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15777 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15778
15779 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15780 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15781 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15782 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15783 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15784 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15785 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15786 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015787 {"LSM1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15788 {"LSM1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015789 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15790
15791 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15792 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15793 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15794 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15795 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15796 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15797 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15798 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015799 {"LSM2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15800 {"LSM2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015801 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
15802
15803
15804 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15805 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15806 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15807 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15808 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15809 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15810 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15811 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015812 {"LSM3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15813 {"LSM3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015814 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
15815
15816
15817 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15818 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15819 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15820 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15821 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15822 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15823 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15824 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015825 {"LSM4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15826 {"LSM4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015827 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
15828
15829 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15830 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15831 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15832 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15833 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15834 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15835 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15836 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015837 {"LSM5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15838 {"LSM5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015839 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
15840
15841 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15842 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15843 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15844 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15845 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15846 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015847 {"LSM6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15848 {"LSM6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015849 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
15850
15851 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15852 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15853 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15854 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15855 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15856 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015857 {"LSM7 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15858 {"LSM7 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015859 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
15860
15861 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15862 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15863 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15864 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15865 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15866 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015867 {"LSM8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15868 {"LSM8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015869 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
15870
15871
15872 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
15873 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
15874 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
15875 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
15876 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
15877 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
15878 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
15879 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
15880 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
15881 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
15882 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015883 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015884 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
15885 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
15886 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
15887 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
15888 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
15889 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
15890
15891 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
15892 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
15893 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
15894 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
15895 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
15896 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
15897 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
15898 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
15899 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
15900 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
15901 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
15902 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015903 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015904 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015905 {"SEC_AUXPCM_UL_HL", NULL, "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015906 {"MI2S_RX", NULL, "MI2S_DL_HL"},
15907 {"MI2S_UL_HL", NULL, "MI2S_TX"},
15908 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
15909 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
15910
15911 /* connect to INT4_MI2S_DL_HL since same pcm_id */
15912 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15913 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
15914 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15915 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
15916 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
15917 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
15918 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
15919 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
15920 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
15921 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
15922
15923 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
15924 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015925 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
15926 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015927 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15928 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
15929 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15930 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
15931 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
15932 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
15933 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
15934 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
15935 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
15936 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
15937
15938 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
15939 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
15940 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
15941 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
15942 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
15943 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
15944 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
15945 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
15946 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
15947 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
15948 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
15949 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
15950 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
15951 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
15952 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
15953 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
15954 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
15955 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
15956 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
15957 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
15958 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
15959 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
15960 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
15961 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
15962 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
15963 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
15964 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
15965 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
15966 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
15967 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
15968 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
15969 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015970 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
15971 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
15972 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
15973 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
15974 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
15975 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
15976 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
15977 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015978
15979 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15980 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15981 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15982 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15983 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15984 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15985 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15986 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15987 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15988 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15989 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15990 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15991 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15992 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15993 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15994 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015995 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15996 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15997 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15998 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015999 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
16000
16001 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16002 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16003 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16004 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16005 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16006 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16007 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16008 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16009 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16010 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16011 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16012 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16013 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16014 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16015 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16016 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016017 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16018 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16019 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16020 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016021 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
16022
16023 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16024 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16025 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16026 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16027 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16028 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16029 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16030 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16031 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16032 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16033 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16034 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16035 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16036 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16037 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16038 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016039 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16040 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16041 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16042 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016043 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
16044
16045 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16046 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16047 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16048 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16049 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16050 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16051 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16052 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16053 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16054 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16055 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16056 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16057 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16058 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16059 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16060 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016061 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16062 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16063 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16064 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016065 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
16066
16067 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16068 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16069 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16070 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16071 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16072 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16073 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16074 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16075 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16076 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16077 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16078 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16079 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16080 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16081 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16082 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016083 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16084 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16085 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16086 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016087 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
16088
16089 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16090 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16091 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16092 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16093 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16094 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16095 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16096 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16097 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16098 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16099 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16100 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16101 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16102 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16103 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16104 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016105 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16106 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16107 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16108 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016109 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
16110
16111 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16112 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16113 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16114 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16115 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16116 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16117 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16118 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16119 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16120 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16121 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16122 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16123 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16124 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16125 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16126 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016127 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16128 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16129 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16130 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016131 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
16132
16133 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16134 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16135 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16136 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16137 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16138 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16139 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16140 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16141 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16142 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16143 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16144 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16145 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16146 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16147 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16148 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016149 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16150 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16151 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16152 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016153 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
16154
16155 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16156 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16157 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16158 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16159 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16160 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16161 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16162 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16163 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16164 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16165 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16166 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16167 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16168 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16169 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16170 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016171 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16172 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16173 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16174 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016175 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
16176
16177 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16178 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16179 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16180 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16181 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16182 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16183 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16184 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16185 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16186 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16187 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16188 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16189 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16190 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16191 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16192 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016193 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16194 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16195 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16196 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016197 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
16198
16199 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16200 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16201 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16202 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16203 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16204 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16205 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16206 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16207 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16208 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16209 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16210 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16211 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16212 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16213 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16214 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016215 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16216 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16217 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16218 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016219 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
16220
16221 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16222 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16223 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16224 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16225 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16226 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16227 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16228 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16229 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16230 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16231 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16232 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16233 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16234 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16235 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16236 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016237 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16238 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16239 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16240 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016241 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
16242
16243 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16244 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16245 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16246 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16247 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16248 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16249 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16250 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16251 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16252 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16253 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16254 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16255 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16256 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16257 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16258 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016259 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16260 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16261 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16262 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016263 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
16264
16265 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16266 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16267 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16268 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16269 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16270 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16271 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16272 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16273 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16274 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16275 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16276 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16277 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16278 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16279 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16280 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016281 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16282 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16283 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16284 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016285 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
16286
16287 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16288 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16289 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16290 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16291 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16292 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16293 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16294 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16295 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16296 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16297 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16298 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16299 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16300 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16301 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16302 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016303 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16304 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16305 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16306 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016307 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
16308
16309 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16310 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16311 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16312 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16313 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16314 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16315 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16316 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16317 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16318 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16319 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16320 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16321 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16322 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16323 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16324 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016325 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16326 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16327 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16328 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016329 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
16330
Rohit Kumara5077932017-09-10 22:05:05 +053016331 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16332 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16333 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16334 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16335 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16336 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16337 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16338 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16339 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16340 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16341 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16342 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16343 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16344 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16345 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16346 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16347 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16348 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16349 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16350 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016351 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016352
16353 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16354 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16355 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16356 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16357 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16358 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16359 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16360 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16361 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16362 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16363 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16364 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16365 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16366 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16367 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16368 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16369 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16370 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16371 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16372 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016373 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016374
16375 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16376 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16377 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16378 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16379 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16380 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16381 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16382 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16383 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16384 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16385 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16386 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16387 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16388 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16389 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16390 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16391 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16392 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16393 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16394 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016395 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016396
16397 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16398 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16399 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16400 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16401 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16402 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16403 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16404 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16405 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16406 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16407 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16408 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16409 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16410 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16411 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16412 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16413 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16414 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16415 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16416 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016417 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016418
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016419 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16420 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16421 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16422 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016423 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016424 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16425 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16426 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16427 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16428 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16429 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
16430
16431 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16432 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16433 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16434 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016435 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016436 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16437 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16438 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16439 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16440 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16441 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
16442
16443 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16444 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16445 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16446 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16447 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16448 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16449 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16450 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16451 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016452 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016453 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16454 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16455 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16456 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16457 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016458 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016459 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16460 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
16461 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16462 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16463 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
16464 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
16465 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
16466 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
16467 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
16468 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
16469
16470
16471 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16472 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16473 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16474 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16475 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016476 {"AUX_PCM_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016477 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
16478
16479 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16480 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16481 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016482 {"SEC_AUXPCM_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016483 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
16484
16485 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16486 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16487 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16488 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
16489
16490 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16491 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
16492 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16493 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
16494
Rohit Kumara5077932017-09-10 22:05:05 +053016495 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16496 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
16497 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16498 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
16499
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016500 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16501 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16502 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16503 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16504 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16505 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16506 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16507 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016508 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016509 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
16510 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16511 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16512 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16513 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16514 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16515 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16516 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16517 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16518 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16519 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
16520
16521 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16522 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16523 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16524 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16525 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16526 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16527 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16528 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16529 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16530 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16531 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16532 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
16533
16534 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16535 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16536 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16537 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16538 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16539 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16540 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16541 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16542 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16543 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16544 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16545 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
16546
kunleizdf5a00a2017-11-27 15:27:36 +080016547 {"STUB_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16548 {"STUB_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016549 {"STUB_RX", NULL, "STUB_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016550
16551 {"SLIMBUS_1_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16552 {"SLIMBUS_1_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016553 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016554
16555 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16556 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016557 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
16558
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016559 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
16560 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016561 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16562 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16563 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16564 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
16565
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016566 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
16567 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016568 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16569 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16570 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16571 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16572
16573 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16574 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16575 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16576 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16577 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16578 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16579 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16580 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16581 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16582 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16583 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16584 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16585 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16586
16587 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16588 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16589 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16590 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16591 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16592 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16593 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16594 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16595 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16596 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16597 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16598 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16599 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16600
16601 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16602 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16603
16604 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16605 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16606
16607 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16608 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16609
16610 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16611 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16612 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16613
16614 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16615 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16616 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16617 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016618 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016619 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16620 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16621 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16622 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016623 {"PRI_MI2S_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016624 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16625
16626 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16627 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16628 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16629 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016630 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016631 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16632 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16633 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016634 {"SEC_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016635 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16636
16637 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16638 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16639 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16640 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016641 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016642 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16643 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16644 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16645
16646 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16647 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16648 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16649 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016650 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016651 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16652 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16653 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16654 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16655 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16656
Rohit Kumara5077932017-09-10 22:05:05 +053016657 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16658 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16659 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16660 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16661 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16662 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16663 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16664 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16665
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016666 /* Backend Enablement */
16667
16668 {"BE_OUT", NULL, "PRI_I2S_RX"},
16669 {"BE_OUT", NULL, "SEC_I2S_RX"},
16670 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16671 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16672 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16673 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16674 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16675 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16676 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16677 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16678 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16679 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16680 {"BE_OUT", NULL, "HDMI"},
16681 {"BE_OUT", NULL, "DISPLAY_PORT"},
16682 {"BE_OUT", NULL, "SPDIF_RX"},
16683 {"BE_OUT", NULL, "MI2S_RX"},
16684 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16685 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16686 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16687 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16688 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16689 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16690 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16691 {"BE_OUT", NULL, "INT4_MI2S_RX"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016692 {"BE_OUT", NULL, "INT2_MI2S_RX"},
16693 {"BE_OUT", NULL, "INT3_MI2S_RX"},
16694 {"BE_OUT", NULL, "INT5_MI2S_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016695 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16696 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16697 {"BE_OUT", NULL, "INT_FM_RX"},
16698 {"BE_OUT", NULL, "PCM_RX"},
16699 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16700 {"BE_OUT", NULL, "AUX_PCM_RX"},
16701 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16702 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16703 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016704 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016705 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16706 {"BE_OUT", NULL, "INT_FM_RX"},
16707 {"BE_OUT", NULL, "PCM_RX"},
16708 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16709 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16710 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16711 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16712 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16713 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16714 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16715 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16716 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16717 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16718 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16719 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16720 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16721 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16722 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16723 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16724 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16725 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16726 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16727 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016728 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16729 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16730 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16731 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016732
16733 {"PRI_I2S_TX", NULL, "BE_IN"},
16734 {"MI2S_TX", NULL, "BE_IN"},
16735 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16736 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16737 {"PRI_MI2S_TX", NULL, "BE_IN"},
16738 {"TERT_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016739 {"INT0_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016740 {"INT2_MI2S_TX", NULL, "BE_IN"},
16741 {"INT3_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016742 {"INT4_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016743 {"INT5_MI2S_TX", NULL, "BE_IN"},
16744 {"SEC_MI2S_TX", NULL, "BE_IN"},
16745 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16746 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16747 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16748 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16749 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16750 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16751 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16752 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16753 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16754 {"USB_AUDIO_TX", NULL, "BE_IN" },
16755 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16756 {"INT_FM_TX", NULL, "BE_IN"},
16757 {"PCM_TX", NULL, "BE_IN"},
16758 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16759 {"BE_OUT", NULL, "STUB_RX"},
16760 {"STUB_TX", NULL, "BE_IN"},
16761 {"STUB_1_TX", NULL, "BE_IN"},
16762 {"BE_OUT", NULL, "AUX_PCM_RX"},
16763 {"AUX_PCM_TX", NULL, "BE_IN"},
16764 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16765 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16766 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016767 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016768 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16769 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16770 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16771 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16772 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16773 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16774 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16775 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16776 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16777 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16778 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16779 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16780 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16781 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16782 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16783 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16784 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16785 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16786 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16787 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16788 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16789 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16790 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16791 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16792 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16793 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16794 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16795 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016796 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16797 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16798 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16799 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016800};
16801
16802static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16803 struct snd_pcm_hw_params *params)
16804{
16805 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16806 unsigned int be_id = rtd->dai_link->id;
16807
16808 if (be_id >= MSM_BACKEND_DAI_MAX) {
16809 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16810 return -EINVAL;
16811 }
16812
16813 mutex_lock(&routing_lock);
16814 msm_bedais[be_id].sample_rate = params_rate(params);
16815 msm_bedais[be_id].channel = params_channels(params);
16816 msm_bedais[be_id].format = params_format(params);
16817 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
16818 __func__, msm_bedais[be_id].sample_rate,
16819 msm_bedais[be_id].format, be_id);
16820 mutex_unlock(&routing_lock);
16821 return 0;
16822}
16823
16824static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
16825{
16826 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16827 unsigned int be_id = rtd->dai_link->id;
16828 int i, session_type, path_type, topology;
16829 struct msm_pcm_routing_bdai_data *bedai;
16830 struct msm_pcm_routing_fdai_data *fdai;
16831
16832 pr_debug("%s: substream->pcm->id:%s\n",
16833 __func__, substream->pcm->id);
16834
16835 if (be_id >= MSM_BACKEND_DAI_MAX) {
16836 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16837 return -EINVAL;
16838 }
16839
16840 bedai = &msm_bedais[be_id];
16841 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
16842 0 : 1);
16843 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16844 path_type = ADM_PATH_PLAYBACK;
16845 else
16846 path_type = ADM_PATH_LIVE_REC;
16847
16848 mutex_lock(&routing_lock);
16849 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16850 if (!is_mm_lsm_fe_id(i))
16851 continue;
16852 fdai = &fe_dai_map[i][session_type];
16853 if (fdai->strm_id != INVALID_SESSION) {
16854 int idx;
16855 int port_id;
16856 unsigned long copp =
16857 session_copp_map[i][session_type][be_id];
16858 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
16859 if (test_bit(idx, &copp))
16860 break;
16861 fdai->be_srate = bedai->sample_rate;
16862 port_id = bedai->port_id;
16863 topology = adm_get_topology_for_port_copp_idx(port_id,
16864 idx);
16865 adm_close(bedai->port_id, fdai->perf_mode, idx);
16866 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
16867 __func__, copp, i, session_type, be_id,
16868 topology);
16869 clear_bit(idx,
16870 &session_copp_map[i][session_type][be_id]);
16871 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16872 (bedai->passthr_mode[i] == LEGACY_PCM))
16873 msm_pcm_routing_deinit_pp(bedai->port_id,
16874 topology);
16875 }
16876 }
16877
16878 bedai->active = 0;
16879 bedai->sample_rate = 0;
16880 bedai->channel = 0;
16881 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
16882 if (bedai->passthr_mode[i] != LISTEN)
16883 bedai->passthr_mode[i] = LEGACY_PCM;
16884 }
16885 mutex_unlock(&routing_lock);
16886
16887 return 0;
16888}
16889
16890static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
16891{
16892 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16893 unsigned int be_id = rtd->dai_link->id;
16894 int i, path_type, topology;
16895 int session_type = INVALID_SESSION;
16896 struct msm_pcm_routing_bdai_data *bedai;
16897 u32 channels, sample_rate;
16898 uint16_t bits_per_sample = 16, voc_path_type;
16899 struct msm_pcm_routing_fdai_data *fdai;
16900 u32 session_id;
16901 struct media_format_info voc_be_media_format;
16902 bool is_lsm;
16903
16904 pr_debug("%s: substream->pcm->id:%s\n",
16905 __func__, substream->pcm->id);
16906
16907 if (be_id >= MSM_BACKEND_DAI_MAX) {
16908 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16909 return -EINVAL;
16910 }
16911
16912 bedai = &msm_bedais[be_id];
16913
16914 mutex_lock(&routing_lock);
16915 if (bedai->active == 1)
16916 goto done; /* Ignore prepare if back-end already active */
16917
16918 /* AFE port is not active at this point. However, still
16919 * go ahead setting active flag under the notion that
16920 * QDSP6 is able to handle ADM starting before AFE port
16921 * is started.
16922 */
16923 bedai->active = 1;
16924
16925 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16926 if (!(is_mm_lsm_fe_id(i) &&
16927 route_check_fe_id_adm_support(i)))
16928 continue;
16929
16930 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
16931 if (bedai->passthr_mode[i] != LEGACY_PCM)
16932 path_type = ADM_PATH_COMPRESSED_RX;
16933 else
16934 path_type = ADM_PATH_PLAYBACK;
16935 session_type = SESSION_TYPE_RX;
16936 } else {
16937 path_type = ADM_PATH_LIVE_REC;
16938 session_type = SESSION_TYPE_TX;
16939 }
16940
16941 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
16942 (i <= MSM_FRONTEND_DAI_LSM8);
16943 fdai = &fe_dai_map[i][session_type];
16944 if (fdai->strm_id != INVALID_SESSION) {
16945 int app_type, app_type_idx, copp_idx, acdb_dev_id;
16946
16947 if (session_type == SESSION_TYPE_TX &&
16948 fdai->be_srate &&
16949 (fdai->be_srate != bedai->sample_rate)) {
16950 pr_debug("%s: flush strm %d diff BE rates\n",
16951 __func__,
16952 fdai->strm_id);
16953
16954 if (fdai->event_info.event_func)
16955 fdai->event_info.event_func(
16956 MSM_PCM_RT_EVT_BUF_RECFG,
16957 fdai->event_info.priv_data);
16958 fdai->be_srate = 0; /* might not need it */
16959 }
16960 bits_per_sample = msm_routing_get_bit_width(
16961 bedai->format);
16962
16963 app_type =
16964 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
16965 if (app_type && is_lsm) {
16966 app_type_idx =
16967 msm_pcm_routing_get_lsm_app_type_idx(app_type);
16968 sample_rate =
16969 fe_dai_app_type_cfg[i][session_type][be_id]
16970 .sample_rate;
16971 bits_per_sample =
16972 lsm_app_type_cfg[app_type_idx].bit_width;
16973 } else if (app_type) {
16974 app_type_idx =
16975 msm_pcm_routing_get_app_type_idx(app_type);
16976 sample_rate =
16977 fe_dai_app_type_cfg[i][session_type]
16978 [be_id].sample_rate;
16979 bits_per_sample =
16980 app_type_cfg[app_type_idx].bit_width;
16981 } else
16982 sample_rate = bedai->sample_rate;
16983 /*
16984 * check if ADM needs to be configured with different
16985 * channel mapping than backend
16986 */
16987 if (!bedai->adm_override_ch)
16988 channels = bedai->channel;
16989 else
16990 channels = bedai->adm_override_ch;
16991 acdb_dev_id =
16992 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
16993 topology = msm_routing_get_adm_topology(i, session_type,
16994 be_id);
16995 copp_idx = adm_open(bedai->port_id, path_type,
16996 sample_rate, channels, topology,
16997 fdai->perf_mode, bits_per_sample,
16998 app_type, acdb_dev_id);
16999 if ((copp_idx < 0) ||
17000 (copp_idx >= MAX_COPPS_PER_PORT)) {
17001 pr_err("%s: adm open failed\n", __func__);
17002 mutex_unlock(&routing_lock);
17003 return -EINVAL;
17004 }
17005 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
17006 __func__, i, session_type, be_id);
17007 set_bit(copp_idx,
17008 &session_copp_map[i][session_type][be_id]);
17009
17010 if (msm_is_resample_needed(
17011 sample_rate,
17012 bedai->sample_rate))
17013 adm_copp_mfc_cfg(
17014 bedai->port_id, copp_idx,
17015 bedai->sample_rate);
17016
17017 msm_pcm_routing_build_matrix(i, session_type, path_type,
17018 fdai->perf_mode,
17019 bedai->passthr_mode[i]);
17020 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
17021 (bedai->passthr_mode[i] == LEGACY_PCM))
17022 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
17023 topology, channels);
17024 }
17025 }
17026
17027 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17028 session_id = msm_pcm_routing_get_voc_sessionid(i);
17029 if (session_id) {
17030 pr_debug("%s voice session_id: 0x%x\n", __func__,
17031 session_id);
17032
17033 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
17034 voc_path_type = RX_PATH;
17035 else
17036 voc_path_type = TX_PATH;
17037
17038 voc_set_route_flag(session_id, voc_path_type, 1);
17039
17040 memset(&voc_be_media_format, 0,
17041 sizeof(struct media_format_info));
17042
17043 voc_be_media_format.port_id = bedai->port_id;
17044 voc_be_media_format.num_channels = bedai->channel;
17045 voc_be_media_format.sample_rate = bedai->sample_rate;
17046 voc_be_media_format.bits_per_sample = bedai->format;
17047 /* Defaulting this to 1 for voice call usecases */
17048 voc_be_media_format.channel_mapping[0] = 1;
17049
17050 voc_set_device_config(session_id, voc_path_type,
17051 &voc_be_media_format);
17052
17053 if (voc_get_route_flag(session_id, RX_PATH) &&
17054 voc_get_route_flag(session_id, TX_PATH))
17055 voc_enable_device(session_id);
17056 }
17057 }
17058
17059 /* Check if backend is an external ec ref port and set as needed */
17060 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
17061
17062 memset(&voc_be_media_format, 0,
17063 sizeof(struct media_format_info));
17064
17065 /* Get format info for ec ref port from msm_bedais[] */
17066 voc_be_media_format.port_id = bedai->port_id;
17067 voc_be_media_format.num_channels = bedai->channel;
17068 voc_be_media_format.bits_per_sample = bedai->format;
17069 voc_be_media_format.sample_rate = bedai->sample_rate;
17070 /* Defaulting this to 1 for voice call usecases */
17071 voc_be_media_format.channel_mapping[0] = 1;
17072 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
17073 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
17074 __func__, voc_be_media_format.port_id,
17075 voc_be_media_format.num_channels,
17076 voc_be_media_format.bits_per_sample,
17077 voc_be_media_format.sample_rate);
17078 }
17079
17080done:
17081 mutex_unlock(&routing_lock);
17082
17083 return 0;
17084}
17085
17086static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
17087 int fe_id)
17088{
17089 int index, topo_id, be_idx;
17090 unsigned long pp_config = 0;
17091 bool mute_on;
17092 int latency;
17093 bool compr_passthr_mode = true;
17094
17095 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
17096
17097 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
17098 pr_err("%s: Device pp params on invalid port %d\n",
17099 __func__, port_id);
17100 return -EINVAL;
17101 }
17102
17103 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17104 if (port_id == msm_bedais[be_idx].port_id)
17105 break;
17106 }
17107
17108 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17109 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17110 return -EINVAL;
17111 }
17112
17113 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17114 if (msm_bedais_pp_params[index].port_id == port_id)
17115 break;
17116 }
17117 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17118 pr_err("%s: Invalid backend pp params index %d\n",
17119 __func__, index);
17120 return -EINVAL;
17121 }
17122
17123 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
17124 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
17125 pr_err("%s: Invalid passthrough topology 0x%x\n",
17126 __func__, topo_id);
17127 return -EINVAL;
17128 }
17129
17130 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
17131 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
17132 compr_passthr_mode = false;
17133
17134 pp_config = msm_bedais_pp_params[index].pp_params_config;
17135 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
17136 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17137 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
17138 mute_on = msm_bedais_pp_params[index].mute_on;
17139 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17140 adm_send_compressed_device_mute(port_id,
17141 copp_idx,
17142 mute_on);
17143 }
17144 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
17145 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17146 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
17147 &pp_config);
17148 latency = msm_bedais_pp_params[index].latency;
17149 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17150 adm_send_compressed_device_latency(port_id,
17151 copp_idx,
17152 latency);
17153 }
17154 return 0;
17155}
17156
17157static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17158 struct snd_ctl_elem_value *ucontrol)
17159{
17160 int pp_id = ucontrol->value.integer.value[0];
17161 int port_id = 0;
17162 int index, be_idx, i, topo_id, idx;
17163 bool mute;
17164 int latency;
17165 bool compr_passthr_mode = true;
17166
17167 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
17168
17169 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17170 port_id = msm_bedais[be_idx].port_id;
17171 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
17172 break;
17173 }
17174
17175 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17176 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17177 return -EINVAL;
17178 }
17179
17180 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17181 if (msm_bedais_pp_params[index].port_id == port_id)
17182 break;
17183 }
17184 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17185 pr_err("%s: Invalid pp params backend index %d\n",
17186 __func__, index);
17187 return -EINVAL;
17188 }
17189
17190 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
17191 MSM_FRONTEND_DAI_MM_SIZE) {
17192 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
17193 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
17194 compr_passthr_mode = false;
17195
17196 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17197 unsigned long copp =
17198 session_copp_map[i]
17199 [SESSION_TYPE_RX][be_idx];
17200 if (!test_bit(idx, &copp))
17201 continue;
17202 topo_id = adm_get_topology_for_port_copp_idx(port_id,
17203 idx);
17204 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
17205 continue;
17206 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
17207 __func__, port_id, copp, msm_bedais[be_idx].active,
17208 msm_bedais[be_idx].passthr_mode[i]);
17209 switch (pp_id) {
17210 case ADM_PP_PARAM_MUTE_ID:
17211 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17212 mute = ucontrol->value.integer.value[1] ? true : false;
17213 msm_bedais_pp_params[index].mute_on = mute;
17214 set_bit(ADM_PP_PARAM_MUTE_BIT,
17215 &msm_bedais_pp_params[index].pp_params_config);
17216 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17217 adm_send_compressed_device_mute(port_id,
17218 idx, mute);
17219 break;
17220 case ADM_PP_PARAM_LATENCY_ID:
17221 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17222 msm_bedais_pp_params[index].latency =
17223 ucontrol->value.integer.value[1];
17224 set_bit(ADM_PP_PARAM_LATENCY_BIT,
17225 &msm_bedais_pp_params[index].pp_params_config);
17226 latency = msm_bedais_pp_params[index].latency =
17227 ucontrol->value.integer.value[1];
17228 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17229 adm_send_compressed_device_latency(port_id,
17230 idx, latency);
17231 break;
17232 default:
17233 pr_info("%s, device pp param %d not supported\n",
17234 __func__, pp_id);
17235 break;
17236 }
17237 }
17238 }
17239 return 0;
17240}
17241
17242static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17243 struct snd_ctl_elem_value *ucontrol)
17244{
17245 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
17246 return 0;
17247}
17248
17249static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
17250 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
17251 0, 3, msm_routing_get_device_pp_params_mixer,
17252 msm_routing_put_device_pp_params_mixer),
17253};
17254
17255static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
17256 struct snd_ctl_elem_value *ucontrol)
17257{
17258 ucontrol->value.integer.value[0] =
17259 core_get_license_status(ASM_MEDIA_FMT_APTX);
17260 pr_debug("%s: status %ld\n", __func__,
17261 ucontrol->value.integer.value[0]);
17262 return 0;
17263}
17264
17265static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
17266 struct snd_ctl_elem_value *ucontrol)
17267{
17268 int32_t status = 0;
17269
17270 status = core_set_license(ucontrol->value.integer.value[0],
17271 APTX_CLASSIC_DEC_LICENSE_ID);
17272 pr_debug("%s: status %d\n", __func__, status);
17273 return status;
17274}
17275
17276static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
17277 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
17278 0xFFFF, 0, msm_aptx_dec_license_control_get,
17279 msm_aptx_dec_license_control_put),
17280};
17281
17282static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
17283 struct snd_ctl_elem_info *uinfo)
17284{
17285 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
17286 uinfo->count = sizeof(be_dai_name_table);
17287 return 0;
17288}
17289
17290static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
17291 unsigned int __user *bytes,
17292 unsigned int size)
17293{
17294 int i;
17295 int ret;
17296
17297 if (size < sizeof(be_dai_name_table)) {
17298 pr_err("%s: invalid size %d requested, returning\n",
17299 __func__, size);
17300 ret = -EINVAL;
17301 goto done;
17302 }
17303
17304 /*
17305 * Fill be_dai_name_table from msm_bedais table to reduce code changes
17306 * needed when adding new backends
17307 */
17308 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17309 be_dai_name_table[i].be_id = i;
17310 strlcpy(be_dai_name_table[i].be_name,
17311 msm_bedais[i].name,
17312 LPASS_BE_NAME_MAX_LENGTH);
17313 }
17314
17315 ret = copy_to_user(bytes, &be_dai_name_table,
17316 sizeof(be_dai_name_table));
17317 if (ret) {
17318 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
17319 ret = -EFAULT;
17320 }
17321
17322done:
17323 return ret;
17324}
17325
17326static const struct snd_kcontrol_new
17327 msm_routing_be_dai_name_table_mixer_controls[] = {
17328 {
17329 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
17330 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
17331 .info = msm_routing_be_dai_name_table_info,
17332 .name = "Backend DAI Name Table",
17333 .tlv.c = snd_soc_bytes_tlv_callback,
17334 .private_value = (unsigned long) &(struct soc_bytes_ext) {
17335 .max = sizeof(be_dai_name_table),
17336 .get = msm_routing_be_dai_name_table_tlv_get,
17337 }
17338 },
17339};
17340
17341static int msm_routing_stereo_channel_reverse_control_get(
17342 struct snd_kcontrol *kcontrol,
17343 struct snd_ctl_elem_value *ucontrol)
17344{
17345 ucontrol->value.integer.value[0] = swap_ch;
17346 pr_debug("%s: Swap channel value: %ld\n", __func__,
17347 ucontrol->value.integer.value[0]);
17348 return 0;
17349}
17350
17351static int msm_routing_stereo_channel_reverse_control_put(
17352 struct snd_kcontrol *kcontrol,
17353 struct snd_ctl_elem_value *ucontrol)
17354{
17355 int i, idx, be_index, port_id;
17356 int ret = 0;
17357 unsigned long copp;
17358
17359 pr_debug("%s Swap channel value:%ld\n", __func__,
17360 ucontrol->value.integer.value[0]);
17361
17362 swap_ch = ucontrol->value.integer.value[0];
17363
17364 mutex_lock(&routing_lock);
17365 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
17366 port_id = msm_bedais[be_index].port_id;
17367 if (!msm_bedais[be_index].active)
17368 continue;
17369
17370 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
17371 MSM_FRONTEND_DAI_MM_SIZE) {
17372 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
17373 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17374 if (!test_bit(idx, &copp))
17375 continue;
17376
17377 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
17378 __func__, port_id, idx);
17379 ret = adm_swap_speaker_channels(
17380 port_id, idx,
17381 msm_bedais[be_index].sample_rate,
17382 swap_ch);
17383 if (ret) {
17384 pr_err("%s:Swap_channel failed, err=%d\n",
17385 __func__, ret);
17386 goto done;
17387 }
17388 }
17389 }
17390 }
17391done:
17392 mutex_unlock(&routing_lock);
17393 return ret;
17394}
17395
17396static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
17397 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
17398 1, 0, msm_routing_stereo_channel_reverse_control_get,
17399 msm_routing_stereo_channel_reverse_control_put),
17400};
17401
17402static const struct snd_pcm_ops msm_routing_pcm_ops = {
17403 .hw_params = msm_pcm_routing_hw_params,
17404 .close = msm_pcm_routing_close,
17405 .prepare = msm_pcm_routing_prepare,
17406};
17407
17408/* Not used but frame seems to require it */
17409static int msm_routing_probe(struct snd_soc_platform *platform)
17410{
17411 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
17412 ARRAY_SIZE(msm_qdsp6_widgets));
17413 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
17414 ARRAY_SIZE(intercon));
17415
17416 snd_soc_dapm_new_widgets(platform->component.dapm.card);
17417
17418 snd_soc_add_platform_controls(platform, lsm_controls,
17419 ARRAY_SIZE(lsm_controls));
17420
17421 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
17422 ARRAY_SIZE(aanc_slim_0_rx_mux));
17423
17424 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
17425 ARRAY_SIZE(msm_voc_session_controls));
17426
17427 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
17428 ARRAY_SIZE(app_type_cfg_controls));
17429
17430 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
17431 ARRAY_SIZE(lsm_app_type_cfg_controls));
17432
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070017433 snd_soc_add_platform_controls(platform, module_cfg_controls,
17434 ARRAY_SIZE(module_cfg_controls));
17435
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017436 snd_soc_add_platform_controls(platform,
17437 stereo_to_custom_stereo_controls,
17438 ARRAY_SIZE(stereo_to_custom_stereo_controls));
17439
17440 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
17441 ARRAY_SIZE(ec_ref_param_controls));
17442
17443 snd_soc_add_platform_controls(platform, channel_mixer_controls,
17444 ARRAY_SIZE(channel_mixer_controls));
17445
17446 msm_qti_pp_add_controls(platform);
17447
17448 msm_dts_srs_tm_add_controls(platform);
17449
17450 msm_dolby_dap_add_controls(platform);
17451
17452 snd_soc_add_platform_controls(platform,
17453 use_ds1_or_ds2_controls,
17454 ARRAY_SIZE(use_ds1_or_ds2_controls));
17455
17456 snd_soc_add_platform_controls(platform,
17457 device_pp_params_mixer_controls,
17458 ARRAY_SIZE(device_pp_params_mixer_controls));
17459
17460 snd_soc_add_platform_controls(platform,
17461 msm_routing_be_dai_name_table_mixer_controls,
17462 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
17463
17464 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
17465 ARRAY_SIZE(msm_source_tracking_controls));
17466 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
17467 ARRAY_SIZE(adm_channel_config_controls));
17468
17469 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
17470 ARRAY_SIZE(aptx_dec_license_controls));
17471 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
17472 ARRAY_SIZE(stereo_channel_reverse_control));
17473 return 0;
17474}
17475
17476int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
17477{
17478 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
17479}
17480
17481void msm_routing_pcm_free(struct snd_pcm *pcm)
17482{
17483 msm_pcm_routing_hwdep_free(pcm);
17484}
17485
17486static struct snd_soc_platform_driver msm_soc_routing_platform = {
17487 .ops = &msm_routing_pcm_ops,
17488 .probe = msm_routing_probe,
17489 .pcm_new = msm_routing_pcm_new,
17490 .pcm_free = msm_routing_pcm_free,
17491};
17492
17493static int msm_routing_pcm_probe(struct platform_device *pdev)
17494{
17495
17496 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
17497 return snd_soc_register_platform(&pdev->dev,
17498 &msm_soc_routing_platform);
17499}
17500
17501static int msm_routing_pcm_remove(struct platform_device *pdev)
17502{
17503 snd_soc_unregister_platform(&pdev->dev);
17504 return 0;
17505}
17506
17507static const struct of_device_id msm_pcm_routing_dt_match[] = {
17508 {.compatible = "qcom,msm-pcm-routing"},
17509 {}
17510};
17511MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
17512
17513static struct platform_driver msm_routing_pcm_driver = {
17514 .driver = {
17515 .name = "msm-pcm-routing",
17516 .owner = THIS_MODULE,
17517 .of_match_table = msm_pcm_routing_dt_match,
17518 },
17519 .probe = msm_routing_pcm_probe,
17520 .remove = msm_routing_pcm_remove,
17521};
17522
17523int msm_routing_check_backend_enabled(int fedai_id)
17524{
17525 int i;
17526
17527 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
17528 /* bad ID assigned in machine driver */
17529 pr_err("%s: bad MM ID\n", __func__);
17530 return 0;
17531 }
17532 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17533 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
17534 return msm_bedais[i].active;
17535 }
17536 return 0;
17537}
17538
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017539static int get_cal_type_index(int32_t cal_type)
17540{
17541 int ret = -EINVAL;
17542
17543 switch (cal_type) {
17544 case ADM_TOPOLOGY_CAL_TYPE:
17545 ret = ADM_TOPOLOGY_CAL_TYPE_IDX;
17546 break;
17547 case ADM_LSM_TOPOLOGY_CAL_TYPE:
17548 ret = ADM_LSM_TOPOLOGY_CAL_TYPE_IDX;
17549 break;
17550 default:
17551 pr_err("%s: Invalid cal type %d\n", __func__, cal_type);
17552 }
17553 return ret;
17554}
17555
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017556static int msm_routing_set_cal(int32_t cal_type,
17557 size_t data_size, void *data)
17558{
17559 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017560 int cal_index;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017561 pr_debug("%s\n", __func__);
17562
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017563 cal_index = get_cal_type_index(cal_type);
17564 if (cal_index < 0) {
17565 pr_err("%s: Could not get cal index %d\n",
17566 __func__, cal_index);
17567 ret = -EINVAL;
17568 goto done;
17569 }
17570
17571 ret = cal_utils_set_cal(data_size, data, cal_data[cal_index], 0, NULL);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017572 if (ret < 0) {
17573 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17574 __func__, ret, cal_type);
17575 ret = -EINVAL;
17576 goto done;
17577 }
17578done:
17579 return ret;
17580}
17581
17582static void msm_routing_delete_cal_data(void)
17583{
17584 pr_debug("%s\n", __func__);
17585
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017586 cal_utils_destroy_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017587}
17588
17589static int msm_routing_init_cal_data(void)
17590{
17591 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017592 struct cal_type_info cal_type_info[] = {
17593 {{ADM_TOPOLOGY_CAL_TYPE,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017594 {NULL, NULL, NULL,
17595 msm_routing_set_cal, NULL, NULL} },
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017596 {NULL, NULL, cal_utils_match_buf_num} },
17597
17598 {{ADM_LSM_TOPOLOGY_CAL_TYPE,
17599 {NULL, NULL, NULL,
17600 msm_routing_set_cal, NULL, NULL} },
17601 {NULL, NULL, cal_utils_match_buf_num} },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017602 };
17603 pr_debug("%s\n", __func__);
17604
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017605 ret = cal_utils_create_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0],
17606 &cal_type_info[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017607 if (ret < 0) {
17608 pr_err("%s: could not create cal type!\n",
17609 __func__);
17610 ret = -EINVAL;
17611 goto err;
17612 }
17613
17614 return ret;
17615err:
17616 msm_routing_delete_cal_data();
17617 return ret;
17618}
17619
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017620int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017621{
17622 mutex_init(&routing_lock);
17623 if (msm_routing_init_cal_data())
17624 pr_err("%s: could not init cal data!\n", __func__);
17625
17626 afe_set_routing_callback(
17627 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17628
17629 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17630 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17631
17632 return platform_driver_register(&msm_routing_pcm_driver);
17633}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017634
Asish Bhattacharya5faacb32017-12-04 17:23:15 +053017635void msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017636{
17637 msm_routing_delete_cal_data();
17638 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17639 mutex_destroy(&routing_lock);
17640 platform_driver_unregister(&msm_routing_pcm_driver);
17641}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017642
17643MODULE_DESCRIPTION("MSM routing platform driver");
17644MODULE_LICENSE("GPL v2");