blob: 94edf82dff418bb28dcc0028c9cd7447e2b517a8 [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,
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -0700919 int cal_index,
920 bool exact)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530921{
922 struct list_head *ptr, *next;
923 struct cal_block_data *cal_block = NULL;
924 struct audio_cal_info_adm_top *cal_info;
925
926 pr_debug("%s\n", __func__);
927
928 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530929 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530930
931 cal_block = list_entry(ptr,
932 struct cal_block_data, list);
933
934 cal_info = (struct audio_cal_info_adm_top *)
935 cal_block->cal_info;
936 if ((cal_info->path == path) &&
937 (cal_info->app_type == app_type) &&
938 (cal_info->acdb_id == acdb_id)) {
939 return cal_block;
940 }
941 }
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -0700942 pr_debug("%s: Can't find topology for path %d, app %d, "
943 "acdb_id %d %s\n", __func__, path, app_type, acdb_id,
944 exact ? "fail" : "defaulting to search by path");
945 return exact ? NULL : msm_routing_find_topology_by_path(path,
946 cal_index);
947}
948
949static int msm_routing_find_topology_on_index(int session_type, int app_type,
950 int acdb_dev_id, int idx,
951 bool exact)
952{
953 int topology = -EINVAL;
954 struct cal_block_data *cal_block = NULL;
955
956 mutex_lock(&cal_data[idx]->lock);
957 cal_block = msm_routing_find_topology(session_type, app_type,
958 acdb_dev_id, idx, exact);
959 if (cal_block != NULL) {
960 topology = ((struct audio_cal_info_adm_top *)
961 cal_block->cal_info)->topology;
962 }
963 mutex_unlock(&cal_data[idx]->lock);
964 return topology;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530965}
966
967static int msm_routing_get_adm_topology(int fedai_id, int session_type,
968 int be_id)
969{
970 int topology = NULL_COPP_TOPOLOGY;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530971 int app_type = 0, acdb_dev_id = 0;
972
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530973 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
974 __func__, fedai_id, session_type, be_id);
975
976 if (cal_data == NULL)
977 goto done;
978
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530979 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
980 acdb_dev_id =
981 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -0700982 pr_debug("%s: Check for exact LSM topology\n", __func__);
983 topology = msm_routing_find_topology_on_index(session_type,
984 app_type,
985 acdb_dev_id,
986 ADM_LSM_TOPOLOGY_CAL_TYPE_IDX,
987 true /*exact*/);
988 if (topology < 0) {
989 pr_debug("%s: Check for compatible topology\n", __func__);
990 topology = msm_routing_find_topology_on_index(session_type,
991 app_type,
992 acdb_dev_id,
993 ADM_TOPOLOGY_CAL_TYPE_IDX,
994 false /*exact*/);
995 if (topology < 0)
996 topology = NULL_COPP_TOPOLOGY;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530997 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530998done:
999 pr_debug("%s: Using topology %d\n", __func__, topology);
1000 return topology;
1001}
1002
1003static uint8_t is_be_dai_extproc(int be_dai)
1004{
1005 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
1006 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
1007 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
1008 return 1;
1009 else
1010 return 0;
1011}
1012
1013static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
1014 int path_type, int perf_mode,
1015 uint32_t passthr_mode)
1016{
1017 int i, port_type, j, num_copps = 0;
1018 struct route_payload payload;
1019
1020 port_type = ((path_type == ADM_PATH_PLAYBACK ||
1021 path_type == ADM_PATH_COMPRESSED_RX) ?
1022 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
1023
1024 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1025 if (!is_be_dai_extproc(i) &&
1026 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1027 (msm_bedais[i].active) &&
1028 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1029 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1030 unsigned long copp =
1031 session_copp_map[fedai_id][sess_type][i];
1032 if (test_bit(j, &copp)) {
1033 payload.port_id[num_copps] =
1034 msm_bedais[i].port_id;
1035 payload.copp_idx[num_copps] = j;
1036 payload.app_type[num_copps] =
1037 fe_dai_app_type_cfg
1038 [fedai_id][sess_type][i]
1039 .app_type;
1040 payload.acdb_dev_id[num_copps] =
1041 fe_dai_app_type_cfg
1042 [fedai_id][sess_type][i]
1043 .acdb_dev_id;
1044 payload.sample_rate[num_copps] =
1045 fe_dai_app_type_cfg
1046 [fedai_id][sess_type][i]
1047 .sample_rate;
1048 num_copps++;
1049 }
1050 }
1051 }
1052 }
1053
1054 if (num_copps) {
1055 payload.num_copps = num_copps;
1056 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1057 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1058 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1059 }
1060}
1061
1062void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1063 int stream_type)
1064{
1065 int i, session_type, path_type, port_type;
1066 u32 mode = 0;
1067
1068 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1069 /* bad ID assigned in machine driver */
1070 pr_err("%s: bad MM ID\n", __func__);
1071 return;
1072 }
1073
1074 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1075 session_type = SESSION_TYPE_RX;
1076 path_type = ADM_PATH_PLAYBACK;
1077 port_type = MSM_AFE_PORT_TYPE_RX;
1078 } else {
1079 session_type = SESSION_TYPE_TX;
1080 path_type = ADM_PATH_LIVE_REC;
1081 port_type = MSM_AFE_PORT_TYPE_TX;
1082 }
1083
1084 mutex_lock(&routing_lock);
1085
1086 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1087 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1088 if (!is_be_dai_extproc(i) &&
1089 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1090 (msm_bedais[i].active) &&
1091 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1092 mode = afe_get_port_type(msm_bedais[i].port_id);
1093 adm_connect_afe_port(mode, dspst_id,
1094 msm_bedais[i].port_id);
1095 break;
1096 }
1097 }
1098 mutex_unlock(&routing_lock);
1099}
1100
1101static bool route_check_fe_id_adm_support(int fe_id)
1102{
1103 bool rc = true;
1104
1105 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1106 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1107 /* fe id is listen while port is set to afe */
1108 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1109 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1110 __func__, fe_id, lsm_port_index);
1111 rc = false;
1112 }
1113 }
1114
1115 return rc;
1116}
1117
1118int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1119 int dspst_id, int stream_type,
1120 uint32_t passthr_mode)
1121{
1122 int i, j, session_type, path_type, port_type, topology;
1123 int num_copps = 0;
1124 struct route_payload payload;
1125 u32 channels, sample_rate;
1126 u16 bit_width = 16;
1127 bool is_lsm;
1128
1129 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1130 __func__, fe_id, perf_mode, dspst_id,
1131 stream_type, passthr_mode);
1132 if (!is_mm_lsm_fe_id(fe_id)) {
1133 /* bad ID assigned in machine driver */
1134 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1135 return -EINVAL;
1136 }
1137
1138 if (!route_check_fe_id_adm_support(fe_id)) {
1139 /* ignore adm open if not supported for fe_id */
1140 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1141 return 0;
1142 }
1143
1144 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1145 session_type = SESSION_TYPE_RX;
1146 if (passthr_mode != LEGACY_PCM)
1147 path_type = ADM_PATH_COMPRESSED_RX;
1148 else
1149 path_type = ADM_PATH_PLAYBACK;
1150 port_type = MSM_AFE_PORT_TYPE_RX;
1151 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1152 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301153 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301154 path_type = ADM_PATH_COMPRESSED_TX;
1155 else
1156 path_type = ADM_PATH_LIVE_REC;
1157 port_type = MSM_AFE_PORT_TYPE_TX;
1158 } else {
1159 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1160 return -EINVAL;
1161 }
1162
1163 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1164 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1165 mutex_lock(&routing_lock);
1166
1167 payload.num_copps = 0; /* only RX needs to use payload */
1168 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1169 /* re-enable EQ if active */
1170 msm_qti_pp_send_eq_values(fe_id);
1171 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1172 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1173 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1174
1175 if (!is_be_dai_extproc(i) &&
1176 (afe_get_port_type(msm_bedais[i].port_id) ==
1177 port_type) &&
1178 (msm_bedais[i].active) &&
1179 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1180 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1181
1182 /*
1183 * check if ADM needs to be configured with different
1184 * channel mapping than backend
1185 */
1186 if (!msm_bedais[i].adm_override_ch)
1187 channels = msm_bedais[i].channel;
1188 else
1189 channels = msm_bedais[i].adm_override_ch;
1190
1191 bit_width = msm_routing_get_bit_width(
1192 msm_bedais[i].format);
1193 app_type =
1194 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1195 if (app_type && is_lsm) {
1196 app_type_idx =
1197 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1198 sample_rate =
1199 fe_dai_app_type_cfg[fe_id][session_type][i]
1200 .sample_rate;
1201 bit_width =
1202 lsm_app_type_cfg[app_type_idx].bit_width;
1203 } else if (app_type) {
1204 app_type_idx =
1205 msm_pcm_routing_get_app_type_idx(
1206 app_type);
1207 sample_rate =
1208 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1209 bit_width =
1210 app_type_cfg[app_type_idx].bit_width;
1211 } else {
1212 sample_rate = msm_bedais[i].sample_rate;
1213 }
1214 acdb_dev_id =
1215 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1216 topology = msm_routing_get_adm_topology(fe_id,
1217 session_type,
1218 i);
1219 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1220 || (passthr_mode ==
1221 COMPRESSED_PASSTHROUGH_GEN))
1222 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1223 pr_debug("%s: Before adm open topology %d\n", __func__,
1224 topology);
1225
1226 copp_idx =
1227 adm_open(msm_bedais[i].port_id,
1228 path_type, sample_rate, channels,
1229 topology, perf_mode, bit_width,
1230 app_type, acdb_dev_id);
1231 if ((copp_idx < 0) ||
1232 (copp_idx >= MAX_COPPS_PER_PORT)) {
1233 pr_err("%s:adm open failed coppid:%d\n",
1234 __func__, copp_idx);
1235 mutex_unlock(&routing_lock);
1236 return -EINVAL;
1237 }
1238 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1239 __func__, fe_id, session_type, i);
1240 set_bit(copp_idx,
1241 &session_copp_map[fe_id][session_type][i]);
1242
1243 if (msm_is_resample_needed(
1244 sample_rate,
1245 msm_bedais[i].sample_rate))
1246 adm_copp_mfc_cfg(
1247 msm_bedais[i].port_id, copp_idx,
1248 msm_bedais[i].sample_rate);
1249
1250 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1251 unsigned long copp =
1252 session_copp_map[fe_id][session_type][i];
1253 if (test_bit(j, &copp)) {
1254 payload.port_id[num_copps] =
1255 msm_bedais[i].port_id;
1256 payload.copp_idx[num_copps] = j;
1257 payload.app_type[num_copps] =
1258 fe_dai_app_type_cfg
1259 [fe_id][session_type][i]
1260 .app_type;
1261 payload.acdb_dev_id[num_copps] =
1262 fe_dai_app_type_cfg
1263 [fe_id][session_type][i]
1264 .acdb_dev_id;
1265 payload.sample_rate[num_copps] =
1266 fe_dai_app_type_cfg
1267 [fe_id][session_type][i]
1268 .sample_rate;
1269 num_copps++;
1270 }
1271 }
1272 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1273 && passthr_mode !=
1274 COMPRESSED_PASSTHROUGH_GEN) {
1275 msm_routing_send_device_pp_params(
1276 msm_bedais[i].port_id,
1277 copp_idx, fe_id);
1278 }
1279 }
1280 }
1281 if (num_copps) {
1282 payload.num_copps = num_copps;
1283 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1284 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1285 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1286 }
1287 mutex_unlock(&routing_lock);
1288 return 0;
1289}
1290
1291static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1292{
1293 u32 session_id;
1294
1295 switch (val) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301296 case MSM_FRONTEND_DAI_QCHAT:
1297 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1298 break;
1299 case MSM_FRONTEND_DAI_VOIP:
1300 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1301 break;
1302 case MSM_FRONTEND_DAI_VOICEMMODE1:
1303 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1304 break;
1305 case MSM_FRONTEND_DAI_VOICEMMODE2:
1306 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1307 break;
1308 default:
1309 session_id = 0;
1310 }
1311
1312 pr_debug("%s session_id 0x%x", __func__, session_id);
1313 return session_id;
1314}
1315
1316static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1317 int dspst_id, int stream_type)
1318{
1319 int copp_idx = 0;
1320 int sess_type = 0;
1321 int i = 0, j = 0, be_id;
1322 int ret = 0;
1323
1324 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1325 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1326 return 0;
1327 }
1328
1329 if (!(channel_mixer[fe_id].enable)) {
1330 pr_debug("%s: channel mixer not enabled for FE %d\n",
1331 __func__, fe_id);
1332 return 0;
1333 }
1334
1335 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1336 sess_type = SESSION_TYPE_RX;
1337 else
1338 sess_type = SESSION_TYPE_TX;
1339
1340 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1341 ++i) {
1342 be_id = channel_input[fe_id][i] - 1;
1343 channel_mixer[fe_id].input_channels[i] =
1344 msm_bedais[be_id].channel;
1345
1346 if ((msm_bedais[be_id].active) &&
1347 test_bit(fe_id,
1348 &msm_bedais[be_id].fe_sessions[0])) {
1349 unsigned long copp =
1350 session_copp_map[fe_id][sess_type][be_id];
1351 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1352 if (test_bit(j, &copp)) {
1353 copp_idx = j;
1354 break;
1355 }
1356 }
1357
1358 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1359 __func__,
1360 fe_id, be_id, msm_bedais[be_id].channel,
1361 copp_idx);
1362 ret = adm_programable_channel_mixer(
1363 msm_bedais[be_id].port_id,
1364 copp_idx, dspst_id, sess_type,
1365 channel_mixer + fe_id, i);
1366 }
1367 }
1368
1369 return ret;
1370}
1371
1372int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1373 int dspst_id, int stream_type)
1374{
1375 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1376 struct route_payload payload;
1377 u32 channels, sample_rate;
1378 uint16_t bits_per_sample = 16;
1379 uint32_t passthr_mode = LEGACY_PCM;
1380 int ret = 0;
1381
1382 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1383 /* bad ID assigned in machine driver */
1384 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1385 return -EINVAL;
1386 }
1387
1388 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1389 session_type = SESSION_TYPE_RX;
1390 path_type = ADM_PATH_PLAYBACK;
1391 port_type = MSM_AFE_PORT_TYPE_RX;
1392 } else {
1393 session_type = SESSION_TYPE_TX;
1394 path_type = ADM_PATH_LIVE_REC;
1395 port_type = MSM_AFE_PORT_TYPE_TX;
1396 }
1397
1398 mutex_lock(&routing_lock);
1399
1400 payload.num_copps = 0; /* only RX needs to use payload */
1401 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1402 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1403
1404 /* re-enable EQ if active */
1405 msm_qti_pp_send_eq_values(fedai_id);
1406 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1407 if (!is_be_dai_extproc(i) &&
1408 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1409 (msm_bedais[i].active) &&
1410 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1411 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1412 /*
1413 * check if ADM needs to be configured with different
1414 * channel mapping than backend
1415 */
1416 if (!msm_bedais[i].adm_override_ch)
1417 channels = msm_bedais[i].channel;
1418 else
1419 channels = msm_bedais[i].adm_override_ch;
1420 msm_bedais[i].passthr_mode[fedai_id] =
1421 LEGACY_PCM;
1422
1423 bits_per_sample = msm_routing_get_bit_width(
1424 msm_bedais[i].format);
1425
1426 app_type =
1427 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1428 if (app_type) {
1429 app_type_idx =
1430 msm_pcm_routing_get_app_type_idx(app_type);
1431 sample_rate =
1432 fe_dai_app_type_cfg[fedai_id][session_type][i]
1433 .sample_rate;
1434 bits_per_sample =
1435 app_type_cfg[app_type_idx].bit_width;
1436 } else
1437 sample_rate = msm_bedais[i].sample_rate;
1438
1439 acdb_dev_id =
1440 fe_dai_app_type_cfg[fedai_id][session_type][i]
1441 .acdb_dev_id;
1442 topology = msm_routing_get_adm_topology(fedai_id,
1443 session_type,
1444 i);
1445 copp_idx = adm_open(msm_bedais[i].port_id, path_type,
1446 sample_rate, channels, topology,
1447 perf_mode, bits_per_sample,
1448 app_type, acdb_dev_id);
1449 if ((copp_idx < 0) ||
1450 (copp_idx >= MAX_COPPS_PER_PORT)) {
1451 pr_err("%s: adm open failed copp_idx:%d\n",
1452 __func__, copp_idx);
1453 mutex_unlock(&routing_lock);
1454 return -EINVAL;
1455 }
1456 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1457 __func__, fedai_id, session_type, i);
1458 set_bit(copp_idx,
1459 &session_copp_map[fedai_id][session_type][i]);
1460
1461 if (msm_is_resample_needed(
1462 sample_rate,
1463 msm_bedais[i].sample_rate))
1464 adm_copp_mfc_cfg(
1465 msm_bedais[i].port_id, copp_idx,
1466 msm_bedais[i].sample_rate);
1467
1468 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1469 unsigned long copp =
1470 session_copp_map[fedai_id][session_type][i];
1471 if (test_bit(j, &copp)) {
1472 payload.port_id[num_copps] =
1473 msm_bedais[i].port_id;
1474 payload.copp_idx[num_copps] = j;
1475 payload.app_type[num_copps] =
1476 fe_dai_app_type_cfg
1477 [fedai_id][session_type]
1478 [i].app_type;
1479 payload.acdb_dev_id[num_copps] =
1480 fe_dai_app_type_cfg
1481 [fedai_id][session_type]
1482 [i].acdb_dev_id;
1483 payload.sample_rate[num_copps] =
1484 fe_dai_app_type_cfg
1485 [fedai_id][session_type]
1486 [i].sample_rate;
1487 num_copps++;
1488 }
1489 }
1490 if ((perf_mode == LEGACY_PCM_MODE) &&
1491 (msm_bedais[i].passthr_mode[fedai_id] ==
1492 LEGACY_PCM))
1493 msm_pcm_routing_cfg_pp(msm_bedais[i].port_id,
1494 copp_idx, topology,
1495 channels);
1496 }
1497 }
1498 if (num_copps) {
1499 payload.num_copps = num_copps;
1500 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1501 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1502 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1503 }
1504
1505 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1506 dspst_id, stream_type);
1507 mutex_unlock(&routing_lock);
1508 return ret;
1509}
1510
1511int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1512 int dspst_id, int stream_type,
1513 struct msm_pcm_routing_evt event_info)
1514{
1515 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1516 stream_type)) {
1517 pr_err("%s: failed to reg phy stream\n", __func__);
1518 return -EINVAL;
1519 }
1520
1521 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1522 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1523 else
1524 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1525 return 0;
1526}
1527
1528void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1529{
1530 int i, port_type, session_type, path_type, topology;
1531 struct msm_pcm_routing_fdai_data *fdai;
1532
1533 if (!is_mm_lsm_fe_id(fedai_id)) {
1534 /* bad ID assigned in machine driver */
1535 pr_err("%s: bad MM ID\n", __func__);
1536 return;
1537 }
1538
1539 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1540 port_type = MSM_AFE_PORT_TYPE_RX;
1541 session_type = SESSION_TYPE_RX;
1542 path_type = ADM_PATH_PLAYBACK;
1543 } else {
1544 port_type = MSM_AFE_PORT_TYPE_TX;
1545 session_type = SESSION_TYPE_TX;
1546 path_type = ADM_PATH_LIVE_REC;
1547 }
1548
1549 mutex_lock(&routing_lock);
1550 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1551 if (!is_be_dai_extproc(i) &&
1552 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1553 (msm_bedais[i].active) &&
1554 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1555 int idx;
1556 unsigned long copp =
1557 session_copp_map[fedai_id][session_type][i];
1558 fdai = &fe_dai_map[fedai_id][session_type];
1559
1560 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1561 if (test_bit(idx, &copp))
1562 break;
1563
1564 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1565 pr_debug("%s: copp idx is invalid, exiting\n",
1566 __func__);
1567 continue;
1568 }
1569 topology = adm_get_topology_for_port_copp_idx(
1570 msm_bedais[i].port_id, idx);
1571 adm_close(msm_bedais[i].port_id, fdai->perf_mode, idx);
1572 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1573 __func__, copp, fedai_id, session_type, i);
1574 clear_bit(idx,
1575 &session_copp_map[fedai_id][session_type][i]);
1576 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1577 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1578 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1579 (msm_bedais[i].passthr_mode[fedai_id] ==
1580 LEGACY_PCM))
1581 msm_pcm_routing_deinit_pp(msm_bedais[i].port_id,
1582 topology);
1583 }
1584 }
1585
1586 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1587 fe_dai_map[fedai_id][session_type].be_srate = 0;
1588 mutex_unlock(&routing_lock);
1589}
1590
1591/* Check if FE/BE route is set */
1592static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1593{
1594 bool rc = false;
1595
1596 if (!is_mm_lsm_fe_id(fe_id)) {
1597 /* recheck FE ID in the mixer control defined in this file */
1598 pr_err("%s: bad MM ID\n", __func__);
1599 return rc;
1600 }
1601
1602 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1603 rc = true;
1604
1605 return rc;
1606}
1607
1608static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1609{
1610 int session_type, path_type, topology;
1611 u32 channels, sample_rate;
1612 uint16_t bits_per_sample = 16;
1613 struct msm_pcm_routing_fdai_data *fdai;
1614 uint32_t passthr_mode;
1615 bool is_lsm;
1616
1617 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1618
1619 if (!is_mm_lsm_fe_id(val)) {
1620 /* recheck FE ID in the mixer control defined in this file */
1621 pr_err("%s: bad MM ID\n", __func__);
1622 return;
1623 }
1624
1625 if (!route_check_fe_id_adm_support(val)) {
1626 /* ignore adm open if not supported for fe_id */
1627 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1628 return;
1629 }
1630
1631 passthr_mode = msm_bedais[reg].passthr_mode[val];
1632 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1633 MSM_AFE_PORT_TYPE_RX) {
1634 session_type = SESSION_TYPE_RX;
1635 if (passthr_mode != LEGACY_PCM)
1636 path_type = ADM_PATH_COMPRESSED_RX;
1637 else
1638 path_type = ADM_PATH_PLAYBACK;
1639 } else {
1640 session_type = SESSION_TYPE_TX;
Haynes Mathew George9a277722018-01-29 17:34:49 -08001641 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301642 path_type = ADM_PATH_COMPRESSED_TX;
1643 else
1644 path_type = ADM_PATH_LIVE_REC;
1645 }
1646 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1647 (val <= MSM_FRONTEND_DAI_LSM8);
1648
1649 mutex_lock(&routing_lock);
1650 if (set) {
1651 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1652 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1653 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1654 voc_start_playback(set, msm_bedais[reg].port_id);
1655
1656 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1657 fdai = &fe_dai_map[val][session_type];
1658 if (msm_bedais[reg].active && fdai->strm_id !=
1659 INVALID_SESSION) {
1660 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1661 /*
1662 * check if ADM needs to be configured with different
1663 * channel mapping than backend
1664 */
1665 if (!msm_bedais[reg].adm_override_ch)
1666 channels = msm_bedais[reg].channel;
1667 else
1668 channels = msm_bedais[reg].adm_override_ch;
1669 if (session_type == SESSION_TYPE_TX &&
1670 fdai->be_srate &&
1671 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1672 pr_debug("%s: flush strm %d diff BE rates\n",
1673 __func__, fdai->strm_id);
1674
1675 if (fdai->event_info.event_func)
1676 fdai->event_info.event_func(
1677 MSM_PCM_RT_EVT_BUF_RECFG,
1678 fdai->event_info.priv_data);
1679 fdai->be_srate = 0; /* might not need it */
1680 }
1681
1682 bits_per_sample = msm_routing_get_bit_width(
1683 msm_bedais[reg].format);
1684
1685 app_type =
1686 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1687 if (app_type && is_lsm) {
1688 app_type_idx =
1689 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1690 sample_rate =
1691 fe_dai_app_type_cfg[val][session_type][reg]
1692 .sample_rate;
1693 bits_per_sample =
1694 lsm_app_type_cfg[app_type_idx].bit_width;
1695 } else if (app_type) {
1696 app_type_idx =
1697 msm_pcm_routing_get_app_type_idx(app_type);
1698 sample_rate =
1699 fe_dai_app_type_cfg[val][session_type][reg]
1700 .sample_rate;
1701 bits_per_sample =
1702 app_type_cfg[app_type_idx].bit_width;
1703 } else
1704 sample_rate = msm_bedais[reg].sample_rate;
1705
1706 topology = msm_routing_get_adm_topology(val,
1707 session_type,
1708 reg);
1709 acdb_dev_id =
1710 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
1711 copp_idx = adm_open(msm_bedais[reg].port_id, path_type,
1712 sample_rate, channels, topology,
1713 fdai->perf_mode, bits_per_sample,
1714 app_type, acdb_dev_id);
1715 if ((copp_idx < 0) ||
1716 (copp_idx >= MAX_COPPS_PER_PORT)) {
1717 pr_err("%s: adm open failed\n", __func__);
1718 mutex_unlock(&routing_lock);
1719 return;
1720 }
1721 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1722 __func__, val, session_type, reg);
1723 set_bit(copp_idx,
1724 &session_copp_map[val][session_type][reg]);
1725
1726 if (msm_is_resample_needed(
1727 sample_rate,
1728 msm_bedais[reg].sample_rate))
1729 adm_copp_mfc_cfg(
1730 msm_bedais[reg].port_id, copp_idx,
1731 msm_bedais[reg].sample_rate);
1732
1733 if (session_type == SESSION_TYPE_RX &&
1734 fdai->event_info.event_func)
1735 fdai->event_info.event_func(
1736 MSM_PCM_RT_EVT_DEVSWITCH,
1737 fdai->event_info.priv_data);
1738
1739 msm_pcm_routing_build_matrix(val, session_type,
1740 path_type,
1741 fdai->perf_mode,
1742 passthr_mode);
1743 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1744 (passthr_mode == LEGACY_PCM))
1745 msm_pcm_routing_cfg_pp(msm_bedais[reg].port_id,
1746 copp_idx, topology,
1747 channels);
1748 }
1749 } else {
1750 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1751 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1752 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1753 voc_start_playback(set, msm_bedais[reg].port_id);
1754 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1755 fdai = &fe_dai_map[val][session_type];
1756 if (msm_bedais[reg].active && fdai->strm_id !=
1757 INVALID_SESSION) {
1758 int idx;
1759 int port_id;
1760 unsigned long copp =
1761 session_copp_map[val][session_type][reg];
1762 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1763 if (test_bit(idx, &copp))
1764 break;
1765
1766 port_id = msm_bedais[reg].port_id;
1767 topology = adm_get_topology_for_port_copp_idx(port_id,
1768 idx);
1769 adm_close(msm_bedais[reg].port_id, fdai->perf_mode,
1770 idx);
1771 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1772 __func__, copp, val, session_type, reg,
1773 topology);
1774 clear_bit(idx,
1775 &session_copp_map[val][session_type][reg]);
1776 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1777 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1778 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1779 (passthr_mode == LEGACY_PCM))
1780 msm_pcm_routing_deinit_pp(
1781 msm_bedais[reg].port_id,
1782 topology);
1783 msm_pcm_routing_build_matrix(val, session_type,
1784 path_type,
1785 fdai->perf_mode,
1786 passthr_mode);
1787 }
1788 }
1789 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1790 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1791 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1792
1793 mutex_unlock(&routing_lock);
1794}
1795
1796static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1797 struct snd_ctl_elem_value *ucontrol)
1798{
1799 struct soc_mixer_control *mc =
1800 (struct soc_mixer_control *)kcontrol->private_value;
1801
1802 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1803 ucontrol->value.integer.value[0] = 1;
1804 else
1805 ucontrol->value.integer.value[0] = 0;
1806
1807 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1808 ucontrol->value.integer.value[0]);
1809
1810 return 0;
1811}
1812
1813static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1814 struct snd_ctl_elem_value *ucontrol)
1815{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301816 struct snd_soc_dapm_widget *widget =
1817 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301818 struct soc_mixer_control *mc =
1819 (struct soc_mixer_control *)kcontrol->private_value;
1820 struct snd_soc_dapm_update *update = NULL;
1821
1822 if (ucontrol->value.integer.value[0] &&
1823 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1824 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1825 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1826 update);
1827 } else if (!ucontrol->value.integer.value[0] &&
1828 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1829 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1830 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1831 update);
1832 }
1833
1834 return 1;
1835}
1836
1837static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1838 struct snd_ctl_elem_value *ucontrol)
1839{
1840 struct soc_mixer_control *mc =
1841 (struct soc_mixer_control *)kcontrol->private_value;
1842
1843 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1844 ucontrol->value.integer.value[0] = 1;
1845 else
1846 ucontrol->value.integer.value[0] = 0;
1847
1848 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1849 ucontrol->value.integer.value[0]);
1850
1851 return 0;
1852}
1853
1854static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1855 struct snd_ctl_elem_value *ucontrol)
1856{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301857 struct snd_soc_dapm_widget *widget =
1858 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301859 struct soc_mixer_control *mc =
1860 (struct soc_mixer_control *)kcontrol->private_value;
1861 struct snd_soc_dapm_update *update = NULL;
1862
1863 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1864 ucontrol->value.integer.value[0]);
1865
1866 if (ucontrol->value.integer.value[0]) {
1867 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1868 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1869 snd_soc_dapm_mixer_update_power(widget->dapm,
1870 kcontrol, 1, update);
1871 } else if (!ucontrol->value.integer.value[0]) {
1872 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1873 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1874 snd_soc_dapm_mixer_update_power(widget->dapm,
1875 kcontrol, 0, update);
1876 }
1877
1878 return 1;
1879}
1880
1881static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1882{
1883 u32 session_id = 0;
1884 u16 path_type;
1885 struct media_format_info voc_be_media_format;
1886
1887 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1888
1889 session_id = msm_pcm_routing_get_voc_sessionid(val);
1890
1891 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1892 __func__, val, session_id);
1893
1894 mutex_lock(&routing_lock);
1895
1896 if (set)
1897 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1898 else
1899 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1900
1901 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1902 afe_get_port_type(msm_bedais[reg].port_id) ==
1903 MSM_AFE_PORT_TYPE_RX) {
1904 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1905 __func__, set, msm_bedais[reg].port_id);
1906 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1907 }
1908
1909 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1910 MSM_AFE_PORT_TYPE_RX)
1911 path_type = RX_PATH;
1912 else
1913 path_type = TX_PATH;
1914
1915 if (set) {
1916 if (msm_bedais[reg].active) {
1917 voc_set_route_flag(session_id, path_type, 1);
1918
1919 memset(&voc_be_media_format, 0,
1920 sizeof(struct media_format_info));
1921
1922 voc_be_media_format.port_id = msm_bedais[reg].port_id;
1923 voc_be_media_format.num_channels =
1924 msm_bedais[reg].channel;
1925 voc_be_media_format.sample_rate =
1926 msm_bedais[reg].sample_rate;
1927 voc_be_media_format.bits_per_sample =
1928 msm_bedais[reg].format;
1929 /* Defaulting this to 1 for voice call usecases */
1930 voc_be_media_format.channel_mapping[0] = 1;
1931
1932 voc_set_device_config(session_id, path_type,
1933 &voc_be_media_format);
1934
1935 if (voc_get_route_flag(session_id, TX_PATH) &&
1936 voc_get_route_flag(session_id, RX_PATH))
1937 voc_enable_device(session_id);
1938 } else {
1939 pr_debug("%s BE is not active\n", __func__);
1940 }
1941 } else {
1942 voc_set_route_flag(session_id, path_type, 0);
1943 voc_disable_device(session_id);
1944 }
1945
1946 mutex_unlock(&routing_lock);
1947
1948}
1949
1950static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
1951 struct snd_ctl_elem_value *ucontrol)
1952{
1953 struct soc_mixer_control *mc =
1954 (struct soc_mixer_control *)kcontrol->private_value;
1955
1956 mutex_lock(&routing_lock);
1957
1958 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1959 ucontrol->value.integer.value[0] = 1;
1960 else
1961 ucontrol->value.integer.value[0] = 0;
1962
1963 mutex_unlock(&routing_lock);
1964
1965 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1966 ucontrol->value.integer.value[0]);
1967
1968 return 0;
1969}
1970
1971static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
1972 struct snd_ctl_elem_value *ucontrol)
1973{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301974 struct snd_soc_dapm_widget *widget =
1975 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301976 struct soc_mixer_control *mc =
1977 (struct soc_mixer_control *)kcontrol->private_value;
1978 struct snd_soc_dapm_update *update = NULL;
1979
1980 if (ucontrol->value.integer.value[0]) {
1981 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
1982 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1983 update);
1984 } else {
1985 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
1986 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1987 update);
1988 }
1989
1990 return 1;
1991}
1992
1993static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1994 struct snd_ctl_elem_value *ucontrol)
1995{
1996 struct soc_mixer_control *mc =
1997 (struct soc_mixer_control *)kcontrol->private_value;
1998
1999 mutex_lock(&routing_lock);
2000
2001 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
2002 ucontrol->value.integer.value[0] = 1;
2003 else
2004 ucontrol->value.integer.value[0] = 0;
2005
2006 mutex_unlock(&routing_lock);
2007
2008 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2009 ucontrol->value.integer.value[0]);
2010
2011 return 0;
2012}
2013
2014static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
2015 struct snd_ctl_elem_value *ucontrol)
2016{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302017 struct snd_soc_dapm_widget *widget =
2018 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302019 struct soc_mixer_control *mc =
2020 (struct soc_mixer_control *)kcontrol->private_value;
2021 struct snd_soc_dapm_update *update = NULL;
2022
2023 if (ucontrol->value.integer.value[0]) {
2024 mutex_lock(&routing_lock);
2025 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2026 mutex_unlock(&routing_lock);
2027
2028 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2029 update);
2030 } else {
2031 mutex_lock(&routing_lock);
2032 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2033 mutex_unlock(&routing_lock);
2034
2035 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2036 update);
2037 }
2038
2039 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2040 ucontrol->value.integer.value[0]);
2041
2042 return 1;
2043}
2044
2045/*
2046 * Return the mapping between port ID and backend ID to enable the AFE callback
2047 * to determine the acdb_dev_id from the port id
2048 */
2049int msm_pcm_get_be_id_from_port_id(int port_id)
2050{
2051 int i;
2052 int be_id = -EINVAL;
2053
2054 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2055 if (msm_bedais[i].port_id == port_id) {
2056 be_id = i;
2057 break;
2058 }
2059 }
2060
2061 return be_id;
2062}
2063
2064/*
2065 * Return the registered dev_acdb_id given a port ID to enable identifying the
2066 * correct AFE calibration information by comparing the header information.
2067 */
2068static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2069{
2070 int acdb_id = -EINVAL;
2071 int i = 0;
2072 int session;
2073 int port_type = afe_get_port_type(port_id);
2074 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2075
2076 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2077 __func__, port_id, be_id, port_type);
2078
2079 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2080 session = SESSION_TYPE_TX;
2081 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2082 session = SESSION_TYPE_RX;
2083 } else {
2084 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2085 acdb_id = -EINVAL;
2086 goto exit;
2087 }
2088
2089 if (be_id < 0) {
2090 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2091 goto exit;
2092 }
2093
2094 mutex_lock(&routing_lock);
2095 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2096 MSM_FRONTEND_DAI_MAX);
2097 if (i < MSM_FRONTEND_DAI_MAX)
2098 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2099
2100 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2101 __func__, i, session, be_id, acdb_id);
2102 mutex_unlock(&routing_lock);
2103exit:
2104 return acdb_id;
2105}
2106
2107static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2108 struct snd_ctl_elem_value *ucontrol)
2109{
2110 ucontrol->value.integer.value[0] = fm_switch_enable;
2111 pr_debug("%s: FM Switch enable %ld\n", __func__,
2112 ucontrol->value.integer.value[0]);
2113 return 0;
2114}
2115
2116static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2117 struct snd_ctl_elem_value *ucontrol)
2118{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302119 struct snd_soc_dapm_widget *widget =
2120 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302121 struct snd_soc_dapm_update *update = NULL;
2122
2123 pr_debug("%s: FM Switch enable %ld\n", __func__,
2124 ucontrol->value.integer.value[0]);
2125 if (ucontrol->value.integer.value[0])
2126 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2127 update);
2128 else
2129 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2130 update);
2131 fm_switch_enable = ucontrol->value.integer.value[0];
2132 return 1;
2133}
2134
2135static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2136 struct snd_ctl_elem_value *ucontrol)
2137{
2138 ucontrol->value.integer.value[0] = hfp_switch_enable;
2139 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2140 ucontrol->value.integer.value[0]);
2141 return 0;
2142}
2143
2144static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2145 struct snd_ctl_elem_value *ucontrol)
2146{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302147 struct snd_soc_dapm_widget *widget =
2148 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302149 struct snd_soc_dapm_update *update = NULL;
2150
2151 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2152 ucontrol->value.integer.value[0]);
2153 if (ucontrol->value.integer.value[0])
2154 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2155 1, update);
2156 else
2157 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2158 0, update);
2159 hfp_switch_enable = ucontrol->value.integer.value[0];
2160 return 1;
2161}
2162
2163static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2164 struct snd_ctl_elem_value *ucontrol)
2165{
2166 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2167 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2168 ucontrol->value.integer.value[0]);
2169 return 0;
2170}
2171
2172static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2173 struct snd_ctl_elem_value *ucontrol)
2174{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302175 struct snd_soc_dapm_widget *widget =
2176 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302177 struct snd_soc_dapm_update *update = NULL;
2178
2179 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2180 ucontrol->value.integer.value[0]);
2181 if (ucontrol->value.integer.value[0])
2182 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2183 update);
2184 else
2185 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2186 update);
2187 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2188 return 1;
2189}
2190
2191static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2192 struct snd_ctl_elem_value *ucontrol)
2193{
2194 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2195 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2196 ucontrol->value.integer.value[0]);
2197 return 0;
2198}
2199
2200static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2201 struct snd_ctl_elem_value *ucontrol)
2202{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302203 struct snd_soc_dapm_widget *widget =
2204 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302205 struct snd_soc_dapm_update *update = NULL;
2206
2207 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2208 ucontrol->value.integer.value[0]);
2209 if (ucontrol->value.integer.value[0])
2210 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2211 update);
2212 else
2213 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2214 update);
2215 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2216 return 1;
2217}
2218
2219static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2220 struct snd_ctl_elem_value *ucontrol)
2221{
2222 ucontrol->value.integer.value[0] = usb_switch_enable;
2223 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2224 ucontrol->value.integer.value[0]);
2225 return 0;
2226}
2227
2228static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2229 struct snd_ctl_elem_value *ucontrol)
2230{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302231 struct snd_soc_dapm_widget *widget =
2232 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302233 struct snd_soc_dapm_update *update = NULL;
2234
2235 pr_debug("%s: USB Switch enable %ld\n", __func__,
2236 ucontrol->value.integer.value[0]);
2237 if (ucontrol->value.integer.value[0])
2238 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2239 1, update);
2240 else
2241 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2242 0, update);
2243 usb_switch_enable = ucontrol->value.integer.value[0];
2244 return 1;
2245}
2246
2247static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2248 struct snd_ctl_elem_value *ucontrol)
2249{
2250 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2251 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2252 ucontrol->value.integer.value[0]);
2253 return 0;
2254}
2255
2256static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2257 struct snd_ctl_elem_value *ucontrol)
2258{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302259 struct snd_soc_dapm_widget *widget =
2260 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302261 struct snd_soc_dapm_update *update = NULL;
2262
2263 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2264 ucontrol->value.integer.value[0]);
2265 if (ucontrol->value.integer.value[0])
2266 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2267 update);
2268 else
2269 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2270 update);
2271 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2272 return 1;
2273}
2274
2275static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2276 struct snd_ctl_elem_value *ucontrol)
2277{
2278 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2279 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2280 ucontrol->value.integer.value[0]);
2281 return 0;
2282}
2283
2284static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2285 struct snd_ctl_elem_value *ucontrol)
2286{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302287 struct snd_soc_dapm_widget *widget =
2288 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302289 struct snd_soc_dapm_update *update = NULL;
2290
2291 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2292 ucontrol->value.integer.value[0]);
2293 if (ucontrol->value.integer.value[0])
2294 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2295 update);
2296 else
2297 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2298 update);
2299 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2300 return 1;
2301}
2302
2303static int msm_routing_get_tert_mi2s_switch_mixer(
2304 struct snd_kcontrol *kcontrol,
2305 struct snd_ctl_elem_value *ucontrol)
2306{
2307 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2308 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2309 ucontrol->value.integer.value[0]);
2310 return 0;
2311}
2312
2313static int msm_routing_put_tert_mi2s_switch_mixer(
2314 struct snd_kcontrol *kcontrol,
2315 struct snd_ctl_elem_value *ucontrol)
2316{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302317 struct snd_soc_dapm_widget *widget =
2318 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302319 struct snd_soc_dapm_update *update = NULL;
2320
2321 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2322 ucontrol->value.integer.value[0]);
2323 if (ucontrol->value.integer.value[0])
2324 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2325 update);
2326 else
2327 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2328 update);
2329 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2330 return 1;
2331}
2332
2333static int msm_routing_get_quat_mi2s_switch_mixer(
2334 struct snd_kcontrol *kcontrol,
2335 struct snd_ctl_elem_value *ucontrol)
2336{
2337 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2338 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2339 ucontrol->value.integer.value[0]);
2340 return 0;
2341}
2342
2343static int msm_routing_put_quat_mi2s_switch_mixer(
2344 struct snd_kcontrol *kcontrol,
2345 struct snd_ctl_elem_value *ucontrol)
2346{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302347 struct snd_soc_dapm_widget *widget =
2348 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302349 struct snd_soc_dapm_update *update = NULL;
2350
2351 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2352 ucontrol->value.integer.value[0]);
2353 if (ucontrol->value.integer.value[0])
2354 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2355 update);
2356 else
2357 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2358 update);
2359 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2360 return 1;
2361}
2362
Rohit Kumara5077932017-09-10 22:05:05 +05302363static int msm_routing_get_quin_mi2s_switch_mixer(
2364 struct snd_kcontrol *kcontrol,
2365 struct snd_ctl_elem_value *ucontrol)
2366{
2367 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2368 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2369 ucontrol->value.integer.value[0]);
2370 return 0;
2371}
2372
2373static int msm_routing_put_quin_mi2s_switch_mixer(
2374 struct snd_kcontrol *kcontrol,
2375 struct snd_ctl_elem_value *ucontrol)
2376{
2377 struct snd_soc_dapm_widget *widget =
2378 snd_soc_dapm_kcontrol_widget(kcontrol);
2379 struct snd_soc_dapm_update *update = NULL;
2380
2381 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2382 ucontrol->value.integer.value[0]);
2383 if (ucontrol->value.integer.value[0])
2384 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2385 update);
2386 else
2387 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2388 update);
2389 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2390 return 1;
2391}
2392
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302393static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2394 struct snd_ctl_elem_value *ucontrol)
2395{
2396 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2397 pr_debug("%s: FM Switch enable %ld\n", __func__,
2398 ucontrol->value.integer.value[0]);
2399 return 0;
2400}
2401
2402static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2403 struct snd_ctl_elem_value *ucontrol)
2404{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302405 struct snd_soc_dapm_widget *widget =
2406 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302407 struct snd_soc_dapm_update *update = NULL;
2408
2409 pr_debug("%s: FM Switch enable %ld\n", __func__,
2410 ucontrol->value.integer.value[0]);
2411 if (ucontrol->value.integer.value[0])
2412 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2413 update);
2414 else
2415 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2416 update);
2417 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2418 return 1;
2419}
2420
2421static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2422 struct snd_ctl_elem_value *ucontrol)
2423{
2424 ucontrol->value.integer.value[0] = lsm_port_index;
2425 return 0;
2426}
2427
2428static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2429 struct snd_ctl_elem_value *ucontrol)
2430{
2431 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2432 int mux = ucontrol->value.enumerated.item[0];
2433 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2434
2435 if (mux >= e->items) {
2436 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2437 return -EINVAL;
2438 }
2439
2440 pr_debug("%s: LSM enable %ld\n", __func__,
2441 ucontrol->value.integer.value[0]);
2442 switch (ucontrol->value.integer.value[0]) {
2443 case 1:
2444 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2445 break;
2446 case 2:
2447 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2448 break;
2449 case 3:
2450 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2451 break;
2452 case 4:
2453 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2454 break;
2455 case 5:
2456 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2457 break;
2458 case 6:
2459 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2460 break;
2461 case 7:
2462 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2463 break;
2464 case 8:
2465 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2466 break;
2467 case 9:
2468 lsm_port = ADM_LSM_PORT_ID;
2469 break;
2470 case 10:
Ashish Jain01b10322018-05-12 15:37:44 +05302471 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_2;
2472 break;
2473 case 11:
2474 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_3;
2475 break;
2476 case 12:
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302477 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
2478 break;
2479 default:
2480 pr_err("Default lsm port");
2481 break;
2482 }
2483 set_lsm_port(lsm_port);
2484 lsm_port_index = ucontrol->value.integer.value[0];
2485
2486 return 0;
2487}
2488
2489static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2490 struct snd_ctl_elem_value *ucontrol)
2491{
2492 int i;
2493 u16 port_id;
2494 enum afe_mad_type mad_type;
2495
2496 pr_debug("%s: enter\n", __func__);
2497 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2498 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2499 strlen(lsm_port_text[i])))
2500 break;
2501
2502 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2503 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2504 return -EINVAL;
2505 }
2506
2507 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2508
2509 /*Check for Tertiary/Quaternary/INT3 TX port*/
2510 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2511 strlen(lsm_port_text[7])))
2512 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2513
2514 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2515 strlen(lsm_port_text[8])))
2516 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2517
2518 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2519 strlen(lsm_port_text[10])))
2520 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2521
2522 mad_type = afe_port_get_mad_type(port_id);
2523 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2524 mad_type);
2525 switch (mad_type) {
2526 case MAD_HW_NONE:
2527 ucontrol->value.integer.value[0] = MADNONE;
2528 break;
2529 case MAD_HW_AUDIO:
2530 ucontrol->value.integer.value[0] = MADAUDIO;
2531 break;
2532 case MAD_HW_BEACON:
2533 ucontrol->value.integer.value[0] = MADBEACON;
2534 break;
2535 case MAD_HW_ULTRASOUND:
2536 ucontrol->value.integer.value[0] = MADULTRASOUND;
2537 break;
2538 case MAD_SW_AUDIO:
2539 ucontrol->value.integer.value[0] = MADSWAUDIO;
2540 break;
2541 default:
2542 WARN(1, "Unknown\n");
2543 return -EINVAL;
2544 }
2545 return 0;
2546}
2547
2548static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2549 struct snd_ctl_elem_value *ucontrol)
2550{
2551 int i;
2552 u16 port_id;
2553 enum afe_mad_type mad_type;
2554
2555 pr_debug("%s: enter\n", __func__);
2556 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2557 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2558 strlen(lsm_port_text[i])))
2559 break;
2560
2561 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2562 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2563 return -EINVAL;
2564 }
2565
2566 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2567 switch (ucontrol->value.integer.value[0]) {
2568 case MADNONE:
2569 mad_type = MAD_HW_NONE;
2570 break;
2571 case MADAUDIO:
2572 mad_type = MAD_HW_AUDIO;
2573 break;
2574 case MADBEACON:
2575 mad_type = MAD_HW_BEACON;
2576 break;
2577 case MADULTRASOUND:
2578 mad_type = MAD_HW_ULTRASOUND;
2579 break;
2580 case MADSWAUDIO:
2581 mad_type = MAD_SW_AUDIO;
2582 break;
2583 default:
2584 WARN(1, "Unknown\n");
2585 return -EINVAL;
2586 }
2587
2588 /*Check for Tertiary/Quaternary/INT3 TX port*/
2589 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2590 strlen(lsm_port_text[7])))
2591 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2592
2593 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2594 strlen(lsm_port_text[8])))
2595 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2596
2597 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2598 strlen(lsm_port_text[10])))
2599 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2600
2601 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2602 mad_type);
2603 return afe_port_set_mad_type(port_id, mad_type);
2604}
2605
2606static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2607
2608static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2609 adm_override_chs_text);
2610
2611static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2612{
2613 int backend_id;
2614
2615 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2616 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2617 } else {
2618 pr_err("%s: unsupported backend id: %s",
2619 __func__, kcontrol->id.name);
2620 return -EINVAL;
2621 }
2622
2623 return backend_id;
2624}
2625static int msm_routing_adm_channel_config_get(
2626 struct snd_kcontrol *kcontrol,
2627 struct snd_ctl_elem_value *ucontrol)
2628{
2629 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2630
2631 if (backend_id >= 0) {
2632 mutex_lock(&routing_lock);
2633 ucontrol->value.integer.value[0] =
2634 msm_bedais[backend_id].adm_override_ch;
2635 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2636 ucontrol->value.integer.value[0], backend_id);
2637 mutex_unlock(&routing_lock);
2638 }
2639
2640 return 0;
2641}
2642
2643static int msm_routing_adm_channel_config_put(
2644 struct snd_kcontrol *kcontrol,
2645 struct snd_ctl_elem_value *ucontrol)
2646{
2647 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2648
2649 if (backend_id >= 0) {
2650 mutex_lock(&routing_lock);
2651 msm_bedais[backend_id].adm_override_ch =
2652 ucontrol->value.integer.value[0];
2653 pr_debug("%s:updating BE :%d adm channels: %d\n",
2654 __func__, backend_id,
2655 msm_bedais[backend_id].adm_override_ch);
2656 mutex_unlock(&routing_lock);
2657 }
2658
2659 return 0;
2660}
2661
2662static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2663 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2664 msm_routing_adm_channel_config_get,
2665 msm_routing_adm_channel_config_put),
2666};
2667
2668static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2669 struct snd_ctl_elem_value *ucontrol)
2670{
2671
2672 mutex_lock(&routing_lock);
2673 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2674 mutex_unlock(&routing_lock);
2675 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2676 ucontrol->value.integer.value[0]);
2677 return 0;
2678};
2679
2680static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2681 struct snd_ctl_elem_value *ucontrol)
2682{
2683 struct aanc_data aanc_info;
2684
2685 mutex_lock(&routing_lock);
2686 memset(&aanc_info, 0x00, sizeof(aanc_info));
2687 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2688 ucontrol->value.integer.value[0]);
2689 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2690 if (ucontrol->value.integer.value[0] == 0) {
2691 aanc_info.aanc_active = false;
2692 aanc_info.aanc_tx_port = 0;
2693 aanc_info.aanc_rx_port = 0;
2694 } else {
2695 aanc_info.aanc_active = true;
2696 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2697 aanc_info.aanc_tx_port =
2698 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2699 }
2700 afe_set_aanc_info(&aanc_info);
2701 mutex_unlock(&routing_lock);
2702 return 0;
2703};
2704static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2705 struct snd_ctl_elem_value *ucontrol)
2706{
2707 int idx = 0, shift = 0;
2708 struct soc_mixer_control *mc =
2709 (struct soc_mixer_control *)kcontrol->private_value;
2710
2711 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2712 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2713
2714 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2715 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2716 return -EINVAL;
2717 }
2718
2719 if (test_bit(shift,
2720 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2721 ucontrol->value.integer.value[0] = 1;
2722 else
2723 ucontrol->value.integer.value[0] = 0;
2724
2725 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2726 ucontrol->value.integer.value[0]);
2727
2728 return 0;
2729}
2730
2731static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2732 struct snd_ctl_elem_value *ucontrol)
2733{
2734 int idx = 0, shift = 0;
2735 struct soc_mixer_control *mc =
2736 (struct soc_mixer_control *)kcontrol->private_value;
2737
2738 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2739 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2740
2741 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2742 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2743 return -EINVAL;
2744 }
2745
2746 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2747 __func__, mc->reg, mc->shift,
2748 ucontrol->value.integer.value[0], idx, shift);
2749
2750 if (ucontrol->value.integer.value[0]) {
2751 afe_loopback(1, msm_bedais[mc->reg].port_id,
2752 msm_bedais[mc->shift].port_id);
2753 set_bit(shift,
2754 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2755 } else {
2756 afe_loopback(0, msm_bedais[mc->reg].port_id,
2757 msm_bedais[mc->shift].port_id);
2758 clear_bit(shift,
2759 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2760 }
2761
2762 return 1;
2763}
2764
2765static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2766 struct snd_ctl_elem_value *ucontrol)
2767{
2768 u16 fe_id = 0;
2769
2770 fe_id = ((struct soc_mixer_control *)
2771 kcontrol->private_value)->shift;
2772 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2773 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2774 return -EINVAL;
2775 }
2776
2777 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2778
2779 return 0;
2780}
2781
2782static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2783 struct snd_ctl_elem_value *ucontrol)
2784{
2785 u16 fe_id = 0;
2786
2787 fe_id = ((struct soc_mixer_control *)
2788 kcontrol->private_value)->shift;
2789 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2790 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2791 return -EINVAL;
2792 }
2793
2794 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2795
2796 return 1;
2797}
2798
2799static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2800 struct snd_ctl_elem_value *ucontrol)
2801{
2802 u16 fe_id = 0;
2803
2804 fe_id = ((struct soc_multi_mixer_control *)
2805 kcontrol->private_value)->shift;
2806 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2807 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2808 return -EINVAL;
2809 }
2810
2811 ucontrol->value.integer.value[0] =
2812 channel_mixer[fe_id].output_channel;
2813 return 0;
2814}
2815
2816static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2817 struct snd_ctl_elem_value *ucontrol)
2818{
2819 u16 fe_id = 0;
2820
2821 fe_id = ((struct soc_multi_mixer_control *)
2822 kcontrol->private_value)->shift;
2823 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2824 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2825 return -EINVAL;
2826 }
2827
2828 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2829 fe_id,
2830 (unsigned int)(ucontrol->value.integer.value[0]));
2831 channel_mixer[fe_id].output_channel =
2832 (unsigned int)(ucontrol->value.integer.value[0]);
2833
2834 return 1;
2835}
2836
2837static const char *const ch_mixer[] = {"Disable", "Enable"};
2838
2839/* If new backend is added, need update this array */
2840static const char *const be_name[] = {
2841"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2842"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2843"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2844"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2845"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2846"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2847"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2848"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2849"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2850"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2851"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2852"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2853"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2854"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2855"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2856"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2857"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2858"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2859"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2860"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2861"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2862"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2863"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2864"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2865"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2866"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2867"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2868"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2869"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2870"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302871"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2872"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2873"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2874"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302875"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2876"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302877"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302878"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2879"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2880"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2881"INT6_MI2S_RX", "INT6_MI2S_TX"
2882};
2883
2884static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2885 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2886static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2887 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2888static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2889 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2890static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2891 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2892
2893static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
2894 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
2895static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
2896 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
2897static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
2898 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
2899static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
2900 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
2901static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
2902 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
2903static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
2904 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
2905static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
2906 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
2907static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
2908 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
2909
2910static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
2911 unsigned int channels,
2912 unsigned int items, const char *const names[])
2913{
2914 if (uinfo->value.enumerated.item >= items)
2915 uinfo->value.enumerated.item = items - 1;
2916
2917 WARN(strlen(names[uinfo->value.enumerated.item]) >=
2918 sizeof(uinfo->value.enumerated.name),
2919 "ALSA: too long item name '%s'\n",
2920 names[uinfo->value.enumerated.item]);
2921 strlcpy(uinfo->value.enumerated.name,
2922 names[uinfo->value.enumerated.item],
2923 sizeof(uinfo->value.enumerated.name));
2924 return 0;
2925}
2926
2927static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
2928 struct snd_ctl_elem_info *uinfo)
2929{
2930 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2931
2932 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2933 uinfo->count = 1;
2934
2935 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
2936 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2937
2938 return 0;
2939}
2940static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
2941 struct snd_ctl_elem_value *ucontrol)
2942{
2943 u16 fe_id = 0;
2944
2945 fe_id = ((struct soc_enum *)
2946 kcontrol->private_value)->shift_l;
2947 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2948 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2949 return -EINVAL;
2950 }
2951
2952 pr_debug("%s: FE %d %s\n", __func__,
2953 fe_id,
2954 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
2955 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
2956 return 0;
2957}
2958
2959static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
2960 struct snd_ctl_elem_value *ucontrol)
2961{
2962 u16 fe_id = 0;
2963
2964 fe_id = ((struct soc_enum *)
2965 kcontrol->private_value)->shift_l;
2966 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2967 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2968 return -EINVAL;
2969 }
2970
2971 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
2972 pr_debug("%s: %s FE %d\n", __func__,
2973 channel_mixer[fe_id].enable ? "Enable" : "Disable",
2974 fe_id);
2975 return 0;
2976}
2977
2978static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
2979 struct snd_ctl_elem_info *uinfo)
2980{
2981 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2982
2983 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2984 uinfo->count = 1;
2985
2986 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
2987 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2988
2989 return 0;
2990}
2991
2992static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
2993 struct snd_ctl_elem_value *ucontrol)
2994{
2995 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2996 u16 fe_id = 0, in_ch = 0;
2997
2998 fe_id = e->shift_l;
2999 in_ch = e->shift_r;
3000 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3001 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3002 return -EINVAL;
3003 }
3004 if (in_ch >= ADM_MAX_CHANNELS) {
3005 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3006 return -EINVAL;
3007 }
3008
3009 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
3010 return 1;
3011}
3012
3013static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
3014 struct snd_ctl_elem_value *ucontrol)
3015{
3016 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3017 u16 fe_id = 0, in_ch = 0;
3018
3019 fe_id = e->shift_l;
3020 in_ch = e->shift_r;
3021 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3022 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3023 return -EINVAL;
3024 }
3025 if (in_ch >= ADM_MAX_CHANNELS) {
3026 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3027 return -EINVAL;
3028 }
3029
3030 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
3031 return 1;
3032}
3033
3034
3035static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
3036 struct snd_ctl_elem_info *uinfo)
3037{
3038 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3039 uinfo->count = ADM_MAX_CHANNELS;
3040 uinfo->value.integer.min = 0;
3041 uinfo->value.integer.max = WEIGHT_0_DB;
3042
3043 return 0;
3044}
3045
3046static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3047 struct snd_ctl_elem_value *ucontrol)
3048{
3049 u16 fe_id = 0, out_ch = 0;
3050 int i, weight;
3051
3052 fe_id = ((struct soc_multi_mixer_control *)
3053 kcontrol->private_value)->shift;
3054 out_ch = ((struct soc_multi_mixer_control *)
3055 kcontrol->private_value)->rshift;
3056 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3057 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3058 return -EINVAL;
3059 }
3060 if (out_ch >= ADM_MAX_CHANNELS) {
3061 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3062 return -EINVAL;
3063 }
3064
3065 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3066 __func__, fe_id,
3067 ucontrol->value.integer.value[0],
3068 ucontrol->value.integer.value[1],
3069 ucontrol->value.integer.value[2],
3070 ucontrol->value.integer.value[3],
3071 ucontrol->value.integer.value[4],
3072 ucontrol->value.integer.value[5],
3073 ucontrol->value.integer.value[6],
3074 ucontrol->value.integer.value[7]);
3075
3076 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3077 weight = ucontrol->value.integer.value[i];
3078 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3079 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3080 __func__, fe_id, out_ch, i,
3081 channel_mixer[fe_id].channel_weight[out_ch][i]);
3082 }
3083
3084 return 0;
3085}
3086
3087static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3088 struct snd_ctl_elem_value *ucontrol)
3089{
3090 u16 fe_id = 0, out_ch = 0;
3091 int i;
3092
3093 fe_id = ((struct soc_multi_mixer_control *)
3094 kcontrol->private_value)->shift;
3095 out_ch = ((struct soc_multi_mixer_control *)
3096 kcontrol->private_value)->rshift;
3097 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3098 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3099 return -EINVAL;
3100 }
3101 if (out_ch >= ADM_MAX_CHANNELS) {
3102 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3103 return -EINVAL;
3104 }
3105
3106 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3107 ucontrol->value.integer.value[i] =
3108 channel_mixer[fe_id].channel_weight[out_ch][i];
3109
3110 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3111 __func__, fe_id,
3112 ucontrol->value.integer.value[0],
3113 ucontrol->value.integer.value[1],
3114 ucontrol->value.integer.value[2],
3115 ucontrol->value.integer.value[3],
3116 ucontrol->value.integer.value[4],
3117 ucontrol->value.integer.value[5],
3118 ucontrol->value.integer.value[6],
3119 ucontrol->value.integer.value[7]);
3120
3121 return 0;
3122}
3123
3124static const struct snd_kcontrol_new channel_mixer_controls[] = {
3125 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3126 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3127 msm_pcm_get_channel_rule_index,
3128 msm_pcm_put_channel_rule_index),
3129 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3130 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3131 msm_pcm_get_channel_rule_index,
3132 msm_pcm_put_channel_rule_index),
3133 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3134 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3135 msm_pcm_get_channel_rule_index,
3136 msm_pcm_put_channel_rule_index),
3137 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3138 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3139 msm_pcm_get_channel_rule_index,
3140 msm_pcm_put_channel_rule_index),
3141 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3142 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3143 msm_pcm_get_channel_rule_index,
3144 msm_pcm_put_channel_rule_index),
3145 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3146 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3147 msm_pcm_get_channel_rule_index,
3148 msm_pcm_put_channel_rule_index),
3149
3150 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3151 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3152 msm_pcm_get_out_chs,
3153 msm_pcm_put_out_chs),
3154 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3155 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3156 msm_pcm_get_out_chs,
3157 msm_pcm_put_out_chs),
3158 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3159 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3160 msm_pcm_get_out_chs,
3161 msm_pcm_put_out_chs),
3162 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3163 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3164 msm_pcm_get_out_chs,
3165 msm_pcm_put_out_chs),
3166 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3167 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3168 msm_pcm_get_out_chs,
3169 msm_pcm_put_out_chs),
3170 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3171 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3172 msm_pcm_get_out_chs,
3173 msm_pcm_put_out_chs),
3174 {
3175 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3176 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3177 .name = "MultiMedia1 Channel Mixer",
3178 .info = msm_pcm_channel_mixer_info,
3179 .get = msm_pcm_channel_mixer_get,
3180 .put = msm_pcm_channel_mixer_put,
3181 .private_value = (unsigned long)&(mm1_channel_mux)
3182 },
3183 {
3184 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3185 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3186 .name = "MultiMedia2 Channel Mixer",
3187 .info = msm_pcm_channel_mixer_info,
3188 .get = msm_pcm_channel_mixer_get,
3189 .put = msm_pcm_channel_mixer_put,
3190 .private_value = (unsigned long)&(mm2_channel_mux)
3191 },
3192 {
3193 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3194 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3195 .name = "MultiMedia3 Channel Mixer",
3196 .info = msm_pcm_channel_mixer_info,
3197 .get = msm_pcm_channel_mixer_get,
3198 .put = msm_pcm_channel_mixer_put,
3199 .private_value = (unsigned long)&(mm3_channel_mux)
3200 },
3201 {
3202 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3203 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3204 .name = "MultiMedia4 Channel Mixer",
3205 .info = msm_pcm_channel_mixer_info,
3206 .get = msm_pcm_channel_mixer_get,
3207 .put = msm_pcm_channel_mixer_put,
3208 .private_value = (unsigned long)&(mm4_channel_mux)
3209 },
3210 {
3211 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3212 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3213 .name = "MultiMedia1 Output Channel1",
3214 .info = msm_pcm_channel_weight_info,
3215 .get = msm_pcm_channel_weight_get,
3216 .put = msm_pcm_channel_weight_put,
3217 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3218 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 0,}
3219 },
3220 {
3221 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3222 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3223 .name = "MultiMedia1 Output Channel2",
3224 .info = msm_pcm_channel_weight_info,
3225 .get = msm_pcm_channel_weight_get,
3226 .put = msm_pcm_channel_weight_put,
3227 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3228 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3229 },
3230 {
3231 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3232 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3233 .name = "MultiMedia1 Output Channel3",
3234 .info = msm_pcm_channel_weight_info,
3235 .get = msm_pcm_channel_weight_get,
3236 .put = msm_pcm_channel_weight_put,
3237 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3238 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3239 },
3240 {
3241 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3242 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3243 .name = "MultiMedia1 Output Channel4",
3244 .info = msm_pcm_channel_weight_info,
3245 .get = msm_pcm_channel_weight_get,
3246 .put = msm_pcm_channel_weight_put,
3247 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3248 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3249 },
3250 {
3251 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3252 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3253 .name = "MultiMedia1 Output Channel5",
3254 .info = msm_pcm_channel_weight_info,
3255 .get = msm_pcm_channel_weight_get,
3256 .put = msm_pcm_channel_weight_put,
3257 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3258 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3259 },
3260 {
3261 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3262 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3263 .name = "MultiMedia1 Output Channel6",
3264 .info = msm_pcm_channel_weight_info,
3265 .get = msm_pcm_channel_weight_get,
3266 .put = msm_pcm_channel_weight_put,
3267 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3268 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3269 },
3270 {
3271 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3272 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3273 .name = "MultiMedia1 Output Channel7",
3274 .info = msm_pcm_channel_weight_info,
3275 .get = msm_pcm_channel_weight_get,
3276 .put = msm_pcm_channel_weight_put,
3277 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3278 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3279 },
3280 {
3281 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3282 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3283 .name = "MultiMedia1 Output Channel8",
3284 .info = msm_pcm_channel_weight_info,
3285 .get = msm_pcm_channel_weight_get,
3286 .put = msm_pcm_channel_weight_put,
3287 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3288 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3289 },
3290 {
3291 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3292 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3293 .name = "MultiMedia2 Output Channel1",
3294 .info = msm_pcm_channel_weight_info,
3295 .get = msm_pcm_channel_weight_get,
3296 .put = msm_pcm_channel_weight_put,
3297 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3298 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3299 },
3300 {
3301 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3302 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3303 .name = "MultiMedia2 Output Channel2",
3304 .info = msm_pcm_channel_weight_info,
3305 .get = msm_pcm_channel_weight_get,
3306 .put = msm_pcm_channel_weight_put,
3307 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3308 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3309 },
3310 {
3311 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3312 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3313 .name = "MultiMedia2 Output Channel3",
3314 .info = msm_pcm_channel_weight_info,
3315 .get = msm_pcm_channel_weight_get,
3316 .put = msm_pcm_channel_weight_put,
3317 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3318 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3319 },
3320 {
3321 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3322 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3323 .name = "MultiMedia3 Output Channel1",
3324 .info = msm_pcm_channel_weight_info,
3325 .get = msm_pcm_channel_weight_get,
3326 .put = msm_pcm_channel_weight_put,
3327 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3328 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3329 },
3330 {
3331 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3332 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3333 .name = "MultiMedia3 Output Channel2",
3334 .info = msm_pcm_channel_weight_info,
3335 .get = msm_pcm_channel_weight_get,
3336 .put = msm_pcm_channel_weight_put,
3337 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3338 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3339 },
3340 {
3341 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3342 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3343 .name = "MultiMedia1 Channel1",
3344 .info = msm_pcm_channel_input_be_info,
3345 .get = msm_pcm_channel_input_be_get,
3346 .put = msm_pcm_channel_input_be_put,
3347 .private_value = (unsigned long)&(mm1_ch1_enum)
3348 },
3349 {
3350 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3351 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3352 .name = "MultiMedia1 Channel2",
3353 .info = msm_pcm_channel_input_be_info,
3354 .get = msm_pcm_channel_input_be_get,
3355 .put = msm_pcm_channel_input_be_put,
3356 .private_value = (unsigned long)&(mm1_ch2_enum)
3357 },
3358 {
3359 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3360 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3361 .name = "MultiMedia1 Channel3",
3362 .info = msm_pcm_channel_input_be_info,
3363 .get = msm_pcm_channel_input_be_get,
3364 .put = msm_pcm_channel_input_be_put,
3365 .private_value = (unsigned long)&(mm1_ch3_enum)
3366 },
3367 {
3368 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3369 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3370 .name = "MultiMedia1 Channel4",
3371 .info = msm_pcm_channel_input_be_info,
3372 .get = msm_pcm_channel_input_be_get,
3373 .put = msm_pcm_channel_input_be_put,
3374 .private_value = (unsigned long)&(mm1_ch4_enum)
3375 },
3376 {
3377 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3378 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3379 .name = "MultiMedia1 Channel5",
3380 .info = msm_pcm_channel_input_be_info,
3381 .get = msm_pcm_channel_input_be_get,
3382 .put = msm_pcm_channel_input_be_put,
3383 .private_value = (unsigned long)&(mm1_ch5_enum)
3384 },
3385 {
3386 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3387 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3388 .name = "MultiMedia1 Channel6",
3389 .info = msm_pcm_channel_input_be_info,
3390 .get = msm_pcm_channel_input_be_get,
3391 .put = msm_pcm_channel_input_be_put,
3392 .private_value = (unsigned long)&(mm1_ch6_enum)
3393 },
3394 {
3395 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3396 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3397 .name = "MultiMedia1 Channel7",
3398 .info = msm_pcm_channel_input_be_info,
3399 .get = msm_pcm_channel_input_be_get,
3400 .put = msm_pcm_channel_input_be_put,
3401 .private_value = (unsigned long)&(mm1_ch7_enum)
3402 },
3403 {
3404 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3405 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3406 .name = "MultiMedia1 Channel8",
3407 .info = msm_pcm_channel_input_be_info,
3408 .get = msm_pcm_channel_input_be_get,
3409 .put = msm_pcm_channel_input_be_put,
3410 .private_value = (unsigned long)&(mm1_ch8_enum)
3411 },
3412};
3413static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3414 struct snd_ctl_elem_value *ucontrol)
3415{
3416 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3417 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3418 ucontrol->value.integer.value[0]);
3419 return 0;
3420}
3421
3422static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3423 struct snd_ctl_elem_value *ucontrol)
3424{
3425 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3426 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3427 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3428 return 0;
3429}
3430
3431static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3432 "Four", "Five", "Six", "Seven", "Eight"};
3433
3434static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3435 struct snd_ctl_elem_value *ucontrol)
3436{
3437 switch (msm_ec_ref_bit_format) {
3438 case SNDRV_PCM_FORMAT_S24_LE:
3439 ucontrol->value.integer.value[0] = 2;
3440 break;
3441 case SNDRV_PCM_FORMAT_S16_LE:
3442 ucontrol->value.integer.value[0] = 1;
3443 break;
3444 default:
3445 ucontrol->value.integer.value[0] = 0;
3446 break;
3447 }
3448 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3449 __func__, ucontrol->value.integer.value[0]);
3450 return 0;
3451}
3452
3453static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3454 struct snd_ctl_elem_value *ucontrol)
3455{
3456 u16 bit_width = 0;
3457
3458 switch (ucontrol->value.integer.value[0]) {
3459 case 2:
3460 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3461 break;
3462 case 1:
3463 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3464 break;
3465 default:
3466 msm_ec_ref_bit_format = 0;
3467 break;
3468 }
3469
3470 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3471 bit_width = 16;
3472 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3473 bit_width = 24;
3474
3475 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3476 __func__, msm_ec_ref_bit_format);
3477 adm_ec_ref_rx_bit_width(bit_width);
3478 return 0;
3479}
3480
3481static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3482
3483static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3484 struct snd_ctl_elem_value *ucontrol)
3485{
3486 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3487 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3488 __func__, ucontrol->value.integer.value[0]);
3489 return 0;
3490}
3491
3492static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3493 struct snd_ctl_elem_value *ucontrol)
3494{
3495 switch (ucontrol->value.integer.value[0]) {
3496 case 0:
3497 msm_ec_ref_sampling_rate = 0;
3498 break;
3499 case 1:
3500 msm_ec_ref_sampling_rate = 8000;
3501 break;
3502 case 2:
3503 msm_ec_ref_sampling_rate = 16000;
3504 break;
3505 case 3:
3506 msm_ec_ref_sampling_rate = 32000;
3507 break;
3508 case 4:
3509 msm_ec_ref_sampling_rate = 44100;
3510 break;
3511 case 5:
3512 msm_ec_ref_sampling_rate = 48000;
3513 break;
3514 case 6:
3515 msm_ec_ref_sampling_rate = 96000;
3516 break;
3517 case 7:
3518 msm_ec_ref_sampling_rate = 192000;
3519 break;
3520 case 8:
3521 msm_ec_ref_sampling_rate = 384000;
3522 break;
3523 default:
3524 msm_ec_ref_sampling_rate = 48000;
3525 break;
3526 }
3527 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3528 __func__, msm_ec_ref_sampling_rate);
3529 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3530 return 0;
3531}
3532
3533static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3534 "32000", "44100", "48000", "96000", "192000", "384000"};
3535
3536static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3537 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3538 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3539 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3540};
3541
3542static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3543 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3544 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3545 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3546 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3547 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3548 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3549};
3550
3551static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3552 struct snd_ctl_elem_value *ucontrol)
3553{
3554 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3555 mutex_lock(&routing_lock);
3556 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3557 mutex_unlock(&routing_lock);
3558 return 0;
3559}
3560
3561static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3562 struct snd_ctl_elem_value *ucontrol)
3563{
3564 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303565 struct snd_soc_dapm_widget *widget =
3566 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303567 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3568 struct snd_soc_dapm_update *update = NULL;
3569
3570
3571 mutex_lock(&routing_lock);
3572 switch (ucontrol->value.integer.value[0]) {
3573 case 0:
3574 msm_route_ec_ref_rx = 0;
3575 ec_ref_port_id = AFE_PORT_INVALID;
3576 break;
3577 case 1:
3578 msm_route_ec_ref_rx = 1;
3579 ec_ref_port_id = SLIMBUS_0_RX;
3580 break;
3581 case 2:
3582 msm_route_ec_ref_rx = 2;
3583 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3584 break;
3585 case 3:
3586 msm_route_ec_ref_rx = 3;
3587 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3588 break;
3589 case 4:
3590 msm_route_ec_ref_rx = 4;
3591 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3592 break;
3593 case 5:
3594 msm_route_ec_ref_rx = 5;
3595 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3596 break;
3597 case 6:
3598 msm_route_ec_ref_rx = 6;
3599 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3600 break;
3601 case 7:
3602 msm_route_ec_ref_rx = 7;
3603 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3604 break;
3605 case 9:
3606 msm_route_ec_ref_rx = 9;
3607 ec_ref_port_id = SLIMBUS_5_RX;
3608 break;
3609 case 10:
3610 msm_route_ec_ref_rx = 10;
3611 ec_ref_port_id = SLIMBUS_1_TX;
3612 break;
3613 case 11:
3614 msm_route_ec_ref_rx = 11;
3615 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3616 break;
3617 case 12:
3618 msm_route_ec_ref_rx = 12;
3619 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3620 break;
3621 case 13:
3622 msm_route_ec_ref_rx = 13;
3623 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3624 break;
3625 case 14:
3626 msm_route_ec_ref_rx = 14;
3627 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3628 break;
3629 case 15:
3630 msm_route_ec_ref_rx = 15;
3631 ec_ref_port_id = SLIMBUS_6_RX;
3632 break;
3633 case 16:
3634 msm_route_ec_ref_rx = 16;
3635 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3636 break;
3637 case 17:
3638 msm_route_ec_ref_rx = 17;
3639 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3640 break;
3641 case 18:
3642 msm_route_ec_ref_rx = 18;
3643 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3644 break;
3645 case 19:
3646 msm_route_ec_ref_rx = 19;
3647 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3648 break;
3649 case 20:
3650 msm_route_ec_ref_rx = 20;
3651 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3652 break;
3653 case 21:
3654 msm_route_ec_ref_rx = 21;
3655 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3656 break;
3657 case 22:
3658 msm_route_ec_ref_rx = 22;
3659 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3660 break;
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003661 case 23:
3662 msm_route_ec_ref_rx = 23;
3663 ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
3664 break;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303665 default:
3666 msm_route_ec_ref_rx = 0; /* NONE */
3667 pr_err("%s EC ref rx %ld not valid\n",
3668 __func__, ucontrol->value.integer.value[0]);
3669 ec_ref_port_id = AFE_PORT_INVALID;
3670 break;
3671 }
3672 adm_ec_ref_rx_id(ec_ref_port_id);
3673 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3674 __func__, msm_route_ec_ref_rx);
3675 mutex_unlock(&routing_lock);
3676 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3677 msm_route_ec_ref_rx, e, update);
3678 return 0;
3679}
3680
3681static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3682 "PRI_MI2S_TX", "SEC_MI2S_TX",
3683 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3684 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3685 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3686 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003687 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT"};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303688
3689static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3690 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3691};
3692
3693static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3694 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3695 msm_route_ec_ref_rx_enum[0],
3696 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3697
3698static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3699 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3700 msm_route_ec_ref_rx_enum[0],
3701 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3702
3703static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3704 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3705 msm_route_ec_ref_rx_enum[0],
3706 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3707
3708static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3709 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3710 msm_route_ec_ref_rx_enum[0],
3711 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3712
3713static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3714 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3715 msm_route_ec_ref_rx_enum[0],
3716 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3717
3718static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3719 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3720 msm_route_ec_ref_rx_enum[0],
3721 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3722
3723static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3724 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3725 msm_route_ec_ref_rx_enum[0],
3726 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3727
3728static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3729 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3730 msm_route_ec_ref_rx_enum[0],
3731 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3732
Asish Bhattacharya34504582017-08-08 12:55:01 +05303733static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3734 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3735 msm_route_ec_ref_rx_enum[0],
3736 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3737
Laxminath Kasam38070be2017-08-17 18:21:59 +05303738static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3739 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3740 msm_route_ec_ref_rx_enum[0],
3741 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3742
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303743static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3744 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3745 msm_route_ec_ref_rx_enum[0],
3746 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3747
3748static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3749 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3750 msm_route_ec_ref_rx_enum[0],
3751 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3752
3753static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3754 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3755 msm_route_ec_ref_rx_enum[0],
3756 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3757
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303758static const struct snd_kcontrol_new ext_ec_ref_mux_ul28 =
3759 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL28 MUX Mux",
3760 msm_route_ec_ref_rx_enum[0],
3761 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3762
3763static const struct snd_kcontrol_new ext_ec_ref_mux_ul29 =
3764 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL29 MUX Mux",
3765 msm_route_ec_ref_rx_enum[0],
3766 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3767
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303768static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3769 struct snd_ctl_elem_value *ucontrol)
3770{
3771 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3772
3773 mutex_lock(&routing_lock);
3774 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3775 mutex_unlock(&routing_lock);
3776 return 0;
3777}
3778
3779static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3780 struct snd_ctl_elem_value *ucontrol)
3781{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303782 struct snd_soc_dapm_widget *widget =
3783 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303784 int mux = ucontrol->value.enumerated.item[0];
3785 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3786 int ret = 1;
3787 bool state = true;
3788 uint16_t ext_ec_ref_port_id;
3789 struct snd_soc_dapm_update *update = NULL;
3790
3791 if (mux >= e->items) {
3792 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3793 return -EINVAL;
3794 }
3795
3796 mutex_lock(&routing_lock);
3797 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3798
3799 switch (msm_route_ext_ec_ref) {
3800 case EXT_EC_REF_PRI_MI2S_TX:
3801 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3802 break;
3803 case EXT_EC_REF_SEC_MI2S_TX:
3804 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3805 break;
3806 case EXT_EC_REF_TERT_MI2S_TX:
3807 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3808 break;
3809 case EXT_EC_REF_QUAT_MI2S_TX:
3810 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3811 break;
3812 case EXT_EC_REF_QUIN_MI2S_TX:
3813 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3814 break;
3815 case EXT_EC_REF_SLIM_1_TX:
3816 ext_ec_ref_port_id = SLIMBUS_1_TX;
3817 break;
3818 case EXT_EC_REF_NONE:
3819 default:
3820 ext_ec_ref_port_id = AFE_PORT_INVALID;
3821 state = false;
3822 break;
3823 }
3824
3825 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3826 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3827
3828 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3829 mutex_unlock(&routing_lock);
3830 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3831 update);
3832 } else {
3833 ret = -EINVAL;
3834 mutex_unlock(&routing_lock);
3835 }
3836 return ret;
3837}
3838
3839static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3840 "SEC_MI2S_TX", "TERT_MI2S_TX",
3841 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3842 "SLIM_1_TX"};
3843
3844static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3845 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3846};
3847
3848static const struct snd_kcontrol_new voc_ext_ec_mux =
3849 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3850 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3851
3852
3853static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3854 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3855 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3856 msm_routing_put_audio_mixer),
3857 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3858 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3859 msm_routing_put_audio_mixer),
3860 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3861 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3862 msm_routing_put_audio_mixer),
3863 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3864 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3865 msm_routing_put_audio_mixer),
3866 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3867 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3868 msm_routing_put_audio_mixer),
3869 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3870 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3871 msm_routing_put_audio_mixer),
3872 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3873 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3874 msm_routing_put_audio_mixer),
3875 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3876 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3877 msm_routing_put_audio_mixer),
3878 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3879 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3880 msm_routing_put_audio_mixer),
3881 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3882 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3883 msm_routing_put_audio_mixer),
3884 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3885 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3886 msm_routing_put_audio_mixer),
3887 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
3888 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3889 msm_routing_put_audio_mixer),
3890 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
3891 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3892 msm_routing_put_audio_mixer),
3893 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
3894 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3895 msm_routing_put_audio_mixer),
3896 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
3897 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3898 msm_routing_put_audio_mixer),
3899 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
3900 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3901 msm_routing_put_audio_mixer),
3902 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
3903 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3904 msm_routing_put_audio_mixer),
3905 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
3906 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3907 msm_routing_put_audio_mixer),
3908 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
3909 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3910 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303911 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_I2S_RX,
3912 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
3913 msm_routing_put_audio_mixer),
3914 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_I2S_RX,
3915 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
3916 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303917};
3918
3919static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
3920 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
3921 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3922 msm_routing_put_audio_mixer),
3923 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
3924 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3925 msm_routing_put_audio_mixer),
3926 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
3927 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3928 msm_routing_put_audio_mixer),
3929 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
3930 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3931 msm_routing_put_audio_mixer),
3932 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
3933 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3934 msm_routing_put_audio_mixer),
3935 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
3936 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3937 msm_routing_put_audio_mixer),
3938 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
3939 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3940 msm_routing_put_audio_mixer),
3941 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
3942 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3943 msm_routing_put_audio_mixer),
3944 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
3945 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3946 msm_routing_put_audio_mixer),
3947 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
3948 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3949 msm_routing_put_audio_mixer),
3950 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
3951 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3952 msm_routing_put_audio_mixer),
3953 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
3954 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3955 msm_routing_put_audio_mixer),
3956 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
3957 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3958 msm_routing_put_audio_mixer),
3959 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
3960 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3961 msm_routing_put_audio_mixer),
3962 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
3963 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3964 msm_routing_put_audio_mixer),
3965 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
3966 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3967 msm_routing_put_audio_mixer),
3968 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
3969 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3970 msm_routing_put_audio_mixer),
3971 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
3972 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3973 msm_routing_put_audio_mixer),
3974 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
3975 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3976 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303977 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_I2S_RX,
3978 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
3979 msm_routing_put_audio_mixer),
3980 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_I2S_RX,
3981 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
3982 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303983};
3984
3985static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
3986 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
3987 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3988 msm_routing_put_audio_mixer),
3989 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
3990 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3991 msm_routing_put_audio_mixer),
3992 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
3993 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3994 msm_routing_put_audio_mixer),
3995 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
3996 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3997 msm_routing_put_audio_mixer),
3998 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
3999 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4000 msm_routing_put_audio_mixer),
4001 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
4002 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4003 msm_routing_put_audio_mixer),
4004 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
4005 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4006 msm_routing_put_audio_mixer),
4007 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
4008 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4009 msm_routing_put_audio_mixer),
4010 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
4011 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4012 msm_routing_put_audio_mixer),
4013 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
4014 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4015 msm_routing_put_audio_mixer),
4016 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
4017 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4018 msm_routing_put_audio_mixer),
4019 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
4020 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4021 msm_routing_put_audio_mixer),
4022 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
4023 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4024 msm_routing_put_audio_mixer),
4025 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
4026 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4027 msm_routing_put_audio_mixer),
4028 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
4029 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4030 msm_routing_put_audio_mixer),
4031 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
4032 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4033 msm_routing_put_audio_mixer),
4034 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
4035 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4036 msm_routing_put_audio_mixer),
4037 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
4038 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4039 msm_routing_put_audio_mixer),
4040 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
4041 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4042 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304043 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SPDIF_RX,
4044 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4045 msm_routing_put_audio_mixer),
4046 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SPDIF_RX,
4047 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4048 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304049};
4050
4051static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
4052 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4053 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4054 msm_routing_put_audio_mixer),
4055 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4056 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4057 msm_routing_put_audio_mixer),
4058 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4059 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4060 msm_routing_put_audio_mixer),
4061 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4062 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4063 msm_routing_put_audio_mixer),
4064 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4065 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4066 msm_routing_put_audio_mixer),
4067 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4068 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4069 msm_routing_put_audio_mixer),
4070 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4071 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4072 msm_routing_put_audio_mixer),
4073 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4074 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4075 msm_routing_put_audio_mixer),
4076 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4077 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4078 msm_routing_put_audio_mixer),
4079 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4080 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4081 msm_routing_put_audio_mixer),
4082 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4083 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4084 msm_routing_put_audio_mixer),
4085 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4086 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4087 msm_routing_put_audio_mixer),
4088 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4089 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4090 msm_routing_put_audio_mixer),
4091 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4092 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4093 msm_routing_put_audio_mixer),
4094 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4095 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4096 msm_routing_put_audio_mixer),
4097 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4098 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4099 msm_routing_put_audio_mixer),
4100};
4101
4102static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4103 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4104 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4105 msm_routing_put_audio_mixer),
4106 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4107 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4108 msm_routing_put_audio_mixer),
4109 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4110 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4111 msm_routing_put_audio_mixer),
4112 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4113 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4114 msm_routing_put_audio_mixer),
4115 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4116 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4117 msm_routing_put_audio_mixer),
4118 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4119 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4120 msm_routing_put_audio_mixer),
4121 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4122 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4123 msm_routing_put_audio_mixer),
4124 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4125 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4126 msm_routing_put_audio_mixer),
4127 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4128 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4129 msm_routing_put_audio_mixer),
4130 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4131 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4132 msm_routing_put_audio_mixer),
4133 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4134 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4135 msm_routing_put_audio_mixer),
4136 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4137 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4138 msm_routing_put_audio_mixer),
4139 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4140 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4141 msm_routing_put_audio_mixer),
4142 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4143 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4144 msm_routing_put_audio_mixer),
4145 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4146 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4147 msm_routing_put_audio_mixer),
4148 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4149 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4150 msm_routing_put_audio_mixer),
4151 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4152 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4153 msm_routing_put_audio_mixer),
4154 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4155 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4156 msm_routing_put_audio_mixer),
4157 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4158 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4159 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304160 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4161 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4162 msm_routing_put_audio_mixer),
4163 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4164 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4165 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304166};
4167
4168static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4169 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4170 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4171 msm_routing_put_audio_mixer),
4172 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4173 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4174 msm_routing_put_audio_mixer),
4175 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4176 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4177 msm_routing_put_audio_mixer),
4178 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4179 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4180 msm_routing_put_audio_mixer),
4181 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4182 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4183 msm_routing_put_audio_mixer),
4184 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4185 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4186 msm_routing_put_audio_mixer),
4187 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4188 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4189 msm_routing_put_audio_mixer),
4190 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4191 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4192 msm_routing_put_audio_mixer),
4193 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4194 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4195 msm_routing_put_audio_mixer),
4196 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4197 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4198 msm_routing_put_audio_mixer),
4199 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4200 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4201 msm_routing_put_audio_mixer),
4202 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4203 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4204 msm_routing_put_audio_mixer),
4205 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4206 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4207 msm_routing_put_audio_mixer),
4208 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4209 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4210 msm_routing_put_audio_mixer),
4211 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4212 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4213 msm_routing_put_audio_mixer),
4214 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4215 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4216 msm_routing_put_audio_mixer),
4217 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4218 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4219 msm_routing_put_audio_mixer),
4220 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4221 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4222 msm_routing_put_audio_mixer),
4223 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4224 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4225 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304226 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4227 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4228 msm_routing_put_audio_mixer),
4229 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4230 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4231 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304232};
4233
4234static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4235 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4236 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4237 msm_routing_put_audio_mixer),
4238 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4239 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4240 msm_routing_put_audio_mixer),
4241 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4242 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4243 msm_routing_put_audio_mixer),
4244 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4245 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4246 msm_routing_put_audio_mixer),
4247 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4248 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4249 msm_routing_put_audio_mixer),
4250 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4251 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4252 msm_routing_put_audio_mixer),
4253 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4254 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4255 msm_routing_put_audio_mixer),
4256 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4257 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4258 msm_routing_put_audio_mixer),
4259 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4260 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4261 msm_routing_put_audio_mixer),
4262 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4263 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4264 msm_routing_put_audio_mixer),
4265 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4266 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4267 msm_routing_put_audio_mixer),
4268 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4269 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4270 msm_routing_put_audio_mixer),
4271 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4272 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4273 msm_routing_put_audio_mixer),
4274 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4275 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4276 msm_routing_put_audio_mixer),
4277 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4278 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4279 msm_routing_put_audio_mixer),
4280 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4281 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4282 msm_routing_put_audio_mixer),
4283 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4284 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4285 msm_routing_put_audio_mixer),
4286 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4287 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4288 msm_routing_put_audio_mixer),
4289 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4290 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4291 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304292 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_MI2S_RX,
4293 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4294 msm_routing_put_audio_mixer),
4295 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_MI2S_RX,
4296 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4297 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304298};
4299
4300static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4301 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4302 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4303 msm_routing_put_audio_mixer),
4304 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4305 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4306 msm_routing_put_audio_mixer),
4307 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4308 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4309 msm_routing_put_audio_mixer),
4310 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4311 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4312 msm_routing_put_audio_mixer),
4313 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4314 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4315 msm_routing_put_audio_mixer),
4316 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4317 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4318 msm_routing_put_audio_mixer),
4319 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4320 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4321 msm_routing_put_audio_mixer),
4322 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4323 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4324 msm_routing_put_audio_mixer),
4325 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4326 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4327 msm_routing_put_audio_mixer),
4328 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4329 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4330 msm_routing_put_audio_mixer),
4331 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4332 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4333 msm_routing_put_audio_mixer),
4334 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4335 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4336 msm_routing_put_audio_mixer),
4337 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4338 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4339 msm_routing_put_audio_mixer),
4340 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4341 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4342 msm_routing_put_audio_mixer),
4343 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4344 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4345 msm_routing_put_audio_mixer),
4346 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4347 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4348 msm_routing_put_audio_mixer),
4349 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4350 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4351 msm_routing_put_audio_mixer),
4352 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4353 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4354 msm_routing_put_audio_mixer),
4355 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4356 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4357 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304358 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4359 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4360 msm_routing_put_audio_mixer),
4361 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4362 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4363 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304364};
4365
4366static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4367 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4368 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4369 msm_routing_put_audio_mixer),
4370 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4371 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4372 msm_routing_put_audio_mixer),
4373 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4374 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4375 msm_routing_put_audio_mixer),
4376 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4377 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4378 msm_routing_put_audio_mixer),
4379 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4380 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4381 msm_routing_put_audio_mixer),
4382 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4383 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4384 msm_routing_put_audio_mixer),
4385 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4386 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4387 msm_routing_put_audio_mixer),
4388 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4389 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4390 msm_routing_put_audio_mixer),
4391 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4392 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4393 msm_routing_put_audio_mixer),
4394 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4395 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4396 msm_routing_put_audio_mixer),
4397 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4398 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4399 msm_routing_put_audio_mixer),
4400 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4401 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4402 msm_routing_put_audio_mixer),
4403 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4404 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4405 msm_routing_put_audio_mixer),
4406 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4407 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4408 msm_routing_put_audio_mixer),
4409 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4410 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4411 msm_routing_put_audio_mixer),
4412 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4413 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4414 msm_routing_put_audio_mixer),
4415 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4416 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4417 msm_routing_put_audio_mixer),
4418 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4419 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4420 msm_routing_put_audio_mixer),
4421 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4422 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4423 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304424 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4425 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4426 msm_routing_put_audio_mixer),
4427 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4428 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4429 msm_routing_put_audio_mixer),
4430
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304431};
4432
4433static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4434 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4435 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4436 msm_routing_put_audio_mixer),
4437 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4438 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4439 msm_routing_put_audio_mixer),
4440 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4441 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4442 msm_routing_put_audio_mixer),
4443 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4444 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4445 msm_routing_put_audio_mixer),
4446 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4447 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4448 msm_routing_put_audio_mixer),
4449 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4450 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4451 msm_routing_put_audio_mixer),
4452 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4453 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4454 msm_routing_put_audio_mixer),
4455 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4456 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4457 msm_routing_put_audio_mixer),
4458 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4459 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4460 msm_routing_put_audio_mixer),
4461 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4462 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4463 msm_routing_put_audio_mixer),
4464 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4465 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4466 msm_routing_put_audio_mixer),
4467 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4468 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4469 msm_routing_put_audio_mixer),
4470 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4471 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4472 msm_routing_put_audio_mixer),
4473 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4474 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4475 msm_routing_put_audio_mixer),
4476 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4477 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4478 msm_routing_put_audio_mixer),
4479 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4480 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4481 msm_routing_put_audio_mixer),
4482 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4483 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4484 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304485 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4486 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4487 msm_routing_put_audio_mixer),
4488 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4489 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4490 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304491};
4492
4493static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4494 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4495 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4496 msm_routing_put_audio_mixer),
4497};
4498
4499static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4500 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4501 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4502 msm_routing_put_audio_mixer),
4503 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4504 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4505 msm_routing_put_audio_mixer),
4506 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4507 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4508 msm_routing_put_audio_mixer),
4509 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4510 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4511 msm_routing_put_audio_mixer),
4512 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4513 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4514 msm_routing_put_audio_mixer),
4515 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4516 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4517 msm_routing_put_audio_mixer),
4518 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4519 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4520 msm_routing_put_audio_mixer),
4521 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4522 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4523 msm_routing_put_audio_mixer),
4524 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4525 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4526 msm_routing_put_audio_mixer),
4527 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4528 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4529 msm_routing_put_audio_mixer),
4530 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4531 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4532 msm_routing_put_audio_mixer),
4533 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4534 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4535 msm_routing_put_audio_mixer),
4536 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4537 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4538 msm_routing_put_audio_mixer),
4539 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4540 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4541 msm_routing_put_audio_mixer),
4542 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4543 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4544 msm_routing_put_audio_mixer),
4545 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4546 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4547 msm_routing_put_audio_mixer),
4548 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4549 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4550 msm_routing_put_audio_mixer),
4551 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4552 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4553 msm_routing_put_audio_mixer),
4554 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4555 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4556 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304557 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4558 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4559 msm_routing_put_audio_mixer),
4560 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4561 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4562 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304563};
4564
4565static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4566 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4567 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4568 msm_routing_put_audio_mixer),
4569 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4570 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4571 msm_routing_put_audio_mixer),
4572 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4573 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4574 msm_routing_put_audio_mixer),
4575 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4576 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4577 msm_routing_put_audio_mixer),
4578 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4579 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4580 msm_routing_put_audio_mixer),
4581 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4582 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4583 msm_routing_put_audio_mixer),
4584 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4585 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4586 msm_routing_put_audio_mixer),
4587 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4588 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4589 msm_routing_put_audio_mixer),
4590 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4591 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4592 msm_routing_put_audio_mixer),
4593 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4594 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4595 msm_routing_put_audio_mixer),
4596 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4597 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4598 msm_routing_put_audio_mixer),
4599 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4600 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4601 msm_routing_put_audio_mixer),
4602 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4603 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4604 msm_routing_put_audio_mixer),
4605 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4606 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4607 msm_routing_put_audio_mixer),
4608 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4609 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4610 msm_routing_put_audio_mixer),
4611 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4612 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4613 msm_routing_put_audio_mixer),
4614 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4615 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4616 msm_routing_put_audio_mixer),
4617 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4618 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4619 msm_routing_put_audio_mixer),
4620 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4621 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4622 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304623 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_MI2S_RX,
4624 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4625 msm_routing_put_audio_mixer),
4626 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_MI2S_RX,
4627 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4628 msm_routing_put_audio_mixer),
4629
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304630};
4631
4632static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4633 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4634 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4635 msm_routing_put_audio_mixer),
4636 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4637 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4638 msm_routing_put_audio_mixer),
4639 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4640 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4641 msm_routing_put_audio_mixer),
4642 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4643 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4644 msm_routing_put_audio_mixer),
4645 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4646 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4647 msm_routing_put_audio_mixer),
4648 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4649 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4650 msm_routing_put_audio_mixer),
4651 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4652 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4653 msm_routing_put_audio_mixer),
4654 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4655 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4656 msm_routing_put_audio_mixer),
4657 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4658 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4659 msm_routing_put_audio_mixer),
4660 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4661 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4662 msm_routing_put_audio_mixer),
4663 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4664 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4665 msm_routing_put_audio_mixer),
4666 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4667 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4668 msm_routing_put_audio_mixer),
4669 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4670 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4671 msm_routing_put_audio_mixer),
4672 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4673 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4674 msm_routing_put_audio_mixer),
4675 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4676 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4677 msm_routing_put_audio_mixer),
4678 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4679 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4680 msm_routing_put_audio_mixer),
4681};
4682
4683static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4684 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4685 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4686 msm_routing_put_audio_mixer),
4687 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4688 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4689 msm_routing_put_audio_mixer),
4690 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4691 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4692 msm_routing_put_audio_mixer),
4693 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4694 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4695 msm_routing_put_audio_mixer),
4696 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4697 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4698 msm_routing_put_audio_mixer),
4699 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4700 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4701 msm_routing_put_audio_mixer),
4702 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4703 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4704 msm_routing_put_audio_mixer),
4705 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4706 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4707 msm_routing_put_audio_mixer),
4708 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4709 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4710 msm_routing_put_audio_mixer),
4711 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4712 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4713 msm_routing_put_audio_mixer),
4714 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4715 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4716 msm_routing_put_audio_mixer),
4717 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4718 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4719 msm_routing_put_audio_mixer),
4720 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4721 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4722 msm_routing_put_audio_mixer),
4723 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4724 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4725 msm_routing_put_audio_mixer),
4726 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4727 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4728 msm_routing_put_audio_mixer),
4729 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4730 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4731 msm_routing_put_audio_mixer),
4732};
4733
4734static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4735 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4736 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4737 msm_routing_put_audio_mixer),
4738 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4739 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4740 msm_routing_put_audio_mixer),
4741 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4742 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4743 msm_routing_put_audio_mixer),
4744 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4745 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4746 msm_routing_put_audio_mixer),
4747 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4748 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4749 msm_routing_put_audio_mixer),
4750 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4751 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4752 msm_routing_put_audio_mixer),
4753 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4754 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4755 msm_routing_put_audio_mixer),
4756 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4757 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4758 msm_routing_put_audio_mixer),
4759 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4760 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4761 msm_routing_put_audio_mixer),
4762 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4763 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4764 msm_routing_put_audio_mixer),
4765 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4766 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4767 msm_routing_put_audio_mixer),
4768 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4769 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4770 msm_routing_put_audio_mixer),
4771 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4772 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4773 msm_routing_put_audio_mixer),
4774 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4775 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4776 msm_routing_put_audio_mixer),
4777 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4778 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4779 msm_routing_put_audio_mixer),
4780 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4781 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4782 msm_routing_put_audio_mixer),
4783 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4784 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4785 msm_routing_put_audio_mixer),
4786 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4787 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4788 msm_routing_put_audio_mixer),
4789 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4790 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4791 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304792 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_HDMI_RX,
4793 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4794 msm_routing_put_audio_mixer),
4795 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_HDMI_RX,
4796 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4797 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304798};
4799
4800static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4801 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4802 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4803 msm_routing_put_audio_mixer),
4804 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4805 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4806 msm_routing_put_audio_mixer),
4807 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4808 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4809 msm_routing_put_audio_mixer),
4810 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4811 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4812 msm_routing_put_audio_mixer),
4813 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4814 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4815 msm_routing_put_audio_mixer),
4816 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4817 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4818 msm_routing_put_audio_mixer),
4819 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4820 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4821 msm_routing_put_audio_mixer),
4822 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4823 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4824 msm_routing_put_audio_mixer),
4825 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4826 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4827 msm_routing_put_audio_mixer),
4828 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4829 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4830 msm_routing_put_audio_mixer),
4831 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4832 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4833 msm_routing_put_audio_mixer),
4834 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4835 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4836 msm_routing_put_audio_mixer),
4837 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4838 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4839 msm_routing_put_audio_mixer),
4840 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4841 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4842 msm_routing_put_audio_mixer),
4843 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4844 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4845 msm_routing_put_audio_mixer),
4846 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4847 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4848 msm_routing_put_audio_mixer),
4849};
4850
4851 /* incall music delivery mixer */
4852static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4853 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4854 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4855 msm_routing_put_audio_mixer),
4856 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4857 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4858 msm_routing_put_audio_mixer),
4859 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4860 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4861 msm_routing_put_audio_mixer),
4862 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4863 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4864 msm_routing_put_audio_mixer),
4865};
4866
4867static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4868 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4869 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4870 msm_routing_put_audio_mixer),
4871 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4872 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4873 msm_routing_put_audio_mixer),
4874 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4875 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4876 msm_routing_put_audio_mixer),
4877 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4878 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4879 msm_routing_put_audio_mixer),
4880};
4881
4882static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4883 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4884 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4885 msm_routing_put_audio_mixer),
4886 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4887 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4888 msm_routing_put_audio_mixer),
4889 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4890 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4891 msm_routing_put_audio_mixer),
4892 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4893 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4894 msm_routing_put_audio_mixer),
4895};
4896
4897static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
4898 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4899 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4900 msm_routing_put_audio_mixer),
4901 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4902 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4903 msm_routing_put_audio_mixer),
4904 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4905 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4906 msm_routing_put_audio_mixer),
4907 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4908 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4909 msm_routing_put_audio_mixer),
4910 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4911 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4912 msm_routing_put_audio_mixer),
4913 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4914 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4915 msm_routing_put_audio_mixer),
4916 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4917 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4918 msm_routing_put_audio_mixer),
4919 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4920 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4921 msm_routing_put_audio_mixer),
4922 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4923 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4924 msm_routing_put_audio_mixer),
4925 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4926 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4927 msm_routing_put_audio_mixer),
4928 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4929 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4930 msm_routing_put_audio_mixer),
4931 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4932 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4933 msm_routing_put_audio_mixer),
4934 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4935 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4936 msm_routing_put_audio_mixer),
4937 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4938 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4939 msm_routing_put_audio_mixer),
4940 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4941 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4942 msm_routing_put_audio_mixer),
4943 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4944 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4945 msm_routing_put_audio_mixer),
4946};
4947
4948static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
4949 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4950 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4951 msm_routing_put_audio_mixer),
4952 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4953 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4954 msm_routing_put_audio_mixer),
4955 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4956 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4957 msm_routing_put_audio_mixer),
4958 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4959 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4960 msm_routing_put_audio_mixer),
4961 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4962 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4963 msm_routing_put_audio_mixer),
4964 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4965 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4966 msm_routing_put_audio_mixer),
4967 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4968 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4969 msm_routing_put_audio_mixer),
4970 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4971 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4972 msm_routing_put_audio_mixer),
4973 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4974 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4975 msm_routing_put_audio_mixer),
4976 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4977 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4978 msm_routing_put_audio_mixer),
4979 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4980 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4981 msm_routing_put_audio_mixer),
4982 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4983 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4984 msm_routing_put_audio_mixer),
4985 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4986 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4987 msm_routing_put_audio_mixer),
4988 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4989 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4990 msm_routing_put_audio_mixer),
4991 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4992 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4993 msm_routing_put_audio_mixer),
4994 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4995 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4996 msm_routing_put_audio_mixer),
4997};
4998
4999static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
5000 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
5001 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5002 msm_routing_put_audio_mixer),
5003 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
5004 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5005 msm_routing_put_audio_mixer),
5006 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
5007 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5008 msm_routing_put_audio_mixer),
5009 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
5010 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5011 msm_routing_put_audio_mixer),
5012 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
5013 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5014 msm_routing_put_audio_mixer),
5015 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
5016 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5017 msm_routing_put_audio_mixer),
5018 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
5019 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5020 msm_routing_put_audio_mixer),
5021 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
5022 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5023 msm_routing_put_audio_mixer),
5024 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
5025 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5026 msm_routing_put_audio_mixer),
5027 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
5028 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5029 msm_routing_put_audio_mixer),
5030 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
5031 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5032 msm_routing_put_audio_mixer),
5033 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
5034 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5035 msm_routing_put_audio_mixer),
5036 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
5037 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5038 msm_routing_put_audio_mixer),
5039 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
5040 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5041 msm_routing_put_audio_mixer),
5042 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
5043 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5044 msm_routing_put_audio_mixer),
5045 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
5046 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5047 msm_routing_put_audio_mixer),
5048};
5049
5050static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
5051 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5052 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5053 msm_routing_put_audio_mixer),
5054 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5055 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5056 msm_routing_put_audio_mixer),
5057 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5058 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5059 msm_routing_put_audio_mixer),
5060 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5061 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5062 msm_routing_put_audio_mixer),
5063 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5064 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5065 msm_routing_put_audio_mixer),
5066 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5067 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5068 msm_routing_put_audio_mixer),
5069 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5070 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5071 msm_routing_put_audio_mixer),
5072 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5073 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5074 msm_routing_put_audio_mixer),
5075 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5076 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5077 msm_routing_put_audio_mixer),
5078 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5079 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5080 msm_routing_put_audio_mixer),
5081 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5082 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5083 msm_routing_put_audio_mixer),
5084 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5085 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5086 msm_routing_put_audio_mixer),
5087 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5088 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5089 msm_routing_put_audio_mixer),
5090 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5091 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5092 msm_routing_put_audio_mixer),
5093 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5094 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5095 msm_routing_put_audio_mixer),
5096 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5097 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5098 msm_routing_put_audio_mixer),
5099 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5100 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5101 msm_routing_put_audio_mixer),
5102 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5103 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5104 msm_routing_put_audio_mixer),
5105 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5106 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5107 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305108 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5109 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5110 msm_routing_put_audio_mixer),
5111 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5112 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5113 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305114};
5115
5116static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
5117 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5118 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5119 msm_routing_put_audio_mixer),
5120 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5121 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5122 msm_routing_put_audio_mixer),
5123 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5124 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5125 msm_routing_put_audio_mixer),
5126 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5127 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5128 msm_routing_put_audio_mixer),
5129 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5130 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5131 msm_routing_put_audio_mixer),
5132 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5133 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5134 msm_routing_put_audio_mixer),
5135 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5136 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5137 msm_routing_put_audio_mixer),
5138 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5139 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5140 msm_routing_put_audio_mixer),
5141 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5142 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5143 msm_routing_put_audio_mixer),
5144 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5145 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5146 msm_routing_put_audio_mixer),
5147 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5148 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5149 msm_routing_put_audio_mixer),
5150 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5151 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5152 msm_routing_put_audio_mixer),
5153 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5154 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5155 msm_routing_put_audio_mixer),
5156 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5157 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5158 msm_routing_put_audio_mixer),
5159 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5160 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5161 msm_routing_put_audio_mixer),
5162 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5163 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5164 msm_routing_put_audio_mixer),
5165};
5166
5167static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5168 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5169 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5170 msm_routing_put_audio_mixer),
5171 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5172 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5173 msm_routing_put_audio_mixer),
5174 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5175 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5176 msm_routing_put_audio_mixer),
5177 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5178 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5179 msm_routing_put_audio_mixer),
5180 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5181 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5182 msm_routing_put_audio_mixer),
5183 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5184 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5185 msm_routing_put_audio_mixer),
5186 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5187 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5188 msm_routing_put_audio_mixer),
5189 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5190 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5191 msm_routing_put_audio_mixer),
5192 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5193 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5194 msm_routing_put_audio_mixer),
5195 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5196 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5197 msm_routing_put_audio_mixer),
5198 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5199 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5200 msm_routing_put_audio_mixer),
5201 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5202 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5203 msm_routing_put_audio_mixer),
5204 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5205 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5206 msm_routing_put_audio_mixer),
5207 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5208 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5209 msm_routing_put_audio_mixer),
5210 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5211 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5212 msm_routing_put_audio_mixer),
5213 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5214 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5215 msm_routing_put_audio_mixer),
5216 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5217 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5218 msm_routing_put_audio_mixer),
5219 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5220 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5221 msm_routing_put_audio_mixer),
5222 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5223 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5224 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305225 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_FM_RX,
5226 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5227 msm_routing_put_audio_mixer),
5228 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_FM_RX,
5229 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5230 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305231};
5232
5233static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5234 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5235 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5236 msm_routing_put_audio_mixer),
5237 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5238 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5239 msm_routing_put_audio_mixer),
5240 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5241 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5242 msm_routing_put_audio_mixer),
5243 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5244 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5245 msm_routing_put_audio_mixer),
5246 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5247 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5248 msm_routing_put_audio_mixer),
5249 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5250 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5251 msm_routing_put_audio_mixer),
5252 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5253 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5254 msm_routing_put_audio_mixer),
5255 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5256 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5257 msm_routing_put_audio_mixer),
5258 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5259 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5260 msm_routing_put_audio_mixer),
5261 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5262 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5263 msm_routing_put_audio_mixer),
5264 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5265 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5266 msm_routing_put_audio_mixer),
5267 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5268 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5269 msm_routing_put_audio_mixer),
5270 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5271 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5272 msm_routing_put_audio_mixer),
5273 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5274 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5275 msm_routing_put_audio_mixer),
5276 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5277 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5278 msm_routing_put_audio_mixer),
5279 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5280 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5281 msm_routing_put_audio_mixer),
5282 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5283 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5284 msm_routing_put_audio_mixer),
5285 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5286 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5287 msm_routing_put_audio_mixer),
5288 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5289 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5290 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305291 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AFE_PCM_RX,
5292 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5293 msm_routing_put_audio_mixer),
5294 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AFE_PCM_RX,
5295 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5296 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305297};
5298
5299static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5300 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5301 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5302 msm_routing_put_audio_mixer),
5303 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5304 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5305 msm_routing_put_audio_mixer),
5306 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5307 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5308 msm_routing_put_audio_mixer),
5309 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5310 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5311 msm_routing_put_audio_mixer),
5312 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5313 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5314 msm_routing_put_audio_mixer),
5315 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5316 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5317 msm_routing_put_audio_mixer),
5318 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5319 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5320 msm_routing_put_audio_mixer),
5321 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5322 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5323 msm_routing_put_audio_mixer),
5324 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5325 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5326 msm_routing_put_audio_mixer),
5327 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5328 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5329 msm_routing_put_audio_mixer),
5330 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5331 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5332 msm_routing_put_audio_mixer),
5333 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5334 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5335 msm_routing_put_audio_mixer),
5336 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5337 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5338 msm_routing_put_audio_mixer),
5339 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5340 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5341 msm_routing_put_audio_mixer),
5342 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5343 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5344 msm_routing_put_audio_mixer),
5345 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5346 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5347 msm_routing_put_audio_mixer),
5348 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5349 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5350 msm_routing_put_audio_mixer),
5351 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5352 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5353 msm_routing_put_audio_mixer),
5354 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5355 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5356 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305357 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AUXPCM_RX,
5358 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5359 msm_routing_put_audio_mixer),
5360 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AUXPCM_RX,
5361 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5362 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305363};
5364
5365static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5366 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5367 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5368 msm_routing_put_audio_mixer),
5369 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5370 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5371 msm_routing_put_audio_mixer),
5372 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5373 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5374 msm_routing_put_audio_mixer),
5375 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5376 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5377 msm_routing_put_audio_mixer),
5378 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5379 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5380 msm_routing_put_audio_mixer),
5381 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5382 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5383 msm_routing_put_audio_mixer),
5384 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5385 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5386 msm_routing_put_audio_mixer),
5387 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5388 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5389 msm_routing_put_audio_mixer),
5390 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5391 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5392 msm_routing_put_audio_mixer),
5393 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5394 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5395 msm_routing_put_audio_mixer),
5396 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5397 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5398 msm_routing_put_audio_mixer),
5399 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5400 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5401 msm_routing_put_audio_mixer),
5402 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5403 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5404 msm_routing_put_audio_mixer),
5405 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5406 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5407 msm_routing_put_audio_mixer),
5408 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5409 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5410 msm_routing_put_audio_mixer),
5411 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5412 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5413 msm_routing_put_audio_mixer),
5414 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5415 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5416 msm_routing_put_audio_mixer),
5417 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5418 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5419 msm_routing_put_audio_mixer),
5420 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5421 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5422 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305423 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5424 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5425 msm_routing_put_audio_mixer),
5426 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5427 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5428 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305429};
5430
5431static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5432 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5433 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5434 msm_routing_put_audio_mixer),
5435 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5436 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5437 msm_routing_put_audio_mixer),
5438 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5439 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5440 msm_routing_put_audio_mixer),
5441 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5442 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5443 msm_routing_put_audio_mixer),
5444 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5445 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5446 msm_routing_put_audio_mixer),
5447 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5448 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5449 msm_routing_put_audio_mixer),
5450 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5451 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5452 msm_routing_put_audio_mixer),
5453 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5454 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5455 msm_routing_put_audio_mixer),
5456 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5457 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5458 msm_routing_put_audio_mixer),
5459 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5460 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5461 msm_routing_put_audio_mixer),
5462 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5463 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5464 msm_routing_put_audio_mixer),
5465 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5466 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5467 msm_routing_put_audio_mixer),
5468 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5469 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5470 msm_routing_put_audio_mixer),
5471 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5472 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5473 msm_routing_put_audio_mixer),
5474 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5475 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5476 msm_routing_put_audio_mixer),
5477 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5478 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5479 msm_routing_put_audio_mixer),
5480};
5481
5482static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5483 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5484 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5485 msm_routing_put_audio_mixer),
5486 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5487 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5488 msm_routing_put_audio_mixer),
5489 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5490 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5491 msm_routing_put_audio_mixer),
5492 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5493 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5494 msm_routing_put_audio_mixer),
5495 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5496 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5497 msm_routing_put_audio_mixer),
5498 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5499 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5500 msm_routing_put_audio_mixer),
5501 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5502 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5503 msm_routing_put_audio_mixer),
5504 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5505 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5506 msm_routing_put_audio_mixer),
5507 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5508 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5509 msm_routing_put_audio_mixer),
5510 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5511 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5512 msm_routing_put_audio_mixer),
5513 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5514 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5515 msm_routing_put_audio_mixer),
5516 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5517 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5518 msm_routing_put_audio_mixer),
5519 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5520 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5521 msm_routing_put_audio_mixer),
5522 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5523 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5524 msm_routing_put_audio_mixer),
5525 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5526 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5527 msm_routing_put_audio_mixer),
5528 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5529 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5530 msm_routing_put_audio_mixer),
5531};
5532
Rohit Kumara5077932017-09-10 22:05:05 +05305533static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5534 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5535 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5536 msm_routing_put_audio_mixer),
5537 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5538 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5539 msm_routing_put_audio_mixer),
5540 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5541 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5542 msm_routing_put_audio_mixer),
5543 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5544 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5545 msm_routing_put_audio_mixer),
5546 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5547 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5548 msm_routing_put_audio_mixer),
5549 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5550 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5551 msm_routing_put_audio_mixer),
5552 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5553 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5554 msm_routing_put_audio_mixer),
5555 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5556 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5557 msm_routing_put_audio_mixer),
5558 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5559 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5560 msm_routing_put_audio_mixer),
5561 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5562 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5563 msm_routing_put_audio_mixer),
5564 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5565 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5566 msm_routing_put_audio_mixer),
5567 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5568 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5569 msm_routing_put_audio_mixer),
5570 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5571 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5572 msm_routing_put_audio_mixer),
5573 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5574 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5575 msm_routing_put_audio_mixer),
5576 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5577 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5578 msm_routing_put_audio_mixer),
5579 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5580 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5581 msm_routing_put_audio_mixer),
5582};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305583static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5584 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5585 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5586 msm_routing_put_audio_mixer),
5587 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5588 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5589 msm_routing_put_audio_mixer),
5590 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5591 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5592 msm_routing_put_audio_mixer),
5593 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5594 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5595 msm_routing_put_audio_mixer),
5596 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5597 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5598 msm_routing_put_audio_mixer),
5599 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5600 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5601 msm_routing_put_audio_mixer),
5602 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5603 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5604 msm_routing_put_audio_mixer),
5605 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5606 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5607 msm_routing_put_audio_mixer),
5608 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5609 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5610 msm_routing_put_audio_mixer),
5611 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5612 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5613 msm_routing_put_audio_mixer),
5614 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5615 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5616 msm_routing_put_audio_mixer),
5617 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5618 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5619 msm_routing_put_audio_mixer),
5620 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5621 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5622 msm_routing_put_audio_mixer),
5623 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5624 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5625 msm_routing_put_audio_mixer),
5626 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5627 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5628 msm_routing_put_audio_mixer),
5629 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5630 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5631 msm_routing_put_audio_mixer),
5632};
5633
5634static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5635 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5636 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5637 msm_routing_put_audio_mixer),
5638 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5639 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5640 msm_routing_put_audio_mixer),
5641 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5642 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5643 msm_routing_put_audio_mixer),
5644 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5645 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5646 msm_routing_put_audio_mixer),
5647 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5648 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5649 msm_routing_put_audio_mixer),
5650 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5651 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5652 msm_routing_put_audio_mixer),
5653 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5654 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5655 msm_routing_put_audio_mixer),
5656 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5657 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5658 msm_routing_put_audio_mixer),
5659 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5660 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5661 msm_routing_put_audio_mixer),
5662 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5663 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5664 msm_routing_put_audio_mixer),
5665 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5666 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5667 msm_routing_put_audio_mixer),
5668 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5669 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5670 msm_routing_put_audio_mixer),
5671 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5672 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5673 msm_routing_put_audio_mixer),
5674 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5675 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5676 msm_routing_put_audio_mixer),
5677 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5678 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5679 msm_routing_put_audio_mixer),
5680 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5681 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5682 msm_routing_put_audio_mixer),
5683};
5684
5685static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5686 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5687 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5688 msm_routing_put_audio_mixer),
5689 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5690 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5691 msm_routing_put_audio_mixer),
5692 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5693 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5694 msm_routing_put_audio_mixer),
5695 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5696 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5697 msm_routing_put_audio_mixer),
5698 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5699 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5700 msm_routing_put_audio_mixer),
5701 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5702 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5703 msm_routing_put_audio_mixer),
5704 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5705 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5706 msm_routing_put_audio_mixer),
5707 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5708 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5709 msm_routing_put_audio_mixer),
5710 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5711 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5712 msm_routing_put_audio_mixer),
5713 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5714 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5715 msm_routing_put_audio_mixer),
5716 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5717 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5718 msm_routing_put_audio_mixer),
5719 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5720 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5721 msm_routing_put_audio_mixer),
5722 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5723 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5724 msm_routing_put_audio_mixer),
5725 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5726 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5727 msm_routing_put_audio_mixer),
5728 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5729 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5730 msm_routing_put_audio_mixer),
5731 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5732 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5733 msm_routing_put_audio_mixer),
5734};
5735
5736static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5737 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5738 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5739 msm_routing_put_audio_mixer),
5740 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5741 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5742 msm_routing_put_audio_mixer),
5743 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5744 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5745 msm_routing_put_audio_mixer),
5746 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5747 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5748 msm_routing_put_audio_mixer),
5749 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5750 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5751 msm_routing_put_audio_mixer),
5752 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5753 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5754 msm_routing_put_audio_mixer),
5755 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5756 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5757 msm_routing_put_audio_mixer),
5758 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5759 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5760 msm_routing_put_audio_mixer),
5761 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5762 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5763 msm_routing_put_audio_mixer),
5764 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5765 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5766 msm_routing_put_audio_mixer),
5767 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5768 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5769 msm_routing_put_audio_mixer),
5770 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5771 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5772 msm_routing_put_audio_mixer),
5773 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5774 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5775 msm_routing_put_audio_mixer),
5776 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5777 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5778 msm_routing_put_audio_mixer),
5779 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5780 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5781 msm_routing_put_audio_mixer),
5782 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5783 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5784 msm_routing_put_audio_mixer),
5785};
5786
5787static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5788 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5789 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5790 msm_routing_put_audio_mixer),
5791 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5792 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5793 msm_routing_put_audio_mixer),
5794 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5795 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5796 msm_routing_put_audio_mixer),
5797 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5798 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5799 msm_routing_put_audio_mixer),
5800 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5801 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5802 msm_routing_put_audio_mixer),
5803 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5804 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5805 msm_routing_put_audio_mixer),
5806 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5807 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5808 msm_routing_put_audio_mixer),
5809 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5810 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5811 msm_routing_put_audio_mixer),
5812 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5813 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5814 msm_routing_put_audio_mixer),
5815 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5816 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5817 msm_routing_put_audio_mixer),
5818 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5819 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5820 msm_routing_put_audio_mixer),
5821 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5822 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5823 msm_routing_put_audio_mixer),
5824 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5825 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5826 msm_routing_put_audio_mixer),
5827 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5828 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5829 msm_routing_put_audio_mixer),
5830 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5831 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5832 msm_routing_put_audio_mixer),
5833 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5834 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5835 msm_routing_put_audio_mixer),
5836};
5837
5838static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5839 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5840 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5841 msm_routing_put_audio_mixer),
5842 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5843 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5844 msm_routing_put_audio_mixer),
5845 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5846 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5847 msm_routing_put_audio_mixer),
5848 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5849 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5850 msm_routing_put_audio_mixer),
5851 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5852 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5853 msm_routing_put_audio_mixer),
5854 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5855 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5856 msm_routing_put_audio_mixer),
5857 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5858 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5859 msm_routing_put_audio_mixer),
5860 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5861 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5862 msm_routing_put_audio_mixer),
5863 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5864 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5865 msm_routing_put_audio_mixer),
5866 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5867 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5868 msm_routing_put_audio_mixer),
5869 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5870 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5871 msm_routing_put_audio_mixer),
5872 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5873 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5874 msm_routing_put_audio_mixer),
5875 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5876 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5877 msm_routing_put_audio_mixer),
5878 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5879 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5880 msm_routing_put_audio_mixer),
5881 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5882 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5883 msm_routing_put_audio_mixer),
5884 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5885 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5886 msm_routing_put_audio_mixer),
5887};
5888
5889static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
5890 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5891 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5892 msm_routing_put_audio_mixer),
5893 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5894 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5895 msm_routing_put_audio_mixer),
5896 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5897 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5898 msm_routing_put_audio_mixer),
5899 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5900 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5901 msm_routing_put_audio_mixer),
5902 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5903 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5904 msm_routing_put_audio_mixer),
5905 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5906 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5907 msm_routing_put_audio_mixer),
5908 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5909 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5910 msm_routing_put_audio_mixer),
5911 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5912 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5913 msm_routing_put_audio_mixer),
5914 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5915 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5916 msm_routing_put_audio_mixer),
5917 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5918 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5919 msm_routing_put_audio_mixer),
5920 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5921 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5922 msm_routing_put_audio_mixer),
5923 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5924 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5925 msm_routing_put_audio_mixer),
5926 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5927 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5928 msm_routing_put_audio_mixer),
5929 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5930 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5931 msm_routing_put_audio_mixer),
5932 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5933 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5934 msm_routing_put_audio_mixer),
5935 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5936 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5937 msm_routing_put_audio_mixer),
5938};
5939
5940static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
5941 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5942 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5943 msm_routing_put_audio_mixer),
5944 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5945 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5946 msm_routing_put_audio_mixer),
5947 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5948 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5949 msm_routing_put_audio_mixer),
5950 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5951 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5952 msm_routing_put_audio_mixer),
5953 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5954 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5955 msm_routing_put_audio_mixer),
5956 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5957 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5958 msm_routing_put_audio_mixer),
5959 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5960 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5961 msm_routing_put_audio_mixer),
5962 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5963 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5964 msm_routing_put_audio_mixer),
5965 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5966 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5967 msm_routing_put_audio_mixer),
5968 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5969 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5970 msm_routing_put_audio_mixer),
5971 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5972 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5973 msm_routing_put_audio_mixer),
5974 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5975 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5976 msm_routing_put_audio_mixer),
5977 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5978 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5979 msm_routing_put_audio_mixer),
5980 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5981 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5982 msm_routing_put_audio_mixer),
5983 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5984 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5985 msm_routing_put_audio_mixer),
5986 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5987 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5988 msm_routing_put_audio_mixer),
5989};
5990
5991static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
5992 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5993 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5994 msm_routing_put_audio_mixer),
5995 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5996 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5997 msm_routing_put_audio_mixer),
5998 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5999 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6000 msm_routing_put_audio_mixer),
6001 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6002 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6003 msm_routing_put_audio_mixer),
6004 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6005 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6006 msm_routing_put_audio_mixer),
6007 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6008 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6009 msm_routing_put_audio_mixer),
6010 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6011 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6012 msm_routing_put_audio_mixer),
6013 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6014 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6015 msm_routing_put_audio_mixer),
6016 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6017 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6018 msm_routing_put_audio_mixer),
6019 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6020 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6021 msm_routing_put_audio_mixer),
6022 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6023 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6024 msm_routing_put_audio_mixer),
6025 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6026 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6027 msm_routing_put_audio_mixer),
6028 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6029 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6030 msm_routing_put_audio_mixer),
6031 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6032 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6033 msm_routing_put_audio_mixer),
6034 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6035 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6036 msm_routing_put_audio_mixer),
6037 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6038 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6039 msm_routing_put_audio_mixer),
6040};
6041
6042static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
6043 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6044 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6045 msm_routing_put_audio_mixer),
6046 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6047 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6048 msm_routing_put_audio_mixer),
6049 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6050 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6051 msm_routing_put_audio_mixer),
6052 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6053 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6054 msm_routing_put_audio_mixer),
6055 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6056 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6057 msm_routing_put_audio_mixer),
6058 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6059 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6060 msm_routing_put_audio_mixer),
6061 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6062 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6063 msm_routing_put_audio_mixer),
6064 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6065 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6066 msm_routing_put_audio_mixer),
6067 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6068 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6069 msm_routing_put_audio_mixer),
6070 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6071 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6072 msm_routing_put_audio_mixer),
6073 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6074 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6075 msm_routing_put_audio_mixer),
6076 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6077 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6078 msm_routing_put_audio_mixer),
6079 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6080 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6081 msm_routing_put_audio_mixer),
6082 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6083 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6084 msm_routing_put_audio_mixer),
6085 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6086 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6087 msm_routing_put_audio_mixer),
6088 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6089 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6090 msm_routing_put_audio_mixer),
6091};
6092
6093static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
6094 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6095 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6096 msm_routing_put_audio_mixer),
6097 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6098 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6099 msm_routing_put_audio_mixer),
6100 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6101 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6102 msm_routing_put_audio_mixer),
6103 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6104 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6105 msm_routing_put_audio_mixer),
6106 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6107 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6108 msm_routing_put_audio_mixer),
6109 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6110 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6111 msm_routing_put_audio_mixer),
6112 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6113 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6114 msm_routing_put_audio_mixer),
6115 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6116 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6117 msm_routing_put_audio_mixer),
6118 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6119 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6120 msm_routing_put_audio_mixer),
6121 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6122 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6123 msm_routing_put_audio_mixer),
6124 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6125 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6126 msm_routing_put_audio_mixer),
6127 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6128 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6129 msm_routing_put_audio_mixer),
6130 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6131 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6132 msm_routing_put_audio_mixer),
6133 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6134 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6135 msm_routing_put_audio_mixer),
6136 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6137 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6138 msm_routing_put_audio_mixer),
6139 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6140 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6141 msm_routing_put_audio_mixer),
6142};
6143
6144static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
6145 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6146 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6147 msm_routing_put_audio_mixer),
6148 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6149 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6150 msm_routing_put_audio_mixer),
6151 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6152 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6153 msm_routing_put_audio_mixer),
6154 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6155 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6156 msm_routing_put_audio_mixer),
6157 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6158 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6159 msm_routing_put_audio_mixer),
6160 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6161 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6162 msm_routing_put_audio_mixer),
6163 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6164 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6165 msm_routing_put_audio_mixer),
6166 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6167 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6168 msm_routing_put_audio_mixer),
6169 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6170 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6171 msm_routing_put_audio_mixer),
6172 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6173 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6174 msm_routing_put_audio_mixer),
6175 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6176 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6177 msm_routing_put_audio_mixer),
6178 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6179 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6180 msm_routing_put_audio_mixer),
6181 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6182 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6183 msm_routing_put_audio_mixer),
6184 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6185 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6186 msm_routing_put_audio_mixer),
6187 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6188 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6189 msm_routing_put_audio_mixer),
6190 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6191 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6192 msm_routing_put_audio_mixer),
6193};
6194
6195static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
6196 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6197 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6198 msm_routing_put_audio_mixer),
6199 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6200 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6201 msm_routing_put_audio_mixer),
6202 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6203 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6204 msm_routing_put_audio_mixer),
6205 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6206 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6207 msm_routing_put_audio_mixer),
6208 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6209 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6210 msm_routing_put_audio_mixer),
6211 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6212 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6213 msm_routing_put_audio_mixer),
6214 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6215 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6216 msm_routing_put_audio_mixer),
6217 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6218 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6219 msm_routing_put_audio_mixer),
6220 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6221 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6222 msm_routing_put_audio_mixer),
6223 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6224 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6225 msm_routing_put_audio_mixer),
6226 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6227 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6228 msm_routing_put_audio_mixer),
6229 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6230 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6231 msm_routing_put_audio_mixer),
6232 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6233 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6234 msm_routing_put_audio_mixer),
6235 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6236 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6237 msm_routing_put_audio_mixer),
6238 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6239 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6240 msm_routing_put_audio_mixer),
6241 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6242 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6243 msm_routing_put_audio_mixer),
6244};
6245
6246static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
6247 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6248 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6249 msm_routing_put_audio_mixer),
6250 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6251 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6252 msm_routing_put_audio_mixer),
6253 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6254 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6255 msm_routing_put_audio_mixer),
6256 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6257 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6258 msm_routing_put_audio_mixer),
6259 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6260 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6261 msm_routing_put_audio_mixer),
6262 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6263 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6264 msm_routing_put_audio_mixer),
6265 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6266 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6267 msm_routing_put_audio_mixer),
6268 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6269 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6270 msm_routing_put_audio_mixer),
6271 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6272 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6273 msm_routing_put_audio_mixer),
6274 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6275 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6276 msm_routing_put_audio_mixer),
6277 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6278 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6279 msm_routing_put_audio_mixer),
6280 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6281 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6282 msm_routing_put_audio_mixer),
6283 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6284 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6285 msm_routing_put_audio_mixer),
6286 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6287 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6288 msm_routing_put_audio_mixer),
6289 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6290 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6291 msm_routing_put_audio_mixer),
6292 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6293 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6294 msm_routing_put_audio_mixer),
6295};
6296
6297static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6298 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6299 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6300 msm_routing_put_audio_mixer),
6301 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6302 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6303 msm_routing_put_audio_mixer),
6304 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6305 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6306 msm_routing_put_audio_mixer),
6307 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6308 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6309 msm_routing_put_audio_mixer),
6310 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6311 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6312 msm_routing_put_audio_mixer),
6313 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6314 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6315 msm_routing_put_audio_mixer),
6316 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6317 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6318 msm_routing_put_audio_mixer),
6319 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6320 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6321 msm_routing_put_audio_mixer),
6322 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6323 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6324 msm_routing_put_audio_mixer),
6325 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6326 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6327 msm_routing_put_audio_mixer),
6328 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6329 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6330 msm_routing_put_audio_mixer),
6331 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6332 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6333 msm_routing_put_audio_mixer),
6334 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6335 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6336 msm_routing_put_audio_mixer),
6337 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6338 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6339 msm_routing_put_audio_mixer),
6340 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6341 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6342 msm_routing_put_audio_mixer),
6343 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6344 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6345 msm_routing_put_audio_mixer),
6346};
6347
6348static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6349 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6350 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6351 msm_routing_put_audio_mixer),
6352 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6353 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6354 msm_routing_put_audio_mixer),
6355 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6356 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6357 msm_routing_put_audio_mixer),
6358 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6359 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6360 msm_routing_put_audio_mixer),
6361 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6362 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6363 msm_routing_put_audio_mixer),
6364 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6365 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6366 msm_routing_put_audio_mixer),
6367 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6368 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6369 msm_routing_put_audio_mixer),
6370 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6371 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6372 msm_routing_put_audio_mixer),
6373 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6374 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6375 msm_routing_put_audio_mixer),
6376 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6377 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6378 msm_routing_put_audio_mixer),
6379 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6380 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6381 msm_routing_put_audio_mixer),
6382 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6383 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6384 msm_routing_put_audio_mixer),
6385 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6386 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6387 msm_routing_put_audio_mixer),
6388 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6389 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6390 msm_routing_put_audio_mixer),
6391 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6392 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6393 msm_routing_put_audio_mixer),
6394 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6395 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6396 msm_routing_put_audio_mixer),
6397};
6398
6399static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6400 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6401 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6402 msm_routing_put_audio_mixer),
6403 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6404 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6405 msm_routing_put_audio_mixer),
6406 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6407 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6408 msm_routing_put_audio_mixer),
6409 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6410 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6411 msm_routing_put_audio_mixer),
6412 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6413 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6414 msm_routing_put_audio_mixer),
6415 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6416 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6417 msm_routing_put_audio_mixer),
6418 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6419 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6420 msm_routing_put_audio_mixer),
6421 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6422 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6423 msm_routing_put_audio_mixer),
6424 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6425 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6426 msm_routing_put_audio_mixer),
6427 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6428 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6429 msm_routing_put_audio_mixer),
6430 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6431 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6432 msm_routing_put_audio_mixer),
6433 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6434 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6435 msm_routing_put_audio_mixer),
6436 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6437 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6438 msm_routing_put_audio_mixer),
6439 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6440 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6441 msm_routing_put_audio_mixer),
6442 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6443 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6444 msm_routing_put_audio_mixer),
6445 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6446 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6447 msm_routing_put_audio_mixer),
6448 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6449 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6450 msm_routing_put_audio_mixer),
6451};
6452
6453static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6454 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6455 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6456 msm_routing_put_audio_mixer),
6457 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6458 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6459 msm_routing_put_audio_mixer),
6460 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6461 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6462 msm_routing_put_audio_mixer),
6463 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6464 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6465 msm_routing_put_audio_mixer),
6466 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6467 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6468 msm_routing_put_audio_mixer),
6469 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6470 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6471 msm_routing_put_audio_mixer),
6472 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6473 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6474 msm_routing_put_audio_mixer),
6475 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6476 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6477 msm_routing_put_audio_mixer),
6478 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6479 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6480 msm_routing_put_audio_mixer),
6481 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6482 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6483 msm_routing_put_audio_mixer),
6484 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6485 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6486 msm_routing_put_audio_mixer),
6487 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6488 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6489 msm_routing_put_audio_mixer),
6490 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6491 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6492 msm_routing_put_audio_mixer),
6493 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6494 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6495 msm_routing_put_audio_mixer),
6496 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6497 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6498 msm_routing_put_audio_mixer),
6499 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6500 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6501 msm_routing_put_audio_mixer),
6502};
6503
6504static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6505 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6506 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6507 msm_routing_put_audio_mixer),
6508 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6509 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6510 msm_routing_put_audio_mixer),
6511 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6512 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6513 msm_routing_put_audio_mixer),
6514 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6515 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6516 msm_routing_put_audio_mixer),
6517 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6518 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6519 msm_routing_put_audio_mixer),
6520 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6521 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6522 msm_routing_put_audio_mixer),
6523 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6524 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6525 msm_routing_put_audio_mixer),
6526 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6527 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6528 msm_routing_put_audio_mixer),
6529 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6530 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6531 msm_routing_put_audio_mixer),
6532 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6533 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6534 msm_routing_put_audio_mixer),
6535 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6536 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6537 msm_routing_put_audio_mixer),
6538 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6539 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6540 msm_routing_put_audio_mixer),
6541 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6542 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6543 msm_routing_put_audio_mixer),
6544 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6545 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6546 msm_routing_put_audio_mixer),
6547 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6548 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6549 msm_routing_put_audio_mixer),
6550 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6551 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6552 msm_routing_put_audio_mixer),
6553 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6554 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6555 msm_routing_put_audio_mixer),
6556};
6557
6558static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6559 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6560 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6561 msm_routing_put_audio_mixer),
6562 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6563 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6564 msm_routing_put_audio_mixer),
6565 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6566 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6567 msm_routing_put_audio_mixer),
6568 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6569 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6570 msm_routing_put_audio_mixer),
6571 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6572 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6573 msm_routing_put_audio_mixer),
6574 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6575 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6576 msm_routing_put_audio_mixer),
6577 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6578 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6579 msm_routing_put_audio_mixer),
6580 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6581 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6582 msm_routing_put_audio_mixer),
6583 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6584 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6585 msm_routing_put_audio_mixer),
6586 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6587 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6588 msm_routing_put_audio_mixer),
6589 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6590 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6591 msm_routing_put_audio_mixer),
6592 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6593 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6594 msm_routing_put_audio_mixer),
6595 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6596 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6597 msm_routing_put_audio_mixer),
6598 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6599 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6600 msm_routing_put_audio_mixer),
6601 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6602 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6603 msm_routing_put_audio_mixer),
6604 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6605 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6606 msm_routing_put_audio_mixer),
6607 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6608 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6609 msm_routing_put_audio_mixer),
6610};
6611
6612static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6613 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6614 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6615 msm_routing_put_audio_mixer),
6616 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6617 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6618 msm_routing_put_audio_mixer),
6619 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6620 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6621 msm_routing_put_audio_mixer),
6622 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6623 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6624 msm_routing_put_audio_mixer),
6625 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6626 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6627 msm_routing_put_audio_mixer),
6628 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6629 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6630 msm_routing_put_audio_mixer),
6631 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6632 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6633 msm_routing_put_audio_mixer),
6634 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6635 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6636 msm_routing_put_audio_mixer),
6637 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6638 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6639 msm_routing_put_audio_mixer),
6640 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6641 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6642 msm_routing_put_audio_mixer),
6643 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6644 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6645 msm_routing_put_audio_mixer),
6646 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6647 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6648 msm_routing_put_audio_mixer),
6649 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6650 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6651 msm_routing_put_audio_mixer),
6652 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6653 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6654 msm_routing_put_audio_mixer),
6655 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6656 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6657 msm_routing_put_audio_mixer),
6658 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6659 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6660 msm_routing_put_audio_mixer),
6661 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6662 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6663 msm_routing_put_audio_mixer),
6664};
6665
Rohit Kumara5077932017-09-10 22:05:05 +05306666static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6667 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6668 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6669 msm_routing_put_audio_mixer),
6670 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6671 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6672 msm_routing_put_audio_mixer),
6673 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6674 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6675 msm_routing_put_audio_mixer),
6676 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6677 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6678 msm_routing_put_audio_mixer),
6679 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6680 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6681 msm_routing_put_audio_mixer),
6682 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6683 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6684 msm_routing_put_audio_mixer),
6685 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6686 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6687 msm_routing_put_audio_mixer),
6688 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6689 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6690 msm_routing_put_audio_mixer),
6691 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6692 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6693 msm_routing_put_audio_mixer),
6694 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6695 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6696 msm_routing_put_audio_mixer),
6697 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6698 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6699 msm_routing_put_audio_mixer),
6700 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6701 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6702 msm_routing_put_audio_mixer),
6703 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6704 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6705 msm_routing_put_audio_mixer),
6706 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6707 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6708 msm_routing_put_audio_mixer),
6709 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6710 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6711 msm_routing_put_audio_mixer),
6712 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6713 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6714 msm_routing_put_audio_mixer),
6715 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6716 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6717 msm_routing_put_audio_mixer),
6718};
6719
6720static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6721 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6722 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6723 msm_routing_put_audio_mixer),
6724 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6725 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6726 msm_routing_put_audio_mixer),
6727 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6728 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6729 msm_routing_put_audio_mixer),
6730 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6731 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6732 msm_routing_put_audio_mixer),
6733 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6734 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6735 msm_routing_put_audio_mixer),
6736 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6737 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6738 msm_routing_put_audio_mixer),
6739 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6740 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6741 msm_routing_put_audio_mixer),
6742 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6743 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6744 msm_routing_put_audio_mixer),
6745 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6746 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6747 msm_routing_put_audio_mixer),
6748 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6749 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6750 msm_routing_put_audio_mixer),
6751 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6752 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6753 msm_routing_put_audio_mixer),
6754 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6755 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6756 msm_routing_put_audio_mixer),
6757 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6758 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6759 msm_routing_put_audio_mixer),
6760 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6761 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6762 msm_routing_put_audio_mixer),
6763 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6764 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6765 msm_routing_put_audio_mixer),
6766 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6767 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6768 msm_routing_put_audio_mixer),
6769};
6770
6771static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6772 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6773 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6774 msm_routing_put_audio_mixer),
6775 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6776 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6777 msm_routing_put_audio_mixer),
6778 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6779 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6780 msm_routing_put_audio_mixer),
6781 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6782 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6783 msm_routing_put_audio_mixer),
6784 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6785 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6786 msm_routing_put_audio_mixer),
6787 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6788 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6789 msm_routing_put_audio_mixer),
6790 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6791 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6792 msm_routing_put_audio_mixer),
6793 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6794 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6795 msm_routing_put_audio_mixer),
6796 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6797 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6798 msm_routing_put_audio_mixer),
6799 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6800 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6801 msm_routing_put_audio_mixer),
6802 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6803 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6804 msm_routing_put_audio_mixer),
6805 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6806 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6807 msm_routing_put_audio_mixer),
6808 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6809 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6810 msm_routing_put_audio_mixer),
6811 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6812 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6813 msm_routing_put_audio_mixer),
6814 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6815 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6816 msm_routing_put_audio_mixer),
6817 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6818 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6819 msm_routing_put_audio_mixer),
6820 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6821 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6822 msm_routing_put_audio_mixer),
6823};
6824
6825static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6826 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6827 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6828 msm_routing_put_audio_mixer),
6829 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6830 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6831 msm_routing_put_audio_mixer),
6832 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6833 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6834 msm_routing_put_audio_mixer),
6835 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6836 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6837 msm_routing_put_audio_mixer),
6838 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6839 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6840 msm_routing_put_audio_mixer),
6841 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6842 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6843 msm_routing_put_audio_mixer),
6844 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6845 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6846 msm_routing_put_audio_mixer),
6847 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6848 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6849 msm_routing_put_audio_mixer),
6850 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6851 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6852 msm_routing_put_audio_mixer),
6853 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6854 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6855 msm_routing_put_audio_mixer),
6856 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6857 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6858 msm_routing_put_audio_mixer),
6859 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6860 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6861 msm_routing_put_audio_mixer),
6862 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6863 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6864 msm_routing_put_audio_mixer),
6865 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6866 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6867 msm_routing_put_audio_mixer),
6868 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6869 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6870 msm_routing_put_audio_mixer),
6871 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6872 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6873 msm_routing_put_audio_mixer),
6874 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6875 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6876 msm_routing_put_audio_mixer),
6877};
6878
6879static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
6880 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6881 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6882 msm_routing_put_audio_mixer),
6883 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6884 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6885 msm_routing_put_audio_mixer),
6886 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6887 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6888 msm_routing_put_audio_mixer),
6889 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6890 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6891 msm_routing_put_audio_mixer),
6892 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6893 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6894 msm_routing_put_audio_mixer),
6895 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6896 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6897 msm_routing_put_audio_mixer),
6898 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6899 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6900 msm_routing_put_audio_mixer),
6901 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6902 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6903 msm_routing_put_audio_mixer),
6904 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6905 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6906 msm_routing_put_audio_mixer),
6907 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6908 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6909 msm_routing_put_audio_mixer),
6910 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6911 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6912 msm_routing_put_audio_mixer),
6913 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6914 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6915 msm_routing_put_audio_mixer),
6916 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6917 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6918 msm_routing_put_audio_mixer),
6919 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6920 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6921 msm_routing_put_audio_mixer),
6922 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6923 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6924 msm_routing_put_audio_mixer),
6925 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6926 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6927 msm_routing_put_audio_mixer),
6928 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6929 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6930 msm_routing_put_audio_mixer),
6931};
6932
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306933static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
6934 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
6935 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6936 msm_routing_put_audio_mixer),
6937 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6938 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6939 msm_routing_put_audio_mixer),
6940 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6941 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6942 msm_routing_put_audio_mixer),
6943 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6944 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6945 msm_routing_put_audio_mixer),
6946 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6947 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6948 msm_routing_put_audio_mixer),
6949 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6950 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6951 msm_routing_put_audio_mixer),
6952 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6953 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6954 msm_routing_put_audio_mixer),
6955 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6956 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6957 msm_routing_put_audio_mixer),
6958 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6959 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6960 msm_routing_put_audio_mixer),
6961 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6962 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6963 msm_routing_put_audio_mixer),
6964 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6965 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6966 msm_routing_put_audio_mixer),
6967 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6968 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6969 msm_routing_put_audio_mixer),
6970 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6971 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6972 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306973 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
6974 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6975 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306976 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6977 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6978 msm_routing_put_audio_mixer),
6979 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6980 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6981 msm_routing_put_audio_mixer),
6982 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6983 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6984 msm_routing_put_audio_mixer),
6985 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
6986 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6987 msm_routing_put_audio_mixer),
6988 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
6989 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6990 msm_routing_put_audio_mixer),
6991 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
6992 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6993 msm_routing_put_audio_mixer),
6994 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6995 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6996 msm_routing_put_audio_mixer),
6997 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6998 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6999 msm_routing_put_audio_mixer),
7000 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7001 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7002 msm_routing_put_audio_mixer),
7003 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7004 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7005 msm_routing_put_audio_mixer),
7006 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7007 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7008 msm_routing_put_audio_mixer),
7009 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7010 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7011 msm_routing_put_audio_mixer),
7012 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7013 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7014 msm_routing_put_audio_mixer),
7015 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7016 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7017 msm_routing_put_audio_mixer),
7018 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7019 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7020 msm_routing_put_audio_mixer),
7021 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7022 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7023 msm_routing_put_audio_mixer),
7024 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7025 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7026 msm_routing_put_audio_mixer),
7027 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7028 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7029 msm_routing_put_audio_mixer),
7030 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7031 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7032 msm_routing_put_audio_mixer),
7033 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7034 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7035 msm_routing_put_audio_mixer),
7036 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7037 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7038 msm_routing_put_audio_mixer),
7039 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7040 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7041 msm_routing_put_audio_mixer),
7042 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7043 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7044 msm_routing_put_audio_mixer),
7045 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7046 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7047 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307048 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7049 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7050 msm_routing_put_audio_mixer),
7051 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7052 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7053 msm_routing_put_audio_mixer),
7054 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7055 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7056 msm_routing_put_audio_mixer),
7057 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7058 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7059 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307060 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7061 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7062 msm_routing_put_audio_mixer),
7063 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7064 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7065 msm_routing_put_audio_mixer),
7066 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7067 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7068 msm_routing_put_audio_mixer),
7069};
7070
7071static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
7072 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7073 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7074 msm_routing_put_audio_mixer),
7075 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7076 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7077 msm_routing_put_audio_mixer),
7078 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7079 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7080 msm_routing_put_audio_mixer),
7081 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7082 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7083 msm_routing_put_audio_mixer),
7084 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7085 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7086 msm_routing_put_audio_mixer),
7087 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7088 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7089 msm_routing_put_audio_mixer),
7090 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7091 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7092 msm_routing_put_audio_mixer),
7093 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7094 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7095 msm_routing_put_audio_mixer),
7096 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7097 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7098 msm_routing_put_audio_mixer),
7099 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7100 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7101 msm_routing_put_audio_mixer),
7102 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
7103 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7104 msm_routing_put_audio_mixer),
7105 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7106 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7107 msm_routing_put_audio_mixer),
7108 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7109 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7110 msm_routing_put_audio_mixer),
7111 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7112 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7113 msm_routing_put_audio_mixer),
7114 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7115 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7116 msm_routing_put_audio_mixer),
7117 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7118 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7119 msm_routing_put_audio_mixer),
7120 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7121 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7122 msm_routing_put_audio_mixer),
7123 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7124 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7125 msm_routing_put_audio_mixer),
7126 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7127 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7128 msm_routing_put_audio_mixer),
7129 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7130 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7131 msm_routing_put_audio_mixer),
7132 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7133 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7134 msm_routing_put_audio_mixer),
7135 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7136 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7137 msm_routing_put_audio_mixer),
7138 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7139 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7140 msm_routing_put_audio_mixer),
7141 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7142 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7143 msm_routing_put_audio_mixer),
7144 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7145 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7146 msm_routing_put_audio_mixer),
7147 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7148 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7149 msm_routing_put_audio_mixer),
7150 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7151 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7152 msm_routing_put_audio_mixer),
7153 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7154 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7155 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307156 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7157 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7158 msm_routing_put_audio_mixer),
7159 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7160 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7161 msm_routing_put_audio_mixer),
7162 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7163 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7164 msm_routing_put_audio_mixer),
7165 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7166 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7167 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307168 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7169 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7170 msm_routing_put_audio_mixer),
7171 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7172 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7173 msm_routing_put_audio_mixer),
7174};
7175
7176static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7177 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7178 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7179 msm_routing_put_audio_mixer),
7180 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7181 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7182 msm_routing_put_audio_mixer),
7183 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7184 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7185 msm_routing_put_audio_mixer),
7186 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7187 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7188 msm_routing_put_audio_mixer),
7189 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7190 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7191 msm_routing_put_audio_mixer),
7192 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7193 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7194 msm_routing_put_audio_mixer),
7195 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7196 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7197 msm_routing_put_audio_mixer),
7198 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7199 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7200 msm_routing_put_audio_mixer),
7201 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7202 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7203 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307204 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7205 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7206 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307207 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7208 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7209 msm_routing_put_audio_mixer),
7210 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7211 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7212 msm_routing_put_audio_mixer),
7213 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7214 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7215 msm_routing_put_audio_mixer),
7216 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7217 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7218 msm_routing_put_audio_mixer),
7219 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7220 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7221 msm_routing_put_audio_mixer),
7222 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7223 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7224 msm_routing_put_audio_mixer),
7225 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7226 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7227 msm_routing_put_audio_mixer),
7228 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7229 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7230 msm_routing_put_audio_mixer),
7231 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7232 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7233 msm_routing_put_audio_mixer),
7234 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7235 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7236 msm_routing_put_audio_mixer),
7237 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7238 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7239 msm_routing_put_audio_mixer),
7240 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7241 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7242 msm_routing_put_audio_mixer),
7243 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7244 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7245 msm_routing_put_audio_mixer),
7246 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7247 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7248 msm_routing_put_audio_mixer),
7249 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7250 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7251 msm_routing_put_audio_mixer),
7252 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7253 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7254 msm_routing_put_audio_mixer),
7255 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7256 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7257 msm_routing_put_audio_mixer),
7258 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7259 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7260 msm_routing_put_audio_mixer),
7261 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7262 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7263 msm_routing_put_audio_mixer),
7264 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7265 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7266 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307267 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7268 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7269 msm_routing_put_audio_mixer),
7270 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7271 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7272 msm_routing_put_audio_mixer),
7273 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7274 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7275 msm_routing_put_audio_mixer),
7276 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7277 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7278 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307279};
7280
7281static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7282 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7283 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7284 msm_routing_put_audio_mixer),
7285 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7286 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7287 msm_routing_put_audio_mixer),
7288 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7289 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7290 msm_routing_put_audio_mixer),
7291 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7292 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7293 msm_routing_put_audio_mixer),
7294 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7295 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7296 msm_routing_put_audio_mixer),
7297 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7298 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7299 msm_routing_put_audio_mixer),
7300 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7301 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7302 msm_routing_put_audio_mixer),
7303 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7304 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7305 msm_routing_put_audio_mixer),
7306 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7307 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7308 msm_routing_put_audio_mixer),
7309 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7310 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7311 msm_routing_put_audio_mixer),
7312 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7313 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7314 msm_routing_put_audio_mixer),
7315 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7316 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7317 msm_routing_put_audio_mixer),
7318 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7319 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7320 msm_routing_put_audio_mixer),
7321 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7322 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7323 msm_routing_put_audio_mixer),
7324 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7325 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7326 msm_routing_put_audio_mixer),
7327 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7328 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7329 msm_routing_put_audio_mixer),
7330 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7331 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7332 msm_routing_put_audio_mixer),
7333 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7334 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7335 msm_routing_put_audio_mixer),
7336 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7337 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7338 msm_routing_put_audio_mixer),
7339 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7340 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7341 msm_routing_put_audio_mixer),
7342 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7343 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7344 msm_routing_put_audio_mixer),
7345 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7346 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7347 msm_routing_put_audio_mixer),
7348 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7349 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7350 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307351 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7352 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7353 msm_routing_put_audio_mixer),
7354 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7355 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7356 msm_routing_put_audio_mixer),
7357 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7358 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7359 msm_routing_put_audio_mixer),
7360 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7361 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7362 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307363 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7364 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7365 msm_routing_put_audio_mixer),
7366 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7367 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7368 msm_routing_put_audio_mixer),
7369 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7370 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7371 msm_routing_put_audio_mixer),
7372 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7373 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7374 msm_routing_put_audio_mixer),
7375 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7376 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7377 msm_routing_put_audio_mixer),
7378 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7379 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7380 msm_routing_put_audio_mixer),
7381};
7382
7383static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7384 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7385 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7386 msm_routing_put_audio_mixer),
7387 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7388 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7389 msm_routing_put_audio_mixer),
7390 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7391 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7392 msm_routing_put_audio_mixer),
7393 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7394 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7395 msm_routing_put_audio_mixer),
7396 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7397 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7398 msm_routing_put_audio_mixer),
7399 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7400 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7401 msm_routing_put_audio_mixer),
7402 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7403 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7404 msm_routing_put_audio_mixer),
7405 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7406 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7407 msm_routing_put_audio_mixer),
7408 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7409 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7410 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307411 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7412 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7413 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307414 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7415 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7416 msm_routing_put_audio_mixer),
7417 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7418 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7419 msm_routing_put_audio_mixer),
7420 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7421 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7422 msm_routing_put_audio_mixer),
7423 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7424 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7425 msm_routing_put_audio_mixer),
7426 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7427 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7428 msm_routing_put_audio_mixer),
7429 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7430 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7431 msm_routing_put_audio_mixer),
7432 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7433 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7434 msm_routing_put_audio_mixer),
7435 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7436 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7437 msm_routing_put_audio_mixer),
7438 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7439 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7440 msm_routing_put_audio_mixer),
7441 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7442 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7443 msm_routing_put_audio_mixer),
7444 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7445 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7446 msm_routing_put_audio_mixer),
7447 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7448 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7449 msm_routing_put_audio_mixer),
7450 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7451 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7452 msm_routing_put_audio_mixer),
7453 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7454 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7455 msm_routing_put_audio_mixer),
7456 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7457 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7458 msm_routing_put_audio_mixer),
7459 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7460 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7461 msm_routing_put_audio_mixer),
7462 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7463 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7464 msm_routing_put_audio_mixer),
7465 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7466 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7467 msm_routing_put_audio_mixer),
7468 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7469 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7470 msm_routing_put_audio_mixer),
7471 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7472 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7473 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307474 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7475 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7476 msm_routing_put_audio_mixer),
7477 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7478 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7479 msm_routing_put_audio_mixer),
7480 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7481 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7482 msm_routing_put_audio_mixer),
7483 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7484 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7485 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307486 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7487 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7488 msm_routing_put_audio_mixer),
7489 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7490 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7491 msm_routing_put_audio_mixer),
7492 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7493 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7494 msm_routing_put_audio_mixer),
7495 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7496 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7497 msm_routing_put_audio_mixer),
7498 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7499 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7500 msm_routing_put_audio_mixer),
7501};
7502
7503static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7504 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7505 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7506 msm_routing_put_audio_mixer),
7507 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7508 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7509 msm_routing_put_audio_mixer),
7510 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7511 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7512 msm_routing_put_audio_mixer),
7513 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7514 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7515 msm_routing_put_audio_mixer),
7516 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7517 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7518 msm_routing_put_audio_mixer),
7519 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7520 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7521 msm_routing_put_audio_mixer),
7522 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7523 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7524 msm_routing_put_audio_mixer),
7525 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7526 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7527 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307528 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7529 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7530 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307531 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7532 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7533 msm_routing_put_audio_mixer),
7534 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7535 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7536 msm_routing_put_audio_mixer),
7537 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7538 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7539 msm_routing_put_audio_mixer),
7540 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7541 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7542 msm_routing_put_audio_mixer),
7543 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7544 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7545 msm_routing_put_audio_mixer),
7546 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7547 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7548 msm_routing_put_audio_mixer),
7549 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7550 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7551 msm_routing_put_audio_mixer),
7552 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7553 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7554 msm_routing_put_audio_mixer),
7555 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7556 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7557 msm_routing_put_audio_mixer),
7558 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7559 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7560 msm_routing_put_audio_mixer),
7561 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7562 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7563 msm_routing_put_audio_mixer),
7564 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7565 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7566 msm_routing_put_audio_mixer),
7567 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7568 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7569 msm_routing_put_audio_mixer),
7570 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7571 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7572 msm_routing_put_audio_mixer),
7573 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7574 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7575 msm_routing_put_audio_mixer),
7576 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7577 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7578 msm_routing_put_audio_mixer),
7579 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7580 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7581 msm_routing_put_audio_mixer),
7582 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7583 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7584 msm_routing_put_audio_mixer),
7585 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7586 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7587 msm_routing_put_audio_mixer),
7588 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7589 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7590 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307591 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7592 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7593 msm_routing_put_audio_mixer),
7594 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7595 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7596 msm_routing_put_audio_mixer),
7597 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7598 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7599 msm_routing_put_audio_mixer),
7600 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7601 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7602 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307603 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7604 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7605 msm_routing_put_audio_mixer),
7606};
7607
7608static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7609 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7610 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7611 msm_routing_put_audio_mixer),
7612 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7613 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7614 msm_routing_put_audio_mixer),
7615 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7616 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7617 msm_routing_put_audio_mixer),
7618 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7619 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7620 msm_routing_put_audio_mixer),
7621 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7622 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7623 msm_routing_put_audio_mixer),
7624 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7625 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7626 msm_routing_put_audio_mixer),
7627 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7628 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7629 msm_routing_put_audio_mixer),
7630 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7631 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7632 msm_routing_put_audio_mixer),
7633 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7634 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7635 msm_routing_put_audio_mixer),
7636 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7637 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7638 msm_routing_put_audio_mixer),
7639 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7640 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7641 msm_routing_put_audio_mixer),
7642 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7643 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7644 msm_routing_put_audio_mixer),
7645 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7646 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7647 msm_routing_put_audio_mixer),
7648 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7649 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7650 msm_routing_put_audio_mixer),
7651 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7652 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7653 msm_routing_put_audio_mixer),
7654 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7655 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7656 msm_routing_put_audio_mixer),
7657 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7658 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7659 msm_routing_put_audio_mixer),
7660 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7661 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7662 msm_routing_put_audio_mixer),
7663 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7664 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7665 msm_routing_put_audio_mixer),
7666 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7667 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7668 msm_routing_put_audio_mixer),
7669 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7670 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7671 msm_routing_put_audio_mixer),
7672 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7673 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7674 msm_routing_put_audio_mixer),
7675 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7676 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7677 msm_routing_put_audio_mixer),
7678 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7679 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7680 msm_routing_put_audio_mixer),
7681 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7682 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7683 msm_routing_put_audio_mixer),
7684 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7685 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7686 msm_routing_put_audio_mixer),
7687 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7688 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7689 msm_routing_put_audio_mixer),
7690 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7691 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7692 msm_routing_put_audio_mixer),
7693 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7694 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7695 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307696 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7697 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7698 msm_routing_put_audio_mixer),
7699 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7700 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7701 msm_routing_put_audio_mixer),
7702 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7703 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7704 msm_routing_put_audio_mixer),
7705 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7706 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7707 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307708 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7709 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7710 msm_routing_put_audio_mixer),
7711 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7712 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7713 msm_routing_put_audio_mixer),
7714};
7715
Asish Bhattacharya34504582017-08-08 12:55:01 +05307716static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7717 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7718 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7719 msm_routing_put_audio_mixer),
7720 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7721 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7722 msm_routing_put_audio_mixer),
7723 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7724 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7725 msm_routing_put_audio_mixer),
7726 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7727 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7728 msm_routing_put_audio_mixer),
7729 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7730 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7731 msm_routing_put_audio_mixer),
7732 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7733 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7734 msm_routing_put_audio_mixer),
7735 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7736 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7737 msm_routing_put_audio_mixer),
7738 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7739 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7740 msm_routing_put_audio_mixer),
7741 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7742 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7743 msm_routing_put_audio_mixer),
7744 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7745 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7746 msm_routing_put_audio_mixer),
7747 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7748 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7749 msm_routing_put_audio_mixer),
7750 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7751 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7752 msm_routing_put_audio_mixer),
7753 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7754 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7755 msm_routing_put_audio_mixer),
7756 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7757 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7758 msm_routing_put_audio_mixer),
7759 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7760 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7761 msm_routing_put_audio_mixer),
7762 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7763 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7764 msm_routing_put_audio_mixer),
7765 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7766 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7767 msm_routing_put_audio_mixer),
7768 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7769 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7770 msm_routing_put_audio_mixer),
7771 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7772 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7773 msm_routing_put_audio_mixer),
7774 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7775 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7776 msm_routing_put_audio_mixer),
7777 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7778 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7779 msm_routing_put_audio_mixer),
7780 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7781 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7782 msm_routing_put_audio_mixer),
7783 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7784 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7785 msm_routing_put_audio_mixer),
7786 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7787 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7788 msm_routing_put_audio_mixer),
7789 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7790 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7791 msm_routing_put_audio_mixer),
7792 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7793 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7794 msm_routing_put_audio_mixer),
7795 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7796 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7797 msm_routing_put_audio_mixer),
7798 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7799 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7800 msm_routing_put_audio_mixer),
7801 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7802 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7803 msm_routing_put_audio_mixer),
7804 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7805 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7806 msm_routing_put_audio_mixer),
7807 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7808 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7809 msm_routing_put_audio_mixer),
7810 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7811 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7812 msm_routing_put_audio_mixer),
7813 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7814 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7815 msm_routing_put_audio_mixer),
7816 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7817 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7818 msm_routing_put_audio_mixer),
7819 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7820 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7821 msm_routing_put_audio_mixer),
7822};
7823
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307824static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7825 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7826 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7827 msm_routing_put_audio_mixer),
7828 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7829 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7830 msm_routing_put_audio_mixer),
7831 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7832 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7833 msm_routing_put_audio_mixer),
7834 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7835 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7836 msm_routing_put_audio_mixer),
7837 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7838 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7839 msm_routing_put_audio_mixer),
7840 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7841 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7842 msm_routing_put_audio_mixer),
7843 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7844 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7845 msm_routing_put_audio_mixer),
7846 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7847 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7848 msm_routing_put_audio_mixer),
7849 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7850 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7851 msm_routing_put_audio_mixer),
7852 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7853 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7854 msm_routing_put_audio_mixer),
7855 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7856 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7857 msm_routing_put_audio_mixer),
7858 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7859 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7860 msm_routing_put_audio_mixer),
7861 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7862 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7863 msm_routing_put_audio_mixer),
7864 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7865 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7866 msm_routing_put_audio_mixer),
7867 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7868 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7869 msm_routing_put_audio_mixer),
7870 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7871 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7872 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307873 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7874 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7875 msm_routing_put_audio_mixer),
7876 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7877 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7878 msm_routing_put_audio_mixer),
7879 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7880 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7881 msm_routing_put_audio_mixer),
7882 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7883 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7884 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307885};
7886
Laxminath Kasam38070be2017-08-17 18:21:59 +05307887static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
7888 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7889 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7890 msm_routing_put_audio_mixer),
7891 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7892 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7893 msm_routing_put_audio_mixer),
7894 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7895 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7896 msm_routing_put_audio_mixer),
7897 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7898 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7899 msm_routing_put_audio_mixer),
7900 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7901 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7902 msm_routing_put_audio_mixer),
7903 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7904 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7905 msm_routing_put_audio_mixer),
7906 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7907 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7908 msm_routing_put_audio_mixer),
7909 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7910 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7911 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07007912 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7913 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7914 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307915 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7916 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7917 msm_routing_put_audio_mixer),
7918 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7919 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7920 msm_routing_put_audio_mixer),
7921 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7922 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7923 msm_routing_put_audio_mixer),
7924 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7925 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7926 msm_routing_put_audio_mixer),
7927 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7928 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7929 msm_routing_put_audio_mixer),
7930 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7931 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7932 msm_routing_put_audio_mixer),
7933 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7934 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7935 msm_routing_put_audio_mixer),
7936 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7937 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7938 msm_routing_put_audio_mixer),
7939 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7940 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7941 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007942 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7943 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7944 msm_routing_put_audio_mixer),
7945 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7946 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7947 msm_routing_put_audio_mixer),
7948 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7949 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7950 msm_routing_put_audio_mixer),
7951 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7952 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7953 msm_routing_put_audio_mixer),
7954 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7955 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7956 msm_routing_put_audio_mixer),
7957 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7958 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7959 msm_routing_put_audio_mixer),
7960 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7961 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7962 msm_routing_put_audio_mixer),
7963 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7964 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7965 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307966};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307967static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
7968 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7969 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7970 msm_routing_put_audio_mixer),
7971 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7972 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7973 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05307974 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7975 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7976 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307977 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7978 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7979 msm_routing_put_audio_mixer),
7980 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7981 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7982 msm_routing_put_audio_mixer),
7983 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7984 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7985 msm_routing_put_audio_mixer),
7986 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7987 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7988 msm_routing_put_audio_mixer),
7989 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7990 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7991 msm_routing_put_audio_mixer),
7992};
7993
7994static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
7995 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7996 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7997 msm_routing_put_audio_mixer),
7998 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7999 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8000 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308001 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8002 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8003 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308004 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8005 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8006 msm_routing_put_audio_mixer),
8007 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8008 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8009 msm_routing_put_audio_mixer),
8010 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8011 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8012 msm_routing_put_audio_mixer),
8013 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8014 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8015 msm_routing_put_audio_mixer),
8016 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8017 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8018 msm_routing_put_audio_mixer),
8019 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8020 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8021 msm_routing_put_audio_mixer),
8022};
8023
8024static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
8025 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8026 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8027 msm_routing_put_audio_mixer),
8028 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8029 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8030 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308031 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8032 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8033 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308034 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8035 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8036 msm_routing_put_audio_mixer),
8037 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8038 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8039 msm_routing_put_audio_mixer),
8040 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8041 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8042 msm_routing_put_audio_mixer),
8043 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8044 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8045 msm_routing_put_audio_mixer),
8046 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8047 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8048 msm_routing_put_audio_mixer),
8049};
8050
8051static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
8052 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8053 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8054 msm_routing_put_audio_mixer),
8055 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
8056 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8057 msm_routing_put_audio_mixer),
8058 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8059 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8060 msm_routing_put_audio_mixer),
8061 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8062 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8063 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308064 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
8065 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8066 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308067 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
8068 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8069 msm_routing_put_audio_mixer),
8070 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
8071 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8072 msm_routing_put_audio_mixer),
8073 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
8074 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8075 msm_routing_put_audio_mixer),
8076 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
8077 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8078 msm_routing_put_audio_mixer),
8079 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
8080 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8081 msm_routing_put_audio_mixer),
8082 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
8083 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8084 msm_routing_put_audio_mixer),
8085 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
8086 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8087 msm_routing_put_audio_mixer),
8088 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
8089 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8090 msm_routing_put_audio_mixer),
8091 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
8092 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8093 msm_routing_put_audio_mixer),
8094 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
8095 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8096 msm_routing_put_audio_mixer),
8097 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
8098 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8099 msm_routing_put_audio_mixer),
8100 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
8101 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8102 msm_routing_put_audio_mixer),
8103 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
8104 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8105 msm_routing_put_audio_mixer),
8106 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
8107 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8108 msm_routing_put_audio_mixer),
8109 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
8110 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8111 msm_routing_put_audio_mixer),
8112 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
8113 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8114 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308115 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
8116 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8117 msm_routing_put_audio_mixer),
8118 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
8119 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8120 msm_routing_put_audio_mixer),
8121 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
8122 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8123 msm_routing_put_audio_mixer),
8124 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
8125 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8126 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308127};
8128
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308129static const struct snd_kcontrol_new mmul28_mixer_controls[] = {
8130 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8131 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8132 msm_routing_put_audio_mixer),
8133 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8134 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8135 msm_routing_put_audio_mixer),
8136 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8137 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8138 msm_routing_put_audio_mixer),
8139 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8140 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8141 msm_routing_put_audio_mixer),
8142 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8143 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8144 msm_routing_put_audio_mixer),
8145 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8146 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8147 msm_routing_put_audio_mixer),
8148 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8149 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8150 msm_routing_put_audio_mixer),
8151 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8152 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8153 msm_routing_put_audio_mixer),
8154};
8155
8156static const struct snd_kcontrol_new mmul29_mixer_controls[] = {
8157 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8158 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8159 msm_routing_put_audio_mixer),
8160 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8161 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8162 msm_routing_put_audio_mixer),
8163 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8164 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8165 msm_routing_put_audio_mixer),
8166 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8167 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8168 msm_routing_put_audio_mixer),
8169 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8170 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8171 msm_routing_put_audio_mixer),
8172 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8173 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8174 msm_routing_put_audio_mixer),
8175 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8176 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8177 msm_routing_put_audio_mixer),
8178 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8179 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8180 msm_routing_put_audio_mixer),
8181};
8182
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308183static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308184 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
8185 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8186 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308187 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
8188 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8189 msm_routing_put_voice_mixer),
8190 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
8191 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8192 msm_routing_put_voice_mixer),
8193 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
8194 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8195 msm_routing_put_voice_mixer),
8196 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
8197 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8198 msm_routing_put_voice_mixer),
8199};
8200
8201static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308202 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
8203 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8204 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308205 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
8206 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8207 msm_routing_put_voice_mixer),
8208 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
8209 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8210 msm_routing_put_voice_mixer),
8211};
8212
8213static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308214 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8215 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8216 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308217 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8218 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8219 msm_routing_put_voice_mixer),
8220 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8221 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8222 msm_routing_put_voice_mixer),
8223 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8224 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8225 msm_routing_put_voice_mixer),
8226 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8227 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8228 msm_routing_put_voice_mixer),
8229};
8230
8231static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308232 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8233 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8234 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308235 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8236 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8237 msm_routing_put_voice_mixer),
8238 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8239 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8240 msm_routing_put_voice_mixer),
8241 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8242 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8243 msm_routing_put_voice_mixer),
8244 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8245 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8246 msm_routing_put_voice_mixer),
8247};
8248
8249static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308250 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8251 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8252 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308253 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8254 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8255 msm_routing_put_voice_mixer),
8256 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8257 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8258 msm_routing_put_voice_mixer),
8259 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8260 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8261 msm_routing_put_voice_mixer),
8262 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8263 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8264 msm_routing_put_voice_mixer),
8265};
8266
8267static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308268 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8269 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8270 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308271 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8272 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8273 msm_routing_put_voice_mixer),
8274 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8275 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8276 msm_routing_put_voice_mixer),
8277 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8278 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8279 msm_routing_put_voice_mixer),
8280 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8281 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8282 msm_routing_put_voice_mixer),
8283};
8284
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008285static const struct snd_kcontrol_new display_port_rx_voice_mixer_controls[] = {
8286 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8287 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8288 msm_routing_put_voice_mixer),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008289 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8290 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8291 msm_routing_put_voice_mixer),
8292 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8293 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8294 msm_routing_put_voice_mixer),
8295 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8296 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8297 msm_routing_put_voice_mixer),
8298 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8299 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8300 msm_routing_put_voice_mixer),
8301};
8302
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308303static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308304 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8305 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8306 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308307 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8308 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8309 msm_routing_put_voice_mixer),
8310 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8311 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8312 msm_routing_put_voice_mixer),
8313 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8314 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8315 msm_routing_put_voice_mixer),
8316 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8317 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8318 msm_routing_put_voice_mixer),
8319};
8320
8321static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308322 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8323 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8324 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308325 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8326 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8327 msm_routing_put_voice_mixer),
8328 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8329 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8330 msm_routing_put_voice_mixer),
8331 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8332 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8333 msm_routing_put_voice_mixer),
8334 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8335 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8336 msm_routing_put_voice_mixer),
8337};
8338
8339static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308340 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8341 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8342 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308343 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8344 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8345 msm_routing_put_voice_mixer),
8346 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8347 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8348 msm_routing_put_voice_mixer),
8349 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8350 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8351 msm_routing_put_voice_mixer),
8352 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8353 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8354 msm_routing_put_voice_mixer),
8355};
8356
8357static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8358 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8359 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8360 msm_routing_put_voice_mixer),
8361 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8362 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8363 msm_routing_put_voice_mixer),
8364 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8365 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8366 msm_routing_put_voice_mixer),
8367 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8368 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8369 msm_routing_put_voice_mixer),
8370 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8371 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8372 msm_routing_put_voice_mixer),
8373};
8374
8375static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8376 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8377 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8378 msm_routing_put_voice_mixer),
8379 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8380 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8381 msm_routing_put_voice_mixer),
8382 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8383 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8384 msm_routing_put_voice_mixer),
8385 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8386 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8387 msm_routing_put_voice_mixer),
8388 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8389 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8390 msm_routing_put_voice_mixer),
8391};
8392
8393static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308394 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8395 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8396 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308397 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8398 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8399 msm_routing_put_voice_mixer),
8400 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8401 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8402 msm_routing_put_voice_mixer),
8403 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8404 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8405 msm_routing_put_voice_mixer),
8406 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8407 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8408 msm_routing_put_voice_mixer),
8409};
8410
8411static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308412 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8413 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8414 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308415 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8416 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8417 msm_routing_put_voice_mixer),
8418 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8419 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8420 msm_routing_put_voice_mixer),
8421 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8422 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8423 msm_routing_put_voice_mixer),
8424 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8425 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8426 msm_routing_put_voice_mixer),
8427};
8428
8429static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308430 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8431 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8432 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308433 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8434 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8435 msm_routing_put_voice_mixer),
8436 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8437 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8438 msm_routing_put_voice_mixer),
8439 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8440 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8441 msm_routing_put_voice_mixer),
8442 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8443 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8444 msm_routing_put_voice_mixer),
8445};
8446
8447static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308448 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8449 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8450 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308451 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8452 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8453 msm_routing_put_voice_mixer),
8454 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8455 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8456 msm_routing_put_voice_mixer),
8457 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8458 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8459 msm_routing_put_voice_mixer),
8460 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8461 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8462 msm_routing_put_voice_mixer),
8463};
8464
8465static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308466 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8467 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8468 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308469 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8470 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8471 msm_routing_put_voice_mixer),
8472 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8473 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8474 msm_routing_put_voice_mixer),
8475 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8476 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8477 msm_routing_put_voice_mixer),
8478 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8479 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8480 msm_routing_put_voice_mixer),
8481};
8482
8483static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308484 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8485 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8486 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308487 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8488 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8489 msm_routing_put_voice_mixer),
8490 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8491 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8492 msm_routing_put_voice_mixer),
8493 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8494 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8495 msm_routing_put_voice_mixer),
8496 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8497 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8498 msm_routing_put_voice_mixer),
8499};
8500
8501static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308502 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8503 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8504 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308505 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8506 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8507 msm_routing_put_voice_mixer),
8508 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8509 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8510 msm_routing_put_voice_mixer),
8511 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8512 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8513 msm_routing_put_voice_mixer),
8514 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8515 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8516 msm_routing_put_voice_mixer),
8517};
8518
8519static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308520 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8521 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8522 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308523 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8524 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8525 msm_routing_put_voice_mixer),
8526 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8527 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8528 msm_routing_put_voice_mixer),
8529 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8530 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8531 msm_routing_put_voice_mixer),
8532 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8533 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8534 msm_routing_put_voice_mixer),
8535};
8536
Rohit Kumara5077932017-09-10 22:05:05 +05308537static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Rohit Kumara5077932017-09-10 22:05:05 +05308538 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8539 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8540 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308541 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8542 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8543 msm_routing_put_voice_mixer),
8544 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8545 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8546 msm_routing_put_voice_mixer),
8547 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8548 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8549 msm_routing_put_voice_mixer),
8550 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8551 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8552 msm_routing_put_voice_mixer),
8553};
8554
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308555static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308556 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8557 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8558 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308559 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8560 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8561 msm_routing_put_voice_mixer),
8562 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8563 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8564 msm_routing_put_voice_mixer),
8565 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8566 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8567 msm_routing_put_voice_mixer),
8568 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8569 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8570 msm_routing_put_voice_mixer),
8571};
8572
Raja Mallik321d5712018-05-04 17:22:11 +05308573static const struct snd_kcontrol_new pri_tdm_rx_0_voice_mixer_controls[] = {
8574 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8575 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8576 msm_routing_put_voice_mixer),
8577 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8578 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8579 msm_routing_put_voice_stub_mixer),
8580 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8581 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8582 msm_routing_put_voice_stub_mixer),
8583 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8584 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8585 msm_routing_put_voice_mixer),
8586 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8587 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8588 msm_routing_put_voice_mixer),
8589 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8590 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8591 msm_routing_put_voice_mixer),
8592 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8593 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8594 msm_routing_put_voice_mixer),
8595 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8596 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8597 msm_routing_put_voice_mixer),
8598};
8599
8600static const struct snd_kcontrol_new pri_tdm_rx_1_voice_mixer_controls[] = {
8601 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8602 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8603 msm_routing_put_voice_mixer),
8604 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8605 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8606 msm_routing_put_voice_stub_mixer),
8607 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8608 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8609 msm_routing_put_voice_stub_mixer),
8610 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8611 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8612 msm_routing_put_voice_mixer),
8613 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8614 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8615 msm_routing_put_voice_mixer),
8616 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8617 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8618 msm_routing_put_voice_mixer),
8619 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8620 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8621 msm_routing_put_voice_mixer),
8622 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8623 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8624 msm_routing_put_voice_mixer),
8625};
8626
8627static const struct snd_kcontrol_new pri_tdm_rx_2_voice_mixer_controls[] = {
8628 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8629 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8630 msm_routing_put_voice_mixer),
8631 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8632 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8633 msm_routing_put_voice_stub_mixer),
8634 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8635 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8636 msm_routing_put_voice_stub_mixer),
8637 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8638 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8639 msm_routing_put_voice_mixer),
8640 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8641 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8642 msm_routing_put_voice_mixer),
8643 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8644 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8645 msm_routing_put_voice_mixer),
8646 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8647 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8648 msm_routing_put_voice_mixer),
8649 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8650 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8651 msm_routing_put_voice_mixer),
8652};
8653
8654static const struct snd_kcontrol_new pri_tdm_rx_3_voice_mixer_controls[] = {
8655 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8656 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8657 msm_routing_put_voice_mixer),
8658 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8659 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8660 msm_routing_put_voice_stub_mixer),
8661 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8662 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8663 msm_routing_put_voice_stub_mixer),
8664 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8665 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8666 msm_routing_put_voice_mixer),
8667 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8668 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8669 msm_routing_put_voice_mixer),
8670 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8671 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8672 msm_routing_put_voice_mixer),
8673 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8674 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8675 msm_routing_put_voice_mixer),
8676 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8677 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8678 msm_routing_put_voice_mixer),
8679};
8680
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308681static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308682 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8683 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8684 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308685 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8686 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8687 msm_routing_put_voice_mixer),
8688 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8689 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8690 msm_routing_put_voice_mixer),
8691 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8692 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8693 msm_routing_put_voice_mixer),
8694 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8695 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8696 msm_routing_put_voice_mixer),
8697};
8698
8699static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308700 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8701 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8702 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308703 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8704 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8705 msm_routing_put_voice_mixer),
8706 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8707 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8708 msm_routing_put_voice_mixer),
8709 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8710 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8711 msm_routing_put_voice_mixer),
8712 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8713 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8714 msm_routing_put_voice_mixer),
8715};
8716
8717static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8718 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8719 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8720 msm_routing_put_voice_mixer),
8721};
8722
8723static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008724 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_EXTPROC_RX,
8725 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8726 msm_routing_put_voice_mixer),
8727 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_EXTPROC_RX,
8728 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8729 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308730};
8731
8732static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008733 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8734 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8735 msm_routing_put_voice_mixer),
8736 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8737 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8738 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308739};
8740
8741static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008742 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8743 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8744 msm_routing_put_voice_mixer),
8745 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8746 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8747 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308748};
8749
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308750static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8751 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8752 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8753 msm_routing_put_voice_mixer),
8754 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8755 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8756 msm_routing_put_voice_mixer),
8757 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8758 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8759 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8760 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8761 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8762 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8763 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8764 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8765 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8766 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8767 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8768 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8769 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8770 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8771 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8772 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8773 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8774 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8775 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8776 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8777 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308778 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
8779 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8780 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308781 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8782 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8783 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8784 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8785 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8786 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8787 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8788 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8789 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8790 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8791 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8792 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8793 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8794 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8795 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8796 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8797 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8798 msm_routing_put_voice_mixer),
8799 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8800 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8801 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05308802 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode1",
8803 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE1,
8804 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308805 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode1",
8806 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8807 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8808 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode1",
8809 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8810 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308811};
8812
8813static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8814 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8815 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8816 msm_routing_put_voice_mixer),
8817 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8818 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8819 msm_routing_put_voice_mixer),
8820 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8821 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8822 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8823 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
8824 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8825 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8826 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
8827 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8828 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8829 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
8830 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8831 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8832 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
8833 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8834 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8835 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
8836 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8837 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8838 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
8839 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8840 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308841 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
8842 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8843 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308844 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
8845 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8846 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8847 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
8848 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8849 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05308850 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode2",
8851 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE2,
8852 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308853 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
8854 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8855 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8856 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
8857 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8858 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8859 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
8860 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8861 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8862 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
8863 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8864 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308865 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode2",
8866 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8867 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8868 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode2",
8869 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8870 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308871};
8872
8873static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
8874 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
8875 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8876 msm_routing_put_voice_mixer),
8877 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
8878 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8879 msm_routing_put_voice_mixer),
8880 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8881 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8882 msm_routing_put_voice_mixer),
8883 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8884 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8885 msm_routing_put_voice_mixer),
8886 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
8887 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8888 msm_routing_put_voice_mixer),
8889 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
8890 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8891 msm_routing_put_voice_mixer),
8892 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8893 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8894 msm_routing_put_voice_mixer),
8895 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8896 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8897 msm_routing_put_voice_mixer),
8898 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8899 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8900 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308901 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8902 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8903 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308904 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
8905 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8906 msm_routing_put_voice_mixer),
8907 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8908 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8909 msm_routing_put_voice_mixer),
8910 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
8911 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8912 msm_routing_put_voice_mixer),
8913 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8914 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8915 msm_routing_put_voice_mixer),
8916 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8917 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8918 msm_routing_put_voice_mixer),
8919 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
8920 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8921 msm_routing_put_voice_mixer),
8922};
8923
8924static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
8925 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8926 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8927 msm_routing_put_voice_stub_mixer),
8928 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8929 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8930 msm_routing_put_voice_stub_mixer),
8931 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8932 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8933 msm_routing_put_voice_stub_mixer),
8934 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8935 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8936 msm_routing_put_voice_stub_mixer),
8937 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
8938 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8939 msm_routing_put_voice_stub_mixer),
8940 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8941 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8942 msm_routing_put_voice_stub_mixer),
8943 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8944 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8945 msm_routing_put_voice_stub_mixer),
8946 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8947 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8948 msm_routing_put_voice_stub_mixer),
8949 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8950 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8951 msm_routing_put_voice_stub_mixer),
8952 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8953 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8954 msm_routing_put_voice_stub_mixer),
8955 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8956 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8957 msm_routing_put_voice_stub_mixer),
8958 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8959 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8960 msm_routing_put_voice_stub_mixer),
8961 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8962 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8963 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308964 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8965 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8966 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308967 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8968 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8969 msm_routing_put_voice_stub_mixer),
8970 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8971 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8972 msm_routing_put_voice_stub_mixer),
8973 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8974 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8975 msm_routing_put_voice_stub_mixer),
8976 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8977 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8978 msm_routing_put_voice_stub_mixer),
8979 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8980 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8981 msm_routing_put_voice_stub_mixer),
8982};
8983
8984static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
8985 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8986 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8987 msm_routing_put_voice_stub_mixer),
8988 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8989 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8990 msm_routing_put_voice_stub_mixer),
8991 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8992 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8993 msm_routing_put_voice_stub_mixer),
8994 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8995 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8996 msm_routing_put_voice_stub_mixer),
8997 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8998 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8999 msm_routing_put_voice_stub_mixer),
9000 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9001 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9002 msm_routing_put_voice_stub_mixer),
9003 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9004 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9005 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309006 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9007 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9008 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309009 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9010 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9011 msm_routing_put_voice_stub_mixer),
9012 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9013 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9014 msm_routing_put_voice_stub_mixer),
9015 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9016 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9017 msm_routing_put_voice_stub_mixer),
9018 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9019 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9020 msm_routing_put_voice_stub_mixer),
9021 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9022 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9023 msm_routing_put_voice_stub_mixer),
9024 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9025 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9026 msm_routing_put_voice_stub_mixer),
9027 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9028 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9029 msm_routing_put_voice_stub_mixer),
9030};
9031
9032static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
9033 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9034 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9035 msm_routing_put_voice_stub_mixer),
9036 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9037 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9038 msm_routing_put_voice_stub_mixer),
9039 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9040 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9041 msm_routing_put_voice_stub_mixer),
9042 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9043 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9044 msm_routing_put_voice_stub_mixer),
9045 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9046 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9047 msm_routing_put_voice_stub_mixer),
9048 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9049 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9050 msm_routing_put_voice_stub_mixer),
9051 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9052 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9053 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309054 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9055 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9056 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309057 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9058 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9059 msm_routing_put_voice_stub_mixer),
9060 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9061 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9062 msm_routing_put_voice_stub_mixer),
9063 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9064 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9065 msm_routing_put_voice_stub_mixer),
9066 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9067 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9068 msm_routing_put_voice_stub_mixer),
9069 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9070 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9071 msm_routing_put_voice_stub_mixer),
9072 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9073 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9074 msm_routing_put_voice_stub_mixer),
9075 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9076 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9077 msm_routing_put_voice_stub_mixer),
9078};
9079
9080static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
9081 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
9082 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9083 msm_routing_put_voice_mixer),
9084 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9085 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9086 msm_routing_put_voice_mixer),
9087 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
9088 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
9089 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9090 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
9091 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9092 msm_routing_put_voice_mixer),
9093 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
9094 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9095 msm_routing_put_voice_mixer),
9096 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9097 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9098 msm_routing_put_voice_mixer),
9099 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9100 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9101 msm_routing_put_voice_mixer),
9102 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9103 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9104 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309105 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9106 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9107 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309108 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
9109 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9110 msm_routing_put_voice_mixer),
9111 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
9112 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9113 msm_routing_put_voice_mixer),
9114 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9115 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9116 msm_routing_put_voice_mixer),
9117 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
9118 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9119 msm_routing_put_voice_mixer),
9120 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9121 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9122 msm_routing_put_voice_mixer),
9123 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9124 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9125 msm_routing_put_voice_mixer),
9126 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
9127 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9128 msm_routing_put_voice_mixer),
9129};
9130
9131static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
9132 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9133 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9134 msm_routing_put_port_mixer),
9135 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9136 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9137 msm_routing_put_port_mixer),
9138 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9139 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9140 msm_routing_put_port_mixer),
9141 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9142 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9143 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309144 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9145 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9146 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309147 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9148 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9149 msm_routing_put_port_mixer),
9150 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9151 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9152 msm_routing_put_port_mixer),
9153 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9154 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9155 msm_routing_put_port_mixer),
9156 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9157 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9158 msm_routing_put_port_mixer),
9159 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9160 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9161 msm_routing_put_port_mixer),
9162};
9163
9164static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
9165 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9166 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9167 msm_routing_put_port_mixer),
9168 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9169 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9170 msm_routing_put_port_mixer),
9171 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9172 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9173 msm_routing_put_port_mixer),
9174 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9175 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9176 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309177 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9178 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9179 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309180 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9181 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9182 msm_routing_put_port_mixer),
9183 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9184 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9185 msm_routing_put_port_mixer),
9186 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9187 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9188 msm_routing_put_port_mixer),
9189 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9190 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9191 msm_routing_put_port_mixer),
9192 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9193 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9194 msm_routing_put_port_mixer),
9195};
9196
9197static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
9198 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9199 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9200 msm_routing_put_port_mixer),
9201 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9202 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9203 msm_routing_put_port_mixer),
9204 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9205 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9206 msm_routing_put_port_mixer),
9207 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9208 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9209 msm_routing_put_port_mixer),
9210 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9211 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9212 msm_routing_put_port_mixer),
9213 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9214 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9215 msm_routing_put_port_mixer),
9216 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9217 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9218 msm_routing_put_port_mixer),
9219 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9220 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9221 msm_routing_put_port_mixer),
9222 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9223 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9224 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309225 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9226 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9227 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309228 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9229 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9230 msm_routing_put_port_mixer),
9231 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9232 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9233 msm_routing_put_port_mixer),
9234 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9235 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9236 msm_routing_put_port_mixer),
9237 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9238 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9239 msm_routing_put_port_mixer),
9240 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9241 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9242 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309243 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9244 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9245 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309246 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9247 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9248 msm_routing_put_port_mixer),
9249 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9250 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9251 msm_routing_put_port_mixer),
9252 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9253 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9254 msm_routing_put_port_mixer),
9255 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9256 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9257 msm_routing_put_port_mixer),
9258 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9259 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9260 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309261 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9262 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9263 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309264};
9265
9266static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
9267 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9268 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9269 msm_routing_put_port_mixer),
9270 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9271 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9272 msm_routing_put_port_mixer),
9273 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9274 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9275 msm_routing_put_port_mixer),
9276 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9277 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9278 msm_routing_put_port_mixer),
9279 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
9280 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
9281 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009282 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9283 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9284 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309285};
9286
9287static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
9288 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9289 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9290 msm_routing_put_port_mixer),
9291 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9292 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9293 msm_routing_put_port_mixer),
9294 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9295 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9296 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009297 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9298 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9299 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309300};
9301
9302static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
9303 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9304 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9305 msm_routing_put_port_mixer),
9306 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9307 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9308 msm_routing_put_port_mixer),
9309 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9310 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9311 msm_routing_put_port_mixer),
9312};
9313
9314static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
9315 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9316 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9317 msm_routing_put_port_mixer),
9318 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9319 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9320 msm_routing_put_port_mixer),
9321 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9322 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9323 msm_routing_put_port_mixer),
9324};
9325
Rohit Kumara5077932017-09-10 22:05:05 +05309326static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
9327 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9328 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9329 msm_routing_put_port_mixer),
9330 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9331 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9332 msm_routing_put_port_mixer),
9333 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9334 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9335 msm_routing_put_port_mixer),
9336};
9337
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309338static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9339 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9340 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9341 msm_routing_put_port_mixer),
9342 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9343 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9344 msm_routing_put_port_mixer),
9345 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9346 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9347 msm_routing_put_port_mixer),
9348 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9349 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9350 msm_routing_put_port_mixer),
9351 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9352 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9353 msm_routing_put_port_mixer),
9354 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9355 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9356 msm_routing_put_port_mixer),
9357};
9358
9359static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9360 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9361 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9362 msm_routing_put_port_mixer),
9363 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9364 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9365 msm_routing_put_port_mixer),
9366 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9367 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9368 msm_routing_put_port_mixer),
9369 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9370 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9371 msm_routing_put_port_mixer),
9372 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9373 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9374 msm_routing_put_port_mixer),
9375};
9376
9377static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9378 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9379 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9380 msm_routing_put_port_mixer),
9381 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9382 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9383 msm_routing_put_port_mixer),
9384 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9385 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9386 msm_routing_put_port_mixer),
9387 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9388 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9389 msm_routing_put_port_mixer),
9390 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9391 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9392 msm_routing_put_port_mixer),
9393 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9394 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9395 msm_routing_put_port_mixer),
9396 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9397 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9398 msm_routing_put_port_mixer),
9399 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9400 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9401 msm_routing_put_port_mixer),
9402 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9403 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9404 msm_routing_put_port_mixer),
9405 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9406 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9407 msm_routing_put_port_mixer),
9408 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9409 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9410 msm_routing_put_port_mixer),
9411 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9412 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9413 msm_routing_put_port_mixer),
9414};
9415
9416static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9417 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9418 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9419 msm_routing_put_port_mixer),
9420 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9421 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9422 msm_routing_put_port_mixer),
9423};
9424
9425static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9426 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9427 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9428 msm_routing_put_port_mixer),
9429 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9430 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9431 msm_routing_put_port_mixer),
9432};
9433
9434
9435static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9436 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9437 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9438 msm_routing_put_port_mixer),
9439};
9440
9441static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9442 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9443 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9444 msm_routing_put_port_mixer),
9445};
9446
9447static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9448 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9449 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9450 msm_routing_put_port_mixer),
9451};
9452
9453static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9454 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9455 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9456 msm_routing_put_port_mixer),
9457 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9458 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9459 msm_routing_put_port_mixer),
9460};
9461
9462static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9463 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9464 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9465 msm_routing_put_port_mixer),
9466 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9467 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9468 msm_routing_put_port_mixer),
9469 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9470 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9471 msm_routing_put_port_mixer),
9472 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9473 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9474 msm_routing_put_port_mixer),
9475 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9476 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9477 msm_routing_put_port_mixer),
9478 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9479 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9480 msm_routing_put_port_mixer),
9481 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9482 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9483 msm_routing_put_port_mixer),
9484 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9485 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9486 msm_routing_put_port_mixer),
9487 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9488 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9489 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009490 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9491 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9492 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309493};
9494
9495static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9496 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9497 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9498 msm_routing_put_port_mixer),
9499};
9500
9501static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9502 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9503 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9504 msm_routing_put_port_mixer),
9505 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9506 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9507 msm_routing_put_port_mixer),
9508 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9509 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9510 msm_routing_put_port_mixer),
9511 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9512 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9513 msm_routing_put_port_mixer),
9514 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9515 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9516 msm_routing_put_port_mixer),
9517 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9518 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9519 msm_routing_put_port_mixer),
9520 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9521 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9522 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309523 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9524 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9525 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309526 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9527 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9528 msm_routing_put_port_mixer),
9529};
9530
Rohit Kumara5077932017-09-10 22:05:05 +05309531static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9532 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9533 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9534 msm_routing_put_port_mixer),
9535 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9536 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9537 msm_routing_put_port_mixer),
9538 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9539 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9540 msm_routing_put_port_mixer),
9541 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9542 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9543 msm_routing_put_port_mixer),
9544 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9545 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9546 msm_routing_put_port_mixer),
9547 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9548 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9549 msm_routing_put_port_mixer),
9550 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9551 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9552 msm_routing_put_port_mixer),
9553};
9554
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309555static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9556 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9557 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9558 msm_routing_get_port_mixer,
9559 msm_routing_put_port_mixer),
9560 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9561 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9562 msm_routing_get_port_mixer,
9563 msm_routing_put_port_mixer),
9564 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9565 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9566 msm_routing_get_port_mixer,
9567 msm_routing_put_port_mixer),
9568 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9569 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9570 msm_routing_get_port_mixer,
9571 msm_routing_put_port_mixer),
9572 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9573 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9574 msm_routing_get_port_mixer,
9575 msm_routing_put_port_mixer),
9576 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9577 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9578 msm_routing_get_port_mixer,
9579 msm_routing_put_port_mixer),
9580 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9581 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9582 msm_routing_get_port_mixer,
9583 msm_routing_put_port_mixer),
9584 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9585 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9586 msm_routing_get_port_mixer,
9587 msm_routing_put_port_mixer),
9588 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9589 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9590 msm_routing_get_port_mixer,
9591 msm_routing_put_port_mixer),
9592 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9593 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9594 msm_routing_get_port_mixer,
9595 msm_routing_put_port_mixer),
9596 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9597 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9598 msm_routing_get_port_mixer,
9599 msm_routing_put_port_mixer),
9600 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9601 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9602 msm_routing_get_port_mixer,
9603 msm_routing_put_port_mixer),
9604 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9605 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9606 msm_routing_get_port_mixer,
9607 msm_routing_put_port_mixer),
9608 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9609 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9610 msm_routing_get_port_mixer,
9611 msm_routing_put_port_mixer),
9612 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9613 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9614 msm_routing_get_port_mixer,
9615 msm_routing_put_port_mixer),
9616 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9617 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9618 msm_routing_get_port_mixer,
9619 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309620 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9621 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9622 msm_routing_get_port_mixer,
9623 msm_routing_put_port_mixer),
9624 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9625 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9626 msm_routing_get_port_mixer,
9627 msm_routing_put_port_mixer),
9628 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9629 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9630 msm_routing_get_port_mixer,
9631 msm_routing_put_port_mixer),
9632 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9633 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9634 msm_routing_get_port_mixer,
9635 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309636};
9637
9638static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9639 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9640 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9641 msm_routing_get_port_mixer,
9642 msm_routing_put_port_mixer),
9643 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9644 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9645 msm_routing_get_port_mixer,
9646 msm_routing_put_port_mixer),
9647 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9648 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9649 msm_routing_get_port_mixer,
9650 msm_routing_put_port_mixer),
9651 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9652 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9653 msm_routing_get_port_mixer,
9654 msm_routing_put_port_mixer),
9655 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9656 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9657 msm_routing_get_port_mixer,
9658 msm_routing_put_port_mixer),
9659 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9660 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9661 msm_routing_get_port_mixer,
9662 msm_routing_put_port_mixer),
9663 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9664 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9665 msm_routing_get_port_mixer,
9666 msm_routing_put_port_mixer),
9667 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9668 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9669 msm_routing_get_port_mixer,
9670 msm_routing_put_port_mixer),
9671 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9672 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9673 msm_routing_get_port_mixer,
9674 msm_routing_put_port_mixer),
9675 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9676 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9677 msm_routing_get_port_mixer,
9678 msm_routing_put_port_mixer),
9679 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9680 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9681 msm_routing_get_port_mixer,
9682 msm_routing_put_port_mixer),
9683 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9684 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9685 msm_routing_get_port_mixer,
9686 msm_routing_put_port_mixer),
9687 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9688 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9689 msm_routing_get_port_mixer,
9690 msm_routing_put_port_mixer),
9691 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9692 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9693 msm_routing_get_port_mixer,
9694 msm_routing_put_port_mixer),
9695 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9696 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9697 msm_routing_get_port_mixer,
9698 msm_routing_put_port_mixer),
9699 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9700 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9701 msm_routing_get_port_mixer,
9702 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309703 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9704 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9705 msm_routing_get_port_mixer,
9706 msm_routing_put_port_mixer),
9707 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9708 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9709 msm_routing_get_port_mixer,
9710 msm_routing_put_port_mixer),
9711 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9712 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9713 msm_routing_get_port_mixer,
9714 msm_routing_put_port_mixer),
9715 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9716 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9717 msm_routing_get_port_mixer,
9718 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309719};
9720
9721static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9722 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9723 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9724 msm_routing_get_port_mixer,
9725 msm_routing_put_port_mixer),
9726 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9727 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9728 msm_routing_get_port_mixer,
9729 msm_routing_put_port_mixer),
9730 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9731 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9732 msm_routing_get_port_mixer,
9733 msm_routing_put_port_mixer),
9734 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9735 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9736 msm_routing_get_port_mixer,
9737 msm_routing_put_port_mixer),
9738 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9739 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9740 msm_routing_get_port_mixer,
9741 msm_routing_put_port_mixer),
9742 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9743 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9744 msm_routing_get_port_mixer,
9745 msm_routing_put_port_mixer),
9746 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9747 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9748 msm_routing_get_port_mixer,
9749 msm_routing_put_port_mixer),
9750 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9751 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9752 msm_routing_get_port_mixer,
9753 msm_routing_put_port_mixer),
9754 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9755 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9756 msm_routing_get_port_mixer,
9757 msm_routing_put_port_mixer),
9758 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9759 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9760 msm_routing_get_port_mixer,
9761 msm_routing_put_port_mixer),
9762 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9763 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9764 msm_routing_get_port_mixer,
9765 msm_routing_put_port_mixer),
9766 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9767 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9768 msm_routing_get_port_mixer,
9769 msm_routing_put_port_mixer),
9770 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9771 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9772 msm_routing_get_port_mixer,
9773 msm_routing_put_port_mixer),
9774 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9775 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9776 msm_routing_get_port_mixer,
9777 msm_routing_put_port_mixer),
9778 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9779 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9780 msm_routing_get_port_mixer,
9781 msm_routing_put_port_mixer),
9782 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9783 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9784 msm_routing_get_port_mixer,
9785 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309786 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9787 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9788 msm_routing_get_port_mixer,
9789 msm_routing_put_port_mixer),
9790 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9791 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9792 msm_routing_get_port_mixer,
9793 msm_routing_put_port_mixer),
9794 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9795 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9796 msm_routing_get_port_mixer,
9797 msm_routing_put_port_mixer),
9798 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9799 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9800 msm_routing_get_port_mixer,
9801 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309802};
9803
9804static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9805 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9806 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9807 msm_routing_get_port_mixer,
9808 msm_routing_put_port_mixer),
9809 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9810 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9811 msm_routing_get_port_mixer,
9812 msm_routing_put_port_mixer),
9813 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9814 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9815 msm_routing_get_port_mixer,
9816 msm_routing_put_port_mixer),
9817 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9818 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9819 msm_routing_get_port_mixer,
9820 msm_routing_put_port_mixer),
9821 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9822 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9823 msm_routing_get_port_mixer,
9824 msm_routing_put_port_mixer),
9825 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9826 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9827 msm_routing_get_port_mixer,
9828 msm_routing_put_port_mixer),
9829 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9830 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9831 msm_routing_get_port_mixer,
9832 msm_routing_put_port_mixer),
9833 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9834 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9835 msm_routing_get_port_mixer,
9836 msm_routing_put_port_mixer),
9837 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9838 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9839 msm_routing_get_port_mixer,
9840 msm_routing_put_port_mixer),
9841 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9842 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9843 msm_routing_get_port_mixer,
9844 msm_routing_put_port_mixer),
9845 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9846 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9847 msm_routing_get_port_mixer,
9848 msm_routing_put_port_mixer),
9849 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9850 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9851 msm_routing_get_port_mixer,
9852 msm_routing_put_port_mixer),
9853 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9854 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9855 msm_routing_get_port_mixer,
9856 msm_routing_put_port_mixer),
9857 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9858 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9859 msm_routing_get_port_mixer,
9860 msm_routing_put_port_mixer),
9861 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9862 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9863 msm_routing_get_port_mixer,
9864 msm_routing_put_port_mixer),
9865 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9866 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9867 msm_routing_get_port_mixer,
9868 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309869 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9870 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9871 msm_routing_get_port_mixer,
9872 msm_routing_put_port_mixer),
9873 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9874 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9875 msm_routing_get_port_mixer,
9876 msm_routing_put_port_mixer),
9877 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9878 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9879 msm_routing_get_port_mixer,
9880 msm_routing_put_port_mixer),
9881 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9882 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9883 msm_routing_get_port_mixer,
9884 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309885};
9886
9887static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
9888 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9889 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9890 msm_routing_get_port_mixer,
9891 msm_routing_put_port_mixer),
9892 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9893 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9894 msm_routing_get_port_mixer,
9895 msm_routing_put_port_mixer),
9896 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9897 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9898 msm_routing_get_port_mixer,
9899 msm_routing_put_port_mixer),
9900 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9901 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9902 msm_routing_get_port_mixer,
9903 msm_routing_put_port_mixer),
9904 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9905 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9906 msm_routing_get_port_mixer,
9907 msm_routing_put_port_mixer),
9908 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9909 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9910 msm_routing_get_port_mixer,
9911 msm_routing_put_port_mixer),
9912 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9913 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9914 msm_routing_get_port_mixer,
9915 msm_routing_put_port_mixer),
9916 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9917 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9918 msm_routing_get_port_mixer,
9919 msm_routing_put_port_mixer),
9920 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9921 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9922 msm_routing_get_port_mixer,
9923 msm_routing_put_port_mixer),
9924 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9925 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9926 msm_routing_get_port_mixer,
9927 msm_routing_put_port_mixer),
9928 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9929 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9930 msm_routing_get_port_mixer,
9931 msm_routing_put_port_mixer),
9932 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9933 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9934 msm_routing_get_port_mixer,
9935 msm_routing_put_port_mixer),
9936 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9937 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9938 msm_routing_get_port_mixer,
9939 msm_routing_put_port_mixer),
9940 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9941 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9942 msm_routing_get_port_mixer,
9943 msm_routing_put_port_mixer),
9944 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9945 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9946 msm_routing_get_port_mixer,
9947 msm_routing_put_port_mixer),
9948 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9949 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9950 msm_routing_get_port_mixer,
9951 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309952 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9953 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9954 msm_routing_get_port_mixer,
9955 msm_routing_put_port_mixer),
9956 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9957 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9958 msm_routing_get_port_mixer,
9959 msm_routing_put_port_mixer),
9960 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9961 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9962 msm_routing_get_port_mixer,
9963 msm_routing_put_port_mixer),
9964 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9965 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9966 msm_routing_get_port_mixer,
9967 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309968};
9969
9970static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
9971 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9972 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9973 msm_routing_get_port_mixer,
9974 msm_routing_put_port_mixer),
9975 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9976 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9977 msm_routing_get_port_mixer,
9978 msm_routing_put_port_mixer),
9979 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9980 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9981 msm_routing_get_port_mixer,
9982 msm_routing_put_port_mixer),
9983 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9984 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9985 msm_routing_get_port_mixer,
9986 msm_routing_put_port_mixer),
9987 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9988 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9989 msm_routing_get_port_mixer,
9990 msm_routing_put_port_mixer),
9991 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9992 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9993 msm_routing_get_port_mixer,
9994 msm_routing_put_port_mixer),
9995 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9996 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9997 msm_routing_get_port_mixer,
9998 msm_routing_put_port_mixer),
9999 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10000 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10001 msm_routing_get_port_mixer,
10002 msm_routing_put_port_mixer),
10003 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10004 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10005 msm_routing_get_port_mixer,
10006 msm_routing_put_port_mixer),
10007 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10008 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10009 msm_routing_get_port_mixer,
10010 msm_routing_put_port_mixer),
10011 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10012 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10013 msm_routing_get_port_mixer,
10014 msm_routing_put_port_mixer),
10015 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10016 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10017 msm_routing_get_port_mixer,
10018 msm_routing_put_port_mixer),
10019 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10020 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10021 msm_routing_get_port_mixer,
10022 msm_routing_put_port_mixer),
10023 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10024 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10025 msm_routing_get_port_mixer,
10026 msm_routing_put_port_mixer),
10027 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10028 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10029 msm_routing_get_port_mixer,
10030 msm_routing_put_port_mixer),
10031 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10032 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10033 msm_routing_get_port_mixer,
10034 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010035 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10036 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10037 msm_routing_get_port_mixer,
10038 msm_routing_put_port_mixer),
10039 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10040 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10041 msm_routing_get_port_mixer,
10042 msm_routing_put_port_mixer),
10043 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10044 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10045 msm_routing_get_port_mixer,
10046 msm_routing_put_port_mixer),
10047 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10048 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10049 msm_routing_get_port_mixer,
10050 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010051};
10052
10053static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
10054 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10055 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10056 msm_routing_get_port_mixer,
10057 msm_routing_put_port_mixer),
10058 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10059 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10060 msm_routing_get_port_mixer,
10061 msm_routing_put_port_mixer),
10062 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10063 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10064 msm_routing_get_port_mixer,
10065 msm_routing_put_port_mixer),
10066 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10067 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10068 msm_routing_get_port_mixer,
10069 msm_routing_put_port_mixer),
10070 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10071 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10072 msm_routing_get_port_mixer,
10073 msm_routing_put_port_mixer),
10074 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10075 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10076 msm_routing_get_port_mixer,
10077 msm_routing_put_port_mixer),
10078 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10079 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10080 msm_routing_get_port_mixer,
10081 msm_routing_put_port_mixer),
10082 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10083 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10084 msm_routing_get_port_mixer,
10085 msm_routing_put_port_mixer),
10086 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10087 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10088 msm_routing_get_port_mixer,
10089 msm_routing_put_port_mixer),
10090 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10091 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10092 msm_routing_get_port_mixer,
10093 msm_routing_put_port_mixer),
10094 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10095 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10096 msm_routing_get_port_mixer,
10097 msm_routing_put_port_mixer),
10098 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10099 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10100 msm_routing_get_port_mixer,
10101 msm_routing_put_port_mixer),
10102 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10103 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10104 msm_routing_get_port_mixer,
10105 msm_routing_put_port_mixer),
10106 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10107 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10108 msm_routing_get_port_mixer,
10109 msm_routing_put_port_mixer),
10110 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10111 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10112 msm_routing_get_port_mixer,
10113 msm_routing_put_port_mixer),
10114 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10115 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10116 msm_routing_get_port_mixer,
10117 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010118 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10119 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10120 msm_routing_get_port_mixer,
10121 msm_routing_put_port_mixer),
10122 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10123 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10124 msm_routing_get_port_mixer,
10125 msm_routing_put_port_mixer),
10126 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10127 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10128 msm_routing_get_port_mixer,
10129 msm_routing_put_port_mixer),
10130 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10131 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10132 msm_routing_get_port_mixer,
10133 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010134};
10135
10136static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
10137 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10138 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10139 msm_routing_get_port_mixer,
10140 msm_routing_put_port_mixer),
10141 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10142 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10143 msm_routing_get_port_mixer,
10144 msm_routing_put_port_mixer),
10145 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10146 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10147 msm_routing_get_port_mixer,
10148 msm_routing_put_port_mixer),
10149 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10150 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10151 msm_routing_get_port_mixer,
10152 msm_routing_put_port_mixer),
10153 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10154 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10155 msm_routing_get_port_mixer,
10156 msm_routing_put_port_mixer),
10157 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10158 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10159 msm_routing_get_port_mixer,
10160 msm_routing_put_port_mixer),
10161 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10162 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10163 msm_routing_get_port_mixer,
10164 msm_routing_put_port_mixer),
10165 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10166 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10167 msm_routing_get_port_mixer,
10168 msm_routing_put_port_mixer),
10169 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10170 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10171 msm_routing_get_port_mixer,
10172 msm_routing_put_port_mixer),
10173 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10174 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10175 msm_routing_get_port_mixer,
10176 msm_routing_put_port_mixer),
10177 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10178 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10179 msm_routing_get_port_mixer,
10180 msm_routing_put_port_mixer),
10181 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10182 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10183 msm_routing_get_port_mixer,
10184 msm_routing_put_port_mixer),
10185 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10186 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10187 msm_routing_get_port_mixer,
10188 msm_routing_put_port_mixer),
10189 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10190 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10191 msm_routing_get_port_mixer,
10192 msm_routing_put_port_mixer),
10193 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10194 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10195 msm_routing_get_port_mixer,
10196 msm_routing_put_port_mixer),
10197 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10198 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10199 msm_routing_get_port_mixer,
10200 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010201 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10202 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10203 msm_routing_get_port_mixer,
10204 msm_routing_put_port_mixer),
10205 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10206 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10207 msm_routing_get_port_mixer,
10208 msm_routing_put_port_mixer),
10209 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10210 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10211 msm_routing_get_port_mixer,
10212 msm_routing_put_port_mixer),
10213 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10214 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10215 msm_routing_get_port_mixer,
10216 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010217};
10218
10219static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
10220 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10221 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10222 msm_routing_get_port_mixer,
10223 msm_routing_put_port_mixer),
10224 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10225 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10226 msm_routing_get_port_mixer,
10227 msm_routing_put_port_mixer),
10228 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10229 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10230 msm_routing_get_port_mixer,
10231 msm_routing_put_port_mixer),
10232 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10233 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10234 msm_routing_get_port_mixer,
10235 msm_routing_put_port_mixer),
10236 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10237 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10238 msm_routing_get_port_mixer,
10239 msm_routing_put_port_mixer),
10240 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10241 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10242 msm_routing_get_port_mixer,
10243 msm_routing_put_port_mixer),
10244 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10245 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10246 msm_routing_get_port_mixer,
10247 msm_routing_put_port_mixer),
10248 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10249 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10250 msm_routing_get_port_mixer,
10251 msm_routing_put_port_mixer),
10252 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10253 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10254 msm_routing_get_port_mixer,
10255 msm_routing_put_port_mixer),
10256 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10257 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10258 msm_routing_get_port_mixer,
10259 msm_routing_put_port_mixer),
10260 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10261 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10262 msm_routing_get_port_mixer,
10263 msm_routing_put_port_mixer),
10264 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10265 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10266 msm_routing_get_port_mixer,
10267 msm_routing_put_port_mixer),
10268 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10269 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10270 msm_routing_get_port_mixer,
10271 msm_routing_put_port_mixer),
10272 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10273 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10274 msm_routing_get_port_mixer,
10275 msm_routing_put_port_mixer),
10276 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10277 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10278 msm_routing_get_port_mixer,
10279 msm_routing_put_port_mixer),
10280 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10281 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10282 msm_routing_get_port_mixer,
10283 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010284 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10285 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10286 msm_routing_get_port_mixer,
10287 msm_routing_put_port_mixer),
10288 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10289 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10290 msm_routing_get_port_mixer,
10291 msm_routing_put_port_mixer),
10292 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10293 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10294 msm_routing_get_port_mixer,
10295 msm_routing_put_port_mixer),
10296 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10297 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10298 msm_routing_get_port_mixer,
10299 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010300};
10301
10302static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
10303 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10304 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10305 msm_routing_get_port_mixer,
10306 msm_routing_put_port_mixer),
10307 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10308 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10309 msm_routing_get_port_mixer,
10310 msm_routing_put_port_mixer),
10311 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10312 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10313 msm_routing_get_port_mixer,
10314 msm_routing_put_port_mixer),
10315 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10316 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10317 msm_routing_get_port_mixer,
10318 msm_routing_put_port_mixer),
10319 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10320 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10321 msm_routing_get_port_mixer,
10322 msm_routing_put_port_mixer),
10323 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10324 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10325 msm_routing_get_port_mixer,
10326 msm_routing_put_port_mixer),
10327 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10328 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10329 msm_routing_get_port_mixer,
10330 msm_routing_put_port_mixer),
10331 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10332 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10333 msm_routing_get_port_mixer,
10334 msm_routing_put_port_mixer),
10335 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10336 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10337 msm_routing_get_port_mixer,
10338 msm_routing_put_port_mixer),
10339 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10340 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10341 msm_routing_get_port_mixer,
10342 msm_routing_put_port_mixer),
10343 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10344 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10345 msm_routing_get_port_mixer,
10346 msm_routing_put_port_mixer),
10347 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10348 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10349 msm_routing_get_port_mixer,
10350 msm_routing_put_port_mixer),
10351 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10352 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10353 msm_routing_get_port_mixer,
10354 msm_routing_put_port_mixer),
10355 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10356 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10357 msm_routing_get_port_mixer,
10358 msm_routing_put_port_mixer),
10359 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10360 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10361 msm_routing_get_port_mixer,
10362 msm_routing_put_port_mixer),
10363 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10364 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10365 msm_routing_get_port_mixer,
10366 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010367 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10368 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10369 msm_routing_get_port_mixer,
10370 msm_routing_put_port_mixer),
10371 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10372 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10373 msm_routing_get_port_mixer,
10374 msm_routing_put_port_mixer),
10375 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10376 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10377 msm_routing_get_port_mixer,
10378 msm_routing_put_port_mixer),
10379 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10380 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10381 msm_routing_get_port_mixer,
10382 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010383};
10384
10385static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10386 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10387 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10388 msm_routing_get_port_mixer,
10389 msm_routing_put_port_mixer),
10390 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10391 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10392 msm_routing_get_port_mixer,
10393 msm_routing_put_port_mixer),
10394 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10395 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10396 msm_routing_get_port_mixer,
10397 msm_routing_put_port_mixer),
10398 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10399 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10400 msm_routing_get_port_mixer,
10401 msm_routing_put_port_mixer),
10402 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10403 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10404 msm_routing_get_port_mixer,
10405 msm_routing_put_port_mixer),
10406 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10407 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10408 msm_routing_get_port_mixer,
10409 msm_routing_put_port_mixer),
10410 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10411 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10412 msm_routing_get_port_mixer,
10413 msm_routing_put_port_mixer),
10414 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10415 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10416 msm_routing_get_port_mixer,
10417 msm_routing_put_port_mixer),
10418 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10419 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10420 msm_routing_get_port_mixer,
10421 msm_routing_put_port_mixer),
10422 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10423 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10424 msm_routing_get_port_mixer,
10425 msm_routing_put_port_mixer),
10426 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10427 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10428 msm_routing_get_port_mixer,
10429 msm_routing_put_port_mixer),
10430 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10431 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10432 msm_routing_get_port_mixer,
10433 msm_routing_put_port_mixer),
10434 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10435 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10436 msm_routing_get_port_mixer,
10437 msm_routing_put_port_mixer),
10438 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10439 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10440 msm_routing_get_port_mixer,
10441 msm_routing_put_port_mixer),
10442 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10443 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10444 msm_routing_get_port_mixer,
10445 msm_routing_put_port_mixer),
10446 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10447 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10448 msm_routing_get_port_mixer,
10449 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010450 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10451 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10452 msm_routing_get_port_mixer,
10453 msm_routing_put_port_mixer),
10454 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10455 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10456 msm_routing_get_port_mixer,
10457 msm_routing_put_port_mixer),
10458 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10459 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10460 msm_routing_get_port_mixer,
10461 msm_routing_put_port_mixer),
10462 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10463 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10464 msm_routing_get_port_mixer,
10465 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010466};
10467
10468static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10469 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10470 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10471 msm_routing_get_port_mixer,
10472 msm_routing_put_port_mixer),
10473 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10474 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10475 msm_routing_get_port_mixer,
10476 msm_routing_put_port_mixer),
10477 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10478 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10479 msm_routing_get_port_mixer,
10480 msm_routing_put_port_mixer),
10481 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10482 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10483 msm_routing_get_port_mixer,
10484 msm_routing_put_port_mixer),
10485 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10486 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10487 msm_routing_get_port_mixer,
10488 msm_routing_put_port_mixer),
10489 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10490 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10491 msm_routing_get_port_mixer,
10492 msm_routing_put_port_mixer),
10493 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10494 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10495 msm_routing_get_port_mixer,
10496 msm_routing_put_port_mixer),
10497 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10498 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10499 msm_routing_get_port_mixer,
10500 msm_routing_put_port_mixer),
10501 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10502 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10503 msm_routing_get_port_mixer,
10504 msm_routing_put_port_mixer),
10505 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10506 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10507 msm_routing_get_port_mixer,
10508 msm_routing_put_port_mixer),
10509 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10510 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10511 msm_routing_get_port_mixer,
10512 msm_routing_put_port_mixer),
10513 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10514 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10515 msm_routing_get_port_mixer,
10516 msm_routing_put_port_mixer),
10517 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10518 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10519 msm_routing_get_port_mixer,
10520 msm_routing_put_port_mixer),
10521 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10522 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10523 msm_routing_get_port_mixer,
10524 msm_routing_put_port_mixer),
10525 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10526 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10527 msm_routing_get_port_mixer,
10528 msm_routing_put_port_mixer),
10529 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10530 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10531 msm_routing_get_port_mixer,
10532 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010533 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10534 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10535 msm_routing_get_port_mixer,
10536 msm_routing_put_port_mixer),
10537 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10538 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10539 msm_routing_get_port_mixer,
10540 msm_routing_put_port_mixer),
10541 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10542 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10543 msm_routing_get_port_mixer,
10544 msm_routing_put_port_mixer),
10545 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10546 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10547 msm_routing_get_port_mixer,
10548 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010549};
10550
10551static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10552 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10553 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10554 msm_routing_get_port_mixer,
10555 msm_routing_put_port_mixer),
10556 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10557 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10558 msm_routing_get_port_mixer,
10559 msm_routing_put_port_mixer),
10560 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10561 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10562 msm_routing_get_port_mixer,
10563 msm_routing_put_port_mixer),
10564 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10565 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10566 msm_routing_get_port_mixer,
10567 msm_routing_put_port_mixer),
10568 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10569 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10570 msm_routing_get_port_mixer,
10571 msm_routing_put_port_mixer),
10572 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10573 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10574 msm_routing_get_port_mixer,
10575 msm_routing_put_port_mixer),
10576 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10577 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10578 msm_routing_get_port_mixer,
10579 msm_routing_put_port_mixer),
10580 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10581 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10582 msm_routing_get_port_mixer,
10583 msm_routing_put_port_mixer),
10584 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10585 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10586 msm_routing_get_port_mixer,
10587 msm_routing_put_port_mixer),
10588 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10589 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10590 msm_routing_get_port_mixer,
10591 msm_routing_put_port_mixer),
10592 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10593 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10594 msm_routing_get_port_mixer,
10595 msm_routing_put_port_mixer),
10596 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10597 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10598 msm_routing_get_port_mixer,
10599 msm_routing_put_port_mixer),
10600 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10601 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10602 msm_routing_get_port_mixer,
10603 msm_routing_put_port_mixer),
10604 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10605 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10606 msm_routing_get_port_mixer,
10607 msm_routing_put_port_mixer),
10608 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10609 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10610 msm_routing_get_port_mixer,
10611 msm_routing_put_port_mixer),
10612 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10613 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10614 msm_routing_get_port_mixer,
10615 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010616 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10617 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10618 msm_routing_get_port_mixer,
10619 msm_routing_put_port_mixer),
10620 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10621 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10622 msm_routing_get_port_mixer,
10623 msm_routing_put_port_mixer),
10624 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10625 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10626 msm_routing_get_port_mixer,
10627 msm_routing_put_port_mixer),
10628 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10629 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10630 msm_routing_get_port_mixer,
10631 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010632};
10633
10634static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10635 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10636 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10637 msm_routing_get_port_mixer,
10638 msm_routing_put_port_mixer),
10639 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10640 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10641 msm_routing_get_port_mixer,
10642 msm_routing_put_port_mixer),
10643 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10644 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10645 msm_routing_get_port_mixer,
10646 msm_routing_put_port_mixer),
10647 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10648 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10649 msm_routing_get_port_mixer,
10650 msm_routing_put_port_mixer),
10651 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10652 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10653 msm_routing_get_port_mixer,
10654 msm_routing_put_port_mixer),
10655 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10656 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10657 msm_routing_get_port_mixer,
10658 msm_routing_put_port_mixer),
10659 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10660 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10661 msm_routing_get_port_mixer,
10662 msm_routing_put_port_mixer),
10663 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10664 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10665 msm_routing_get_port_mixer,
10666 msm_routing_put_port_mixer),
10667 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10668 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10669 msm_routing_get_port_mixer,
10670 msm_routing_put_port_mixer),
10671 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10672 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10673 msm_routing_get_port_mixer,
10674 msm_routing_put_port_mixer),
10675 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10676 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10677 msm_routing_get_port_mixer,
10678 msm_routing_put_port_mixer),
10679 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10680 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10681 msm_routing_get_port_mixer,
10682 msm_routing_put_port_mixer),
10683 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10684 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10685 msm_routing_get_port_mixer,
10686 msm_routing_put_port_mixer),
10687 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10688 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10689 msm_routing_get_port_mixer,
10690 msm_routing_put_port_mixer),
10691 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10692 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10693 msm_routing_get_port_mixer,
10694 msm_routing_put_port_mixer),
10695 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10696 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10697 msm_routing_get_port_mixer,
10698 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010699 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10700 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10701 msm_routing_get_port_mixer,
10702 msm_routing_put_port_mixer),
10703 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10704 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10705 msm_routing_get_port_mixer,
10706 msm_routing_put_port_mixer),
10707 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10708 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10709 msm_routing_get_port_mixer,
10710 msm_routing_put_port_mixer),
10711 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10712 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10713 msm_routing_get_port_mixer,
10714 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010715};
10716
10717static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10718 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10719 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10720 msm_routing_get_port_mixer,
10721 msm_routing_put_port_mixer),
10722 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10723 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10724 msm_routing_get_port_mixer,
10725 msm_routing_put_port_mixer),
10726 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10727 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10728 msm_routing_get_port_mixer,
10729 msm_routing_put_port_mixer),
10730 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10731 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10732 msm_routing_get_port_mixer,
10733 msm_routing_put_port_mixer),
10734 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10735 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10736 msm_routing_get_port_mixer,
10737 msm_routing_put_port_mixer),
10738 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10739 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10740 msm_routing_get_port_mixer,
10741 msm_routing_put_port_mixer),
10742 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10743 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10744 msm_routing_get_port_mixer,
10745 msm_routing_put_port_mixer),
10746 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10747 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10748 msm_routing_get_port_mixer,
10749 msm_routing_put_port_mixer),
10750 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10751 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10752 msm_routing_get_port_mixer,
10753 msm_routing_put_port_mixer),
10754 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10755 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10756 msm_routing_get_port_mixer,
10757 msm_routing_put_port_mixer),
10758 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10759 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10760 msm_routing_get_port_mixer,
10761 msm_routing_put_port_mixer),
10762 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10763 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10764 msm_routing_get_port_mixer,
10765 msm_routing_put_port_mixer),
10766 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10767 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10768 msm_routing_get_port_mixer,
10769 msm_routing_put_port_mixer),
10770 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10771 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10772 msm_routing_get_port_mixer,
10773 msm_routing_put_port_mixer),
10774 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10775 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10776 msm_routing_get_port_mixer,
10777 msm_routing_put_port_mixer),
10778 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10779 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10780 msm_routing_get_port_mixer,
10781 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010782 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10783 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10784 msm_routing_get_port_mixer,
10785 msm_routing_put_port_mixer),
10786 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10787 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10788 msm_routing_get_port_mixer,
10789 msm_routing_put_port_mixer),
10790 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10791 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10792 msm_routing_get_port_mixer,
10793 msm_routing_put_port_mixer),
10794 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10795 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10796 msm_routing_get_port_mixer,
10797 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010798};
10799
10800static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10801 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10802 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10803 msm_routing_get_port_mixer,
10804 msm_routing_put_port_mixer),
10805 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10806 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10807 msm_routing_get_port_mixer,
10808 msm_routing_put_port_mixer),
10809 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10810 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10811 msm_routing_get_port_mixer,
10812 msm_routing_put_port_mixer),
10813 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10814 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10815 msm_routing_get_port_mixer,
10816 msm_routing_put_port_mixer),
10817 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10818 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10819 msm_routing_get_port_mixer,
10820 msm_routing_put_port_mixer),
10821 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10822 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10823 msm_routing_get_port_mixer,
10824 msm_routing_put_port_mixer),
10825 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10826 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10827 msm_routing_get_port_mixer,
10828 msm_routing_put_port_mixer),
10829 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10830 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10831 msm_routing_get_port_mixer,
10832 msm_routing_put_port_mixer),
10833 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10834 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10835 msm_routing_get_port_mixer,
10836 msm_routing_put_port_mixer),
10837 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10838 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10839 msm_routing_get_port_mixer,
10840 msm_routing_put_port_mixer),
10841 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10842 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10843 msm_routing_get_port_mixer,
10844 msm_routing_put_port_mixer),
10845 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10846 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10847 msm_routing_get_port_mixer,
10848 msm_routing_put_port_mixer),
10849 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10850 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10851 msm_routing_get_port_mixer,
10852 msm_routing_put_port_mixer),
10853 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10854 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10855 msm_routing_get_port_mixer,
10856 msm_routing_put_port_mixer),
10857 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10858 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10859 msm_routing_get_port_mixer,
10860 msm_routing_put_port_mixer),
10861 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10862 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10863 msm_routing_get_port_mixer,
10864 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010865 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10866 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10867 msm_routing_get_port_mixer,
10868 msm_routing_put_port_mixer),
10869 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10870 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10871 msm_routing_get_port_mixer,
10872 msm_routing_put_port_mixer),
10873 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10874 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10875 msm_routing_get_port_mixer,
10876 msm_routing_put_port_mixer),
10877 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10878 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10879 msm_routing_get_port_mixer,
10880 msm_routing_put_port_mixer),
10881};
10882
10883static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
10884 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10885 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10886 msm_routing_get_port_mixer,
10887 msm_routing_put_port_mixer),
10888 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10889 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10890 msm_routing_get_port_mixer,
10891 msm_routing_put_port_mixer),
10892 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10893 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10894 msm_routing_get_port_mixer,
10895 msm_routing_put_port_mixer),
10896 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10897 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10898 msm_routing_get_port_mixer,
10899 msm_routing_put_port_mixer),
10900 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10901 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10902 msm_routing_get_port_mixer,
10903 msm_routing_put_port_mixer),
10904 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10905 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10906 msm_routing_get_port_mixer,
10907 msm_routing_put_port_mixer),
10908 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10909 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10910 msm_routing_get_port_mixer,
10911 msm_routing_put_port_mixer),
10912 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10913 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10914 msm_routing_get_port_mixer,
10915 msm_routing_put_port_mixer),
10916 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10917 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10918 msm_routing_get_port_mixer,
10919 msm_routing_put_port_mixer),
10920 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10921 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10922 msm_routing_get_port_mixer,
10923 msm_routing_put_port_mixer),
10924 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10925 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10926 msm_routing_get_port_mixer,
10927 msm_routing_put_port_mixer),
10928 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10929 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10930 msm_routing_get_port_mixer,
10931 msm_routing_put_port_mixer),
10932 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10933 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10934 msm_routing_get_port_mixer,
10935 msm_routing_put_port_mixer),
10936 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10937 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10938 msm_routing_get_port_mixer,
10939 msm_routing_put_port_mixer),
10940 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10941 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10942 msm_routing_get_port_mixer,
10943 msm_routing_put_port_mixer),
10944 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10945 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10946 msm_routing_get_port_mixer,
10947 msm_routing_put_port_mixer),
10948 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10949 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10950 msm_routing_get_port_mixer,
10951 msm_routing_put_port_mixer),
10952 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10953 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10954 msm_routing_get_port_mixer,
10955 msm_routing_put_port_mixer),
10956 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10957 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10958 msm_routing_get_port_mixer,
10959 msm_routing_put_port_mixer),
10960 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10961 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10962 msm_routing_get_port_mixer,
10963 msm_routing_put_port_mixer),
10964};
10965
10966static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
10967 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10968 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10969 msm_routing_get_port_mixer,
10970 msm_routing_put_port_mixer),
10971 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10972 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10973 msm_routing_get_port_mixer,
10974 msm_routing_put_port_mixer),
10975 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10976 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10977 msm_routing_get_port_mixer,
10978 msm_routing_put_port_mixer),
10979 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10980 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10981 msm_routing_get_port_mixer,
10982 msm_routing_put_port_mixer),
10983 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10984 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10985 msm_routing_get_port_mixer,
10986 msm_routing_put_port_mixer),
10987 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10988 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10989 msm_routing_get_port_mixer,
10990 msm_routing_put_port_mixer),
10991 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10992 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10993 msm_routing_get_port_mixer,
10994 msm_routing_put_port_mixer),
10995 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10996 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10997 msm_routing_get_port_mixer,
10998 msm_routing_put_port_mixer),
10999 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11000 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11001 msm_routing_get_port_mixer,
11002 msm_routing_put_port_mixer),
11003 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11004 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11005 msm_routing_get_port_mixer,
11006 msm_routing_put_port_mixer),
11007 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11008 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11009 msm_routing_get_port_mixer,
11010 msm_routing_put_port_mixer),
11011 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11012 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11013 msm_routing_get_port_mixer,
11014 msm_routing_put_port_mixer),
11015 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11016 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11017 msm_routing_get_port_mixer,
11018 msm_routing_put_port_mixer),
11019 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11020 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11021 msm_routing_get_port_mixer,
11022 msm_routing_put_port_mixer),
11023 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11024 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11025 msm_routing_get_port_mixer,
11026 msm_routing_put_port_mixer),
11027 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11028 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11029 msm_routing_get_port_mixer,
11030 msm_routing_put_port_mixer),
11031 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11032 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11033 msm_routing_get_port_mixer,
11034 msm_routing_put_port_mixer),
11035 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11036 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11037 msm_routing_get_port_mixer,
11038 msm_routing_put_port_mixer),
11039 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11040 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11041 msm_routing_get_port_mixer,
11042 msm_routing_put_port_mixer),
11043 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11044 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11045 msm_routing_get_port_mixer,
11046 msm_routing_put_port_mixer),
11047};
11048
11049static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
11050 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11051 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11052 msm_routing_get_port_mixer,
11053 msm_routing_put_port_mixer),
11054 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11055 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11056 msm_routing_get_port_mixer,
11057 msm_routing_put_port_mixer),
11058 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11059 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11060 msm_routing_get_port_mixer,
11061 msm_routing_put_port_mixer),
11062 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11063 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11064 msm_routing_get_port_mixer,
11065 msm_routing_put_port_mixer),
11066 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11067 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11068 msm_routing_get_port_mixer,
11069 msm_routing_put_port_mixer),
11070 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11071 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11072 msm_routing_get_port_mixer,
11073 msm_routing_put_port_mixer),
11074 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11075 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11076 msm_routing_get_port_mixer,
11077 msm_routing_put_port_mixer),
11078 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11079 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11080 msm_routing_get_port_mixer,
11081 msm_routing_put_port_mixer),
11082 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11083 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11084 msm_routing_get_port_mixer,
11085 msm_routing_put_port_mixer),
11086 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11087 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11088 msm_routing_get_port_mixer,
11089 msm_routing_put_port_mixer),
11090 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11091 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11092 msm_routing_get_port_mixer,
11093 msm_routing_put_port_mixer),
11094 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11095 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11096 msm_routing_get_port_mixer,
11097 msm_routing_put_port_mixer),
11098 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11099 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11100 msm_routing_get_port_mixer,
11101 msm_routing_put_port_mixer),
11102 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11103 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11104 msm_routing_get_port_mixer,
11105 msm_routing_put_port_mixer),
11106 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11107 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11108 msm_routing_get_port_mixer,
11109 msm_routing_put_port_mixer),
11110 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11111 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11112 msm_routing_get_port_mixer,
11113 msm_routing_put_port_mixer),
11114 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11115 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11116 msm_routing_get_port_mixer,
11117 msm_routing_put_port_mixer),
11118 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11119 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11120 msm_routing_get_port_mixer,
11121 msm_routing_put_port_mixer),
11122 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11123 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11124 msm_routing_get_port_mixer,
11125 msm_routing_put_port_mixer),
11126 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11127 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11128 msm_routing_get_port_mixer,
11129 msm_routing_put_port_mixer),
11130};
11131
11132static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
11133 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11134 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11135 msm_routing_get_port_mixer,
11136 msm_routing_put_port_mixer),
11137 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11138 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11139 msm_routing_get_port_mixer,
11140 msm_routing_put_port_mixer),
11141 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11142 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11143 msm_routing_get_port_mixer,
11144 msm_routing_put_port_mixer),
11145 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11146 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11147 msm_routing_get_port_mixer,
11148 msm_routing_put_port_mixer),
11149 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11150 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11151 msm_routing_get_port_mixer,
11152 msm_routing_put_port_mixer),
11153 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11154 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11155 msm_routing_get_port_mixer,
11156 msm_routing_put_port_mixer),
11157 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11158 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11159 msm_routing_get_port_mixer,
11160 msm_routing_put_port_mixer),
11161 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11162 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11163 msm_routing_get_port_mixer,
11164 msm_routing_put_port_mixer),
11165 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11166 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11167 msm_routing_get_port_mixer,
11168 msm_routing_put_port_mixer),
11169 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11170 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11171 msm_routing_get_port_mixer,
11172 msm_routing_put_port_mixer),
11173 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11174 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11175 msm_routing_get_port_mixer,
11176 msm_routing_put_port_mixer),
11177 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11178 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11179 msm_routing_get_port_mixer,
11180 msm_routing_put_port_mixer),
11181 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11182 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11183 msm_routing_get_port_mixer,
11184 msm_routing_put_port_mixer),
11185 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11186 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11187 msm_routing_get_port_mixer,
11188 msm_routing_put_port_mixer),
11189 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11190 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11191 msm_routing_get_port_mixer,
11192 msm_routing_put_port_mixer),
11193 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11194 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11195 msm_routing_get_port_mixer,
11196 msm_routing_put_port_mixer),
11197 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11198 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11199 msm_routing_get_port_mixer,
11200 msm_routing_put_port_mixer),
11201 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11202 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11203 msm_routing_get_port_mixer,
11204 msm_routing_put_port_mixer),
11205 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11206 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11207 msm_routing_get_port_mixer,
11208 msm_routing_put_port_mixer),
11209 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11210 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11211 msm_routing_get_port_mixer,
11212 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011213};
11214
11215static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
11216 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11217 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11218 msm_routing_put_port_mixer),
11219 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11220 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11221 msm_routing_put_port_mixer),
11222 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11223 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11224 msm_routing_put_port_mixer),
11225 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11226 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11227 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011228 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11229 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11230 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011231 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11232 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11233 msm_routing_put_port_mixer),
11234 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11235 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11236 msm_routing_put_port_mixer),
11237};
11238
11239static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
11240 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11241 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11242 msm_routing_put_port_mixer),
11243 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11244 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11245 msm_routing_put_port_mixer),
11246 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11247 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11248 msm_routing_put_port_mixer),
11249 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11250 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11251 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011252 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11253 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11254 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011255 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11256 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11257 msm_routing_put_port_mixer),
11258 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11259 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
11260 msm_routing_put_port_mixer),
11261 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11262 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11263 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080011264 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11265 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
11266 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011267};
11268
11269static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
11270 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11271 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11272 msm_routing_put_listen_mixer),
11273 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11274 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11275 msm_routing_put_listen_mixer),
11276 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11277 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11278 msm_routing_put_listen_mixer),
11279 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11280 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11281 msm_routing_put_listen_mixer),
11282 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11283 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11284 msm_routing_put_listen_mixer),
11285 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11286 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11287 msm_routing_put_listen_mixer),
11288 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11289 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11290 msm_routing_put_listen_mixer),
11291 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11292 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11293 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011294 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11295 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11296 msm_routing_put_listen_mixer),
11297 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11298 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11299 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011300};
11301
11302static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
11303 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11304 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11305 msm_routing_put_listen_mixer),
11306 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11307 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11308 msm_routing_put_listen_mixer),
11309 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11310 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11311 msm_routing_put_listen_mixer),
11312 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11313 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11314 msm_routing_put_listen_mixer),
11315 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11316 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11317 msm_routing_put_listen_mixer),
11318 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11319 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11320 msm_routing_put_listen_mixer),
11321 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11322 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11323 msm_routing_put_listen_mixer),
11324 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11325 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11326 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011327 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11328 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11329 msm_routing_put_listen_mixer),
11330 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11331 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11332 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011333};
11334
11335static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
11336 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11337 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11338 msm_routing_put_listen_mixer),
11339 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11340 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11341 msm_routing_put_listen_mixer),
11342 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11343 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11344 msm_routing_put_listen_mixer),
11345 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11346 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11347 msm_routing_put_listen_mixer),
11348 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11349 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11350 msm_routing_put_listen_mixer),
11351 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11352 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11353 msm_routing_put_listen_mixer),
11354 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11355 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11356 msm_routing_put_listen_mixer),
11357 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11358 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11359 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011360 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11361 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11362 msm_routing_put_listen_mixer),
11363 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11364 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11365 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011366};
11367
11368static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11369 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11370 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11371 msm_routing_put_listen_mixer),
11372 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11373 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11374 msm_routing_put_listen_mixer),
11375 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11376 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11377 msm_routing_put_listen_mixer),
11378 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11379 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11380 msm_routing_put_listen_mixer),
11381 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11382 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11383 msm_routing_put_listen_mixer),
11384 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11385 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11386 msm_routing_put_listen_mixer),
11387 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11388 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11389 msm_routing_put_listen_mixer),
11390 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11391 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11392 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011393 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11394 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11395 msm_routing_put_listen_mixer),
11396 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11397 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11398 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011399};
11400
11401static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11402 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11403 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11404 msm_routing_put_listen_mixer),
11405 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11406 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11407 msm_routing_put_listen_mixer),
11408 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11409 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11410 msm_routing_put_listen_mixer),
11411 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11412 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11413 msm_routing_put_listen_mixer),
11414 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11415 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11416 msm_routing_put_listen_mixer),
11417 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11418 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11419 msm_routing_put_listen_mixer),
11420 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11421 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11422 msm_routing_put_listen_mixer),
11423 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11424 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11425 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011426 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11427 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11428 msm_routing_put_listen_mixer),
11429 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11430 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11431 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011432};
11433
11434static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11435 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11436 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11437 msm_routing_put_listen_mixer),
11438 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11439 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11440 msm_routing_put_listen_mixer),
11441 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11442 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11443 msm_routing_put_listen_mixer),
11444 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11445 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11446 msm_routing_put_listen_mixer),
11447 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11448 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11449 msm_routing_put_listen_mixer),
11450 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11451 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11452 msm_routing_put_listen_mixer),
11453 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11454 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11455 msm_routing_put_listen_mixer),
11456 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11457 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11458 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011459 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11460 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11461 msm_routing_put_listen_mixer),
11462 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11463 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11464 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011465};
11466
11467static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11468 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11469 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11470 msm_routing_put_listen_mixer),
11471 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11472 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11473 msm_routing_put_listen_mixer),
11474 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11475 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11476 msm_routing_put_listen_mixer),
11477 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11478 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11479 msm_routing_put_listen_mixer),
11480 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11481 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11482 msm_routing_put_listen_mixer),
11483 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11484 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11485 msm_routing_put_listen_mixer),
11486 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11487 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11488 msm_routing_put_listen_mixer),
11489 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11490 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11491 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011492 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11493 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11494 msm_routing_put_listen_mixer),
11495 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11496 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11497 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011498};
11499
11500static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11501 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11502 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11503 msm_routing_put_listen_mixer),
11504 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11505 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11506 msm_routing_put_listen_mixer),
11507 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11508 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11509 msm_routing_put_listen_mixer),
11510 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11511 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11512 msm_routing_put_listen_mixer),
11513 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11514 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11515 msm_routing_put_listen_mixer),
11516 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11517 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11518 msm_routing_put_listen_mixer),
11519 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11520 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11521 msm_routing_put_listen_mixer),
11522 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11523 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11524 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011525 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11526 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11527 msm_routing_put_listen_mixer),
11528 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11529 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11530 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011531};
11532
11533static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11534 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11535 0, 1, 0, msm_routing_get_switch_mixer,
11536 msm_routing_put_switch_mixer);
11537
11538static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11539 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11540 0, 1, 0, msm_routing_get_switch_mixer,
11541 msm_routing_put_switch_mixer);
11542
11543static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11544 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11545 0, 1, 0, msm_routing_get_switch_mixer,
11546 msm_routing_put_switch_mixer);
11547
11548static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11549 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11550 0, 1, 0, msm_routing_get_switch_mixer,
11551 msm_routing_put_switch_mixer);
11552
11553static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11554 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11555 0, 1, 0, msm_routing_get_switch_mixer,
11556 msm_routing_put_switch_mixer);
11557
11558static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11559 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11560 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11561 msm_routing_put_fm_pcmrx_switch_mixer);
11562
11563static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11564 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11565 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11566 msm_routing_put_int0_mi2s_switch_mixer);
11567
11568static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11569 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11570 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11571 msm_routing_put_int4_mi2s_switch_mixer);
11572
11573static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11574 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11575 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11576 msm_routing_put_pri_mi2s_switch_mixer);
11577
11578static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11579 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11580 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11581 msm_routing_put_sec_mi2s_switch_mixer);
11582
11583static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11584 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11585 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11586 msm_routing_put_tert_mi2s_switch_mixer);
11587
11588static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11589 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11590 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11591 msm_routing_put_quat_mi2s_switch_mixer);
11592
Rohit Kumara5077932017-09-10 22:05:05 +053011593static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11594 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11595 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11596 msm_routing_put_quin_mi2s_switch_mixer);
11597
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011598static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11599 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11600 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11601 msm_routing_put_hfp_switch_mixer);
11602
11603static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11604 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11605 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11606 msm_routing_put_hfp_switch_mixer);
11607
11608static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11609 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11610 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11611 msm_routing_put_hfp_switch_mixer);
11612
11613static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11614 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11615 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11616 msm_routing_put_hfp_switch_mixer);
11617
11618static const struct snd_kcontrol_new usb_switch_mixer_controls =
11619 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11620 0, 1, 0, msm_routing_get_usb_switch_mixer,
11621 msm_routing_put_usb_switch_mixer);
11622
11623static const struct soc_enum lsm_port_enum =
11624 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11625
11626static const char * const lsm_func_text[] = {
11627 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11628};
11629static const struct soc_enum lsm_func_enum =
11630 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11631
11632static const struct snd_kcontrol_new lsm_controls[] = {
11633 /* kcontrol of lsm_function */
11634 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11635 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11636 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11637 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11638 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11639 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11640 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11641 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11642 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11643 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11644 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11645 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11646 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11647 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11648 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11649 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11650 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11651 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Ashish Jain01b10322018-05-12 15:37:44 +053011652 SOC_ENUM_EXT(PRI_TDM_TX_2_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11653 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11654 SOC_ENUM_EXT(PRI_TDM_TX_3_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11655 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011656 /* kcontrol of lsm_port */
11657 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11658 msm_routing_lsm_port_get,
11659 msm_routing_lsm_port_put),
11660 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11661 msm_routing_lsm_port_get,
11662 msm_routing_lsm_port_put),
11663 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11664 msm_routing_lsm_port_get,
11665 msm_routing_lsm_port_put),
11666 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11667 msm_routing_lsm_port_get,
11668 msm_routing_lsm_port_put),
11669 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11670 msm_routing_lsm_port_get,
11671 msm_routing_lsm_port_put),
11672 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11673 msm_routing_lsm_port_get,
11674 msm_routing_lsm_port_put),
11675 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11676 msm_routing_lsm_port_get,
11677 msm_routing_lsm_port_put),
11678 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11679 msm_routing_lsm_port_get,
11680 msm_routing_lsm_port_put),
11681};
11682
11683static const char * const aanc_slim_0_rx_text[] = {
11684 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11685 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11686};
11687
11688static const struct soc_enum aanc_slim_0_rx_enum =
11689 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11690 aanc_slim_0_rx_text);
11691
11692static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11693 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11694 msm_routing_slim_0_rx_aanc_mux_get,
11695 msm_routing_slim_0_rx_aanc_mux_put)
11696};
11697
11698static int msm_routing_get_stereo_to_custom_stereo_control(
11699 struct snd_kcontrol *kcontrol,
11700 struct snd_ctl_elem_value *ucontrol)
11701{
11702 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11703 return 0;
11704}
11705
11706static int msm_routing_put_stereo_to_custom_stereo_control(
11707 struct snd_kcontrol *kcontrol,
11708 struct snd_ctl_elem_value *ucontrol)
11709{
11710 int flag = 0, i = 0, rc = 0, idx = 0;
11711 int be_index = 0, port_id, topo_id;
11712 unsigned int session_id = 0;
11713 uint16_t op_FL_ip_FL_weight = 0;
11714 uint16_t op_FL_ip_FR_weight = 0;
11715 uint16_t op_FR_ip_FL_weight = 0;
11716 uint16_t op_FR_ip_FR_weight = 0;
11717
11718 flag = ucontrol->value.integer.value[0];
11719 pr_debug("%s E flag %d\n", __func__, flag);
11720
11721 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11722 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11723 __func__, is_custom_stereo_on, flag);
11724 return 0;
11725 }
11726 is_custom_stereo_on = flag ? true : false;
11727 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11728 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11729 port_id = msm_bedais[be_index].port_id;
11730 if (!msm_bedais[be_index].active)
11731 continue;
11732 if ((port_id != SLIMBUS_0_RX) &&
11733 (port_id != RT_PROXY_PORT_001_RX) &&
11734 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11735 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11736 continue;
11737
11738 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11739 MSM_FRONTEND_DAI_MM_SIZE) {
11740 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11741 LEGACY_PCM_MODE)
11742 goto skip_send_custom_stereo;
11743 session_id =
11744 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11745 if (is_custom_stereo_on) {
11746 op_FL_ip_FL_weight =
11747 Q14_GAIN_ZERO_POINT_FIVE;
11748 op_FL_ip_FR_weight =
11749 Q14_GAIN_ZERO_POINT_FIVE;
11750 op_FR_ip_FL_weight =
11751 Q14_GAIN_ZERO_POINT_FIVE;
11752 op_FR_ip_FR_weight =
11753 Q14_GAIN_ZERO_POINT_FIVE;
11754 } else {
11755 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11756 op_FL_ip_FR_weight = 0;
11757 op_FR_ip_FL_weight = 0;
11758 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11759 }
11760 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11761 unsigned long copp =
11762 session_copp_map[i]
11763 [SESSION_TYPE_RX][be_index];
11764 if (!test_bit(idx, &copp))
11765 goto skip_send_custom_stereo;
11766 topo_id = adm_get_topology_for_port_copp_idx(
11767 msm_bedais[be_index].port_id, idx);
11768 if (topo_id < 0)
11769 pr_debug("%s:Err:custom stereo topo %d",
11770 __func__, topo_id);
11771 pr_debug("idx %d\n", idx);
11772 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11773 rc = msm_ds2_dap_set_custom_stereo_onoff
11774 (msm_bedais[be_index].port_id,
11775 idx, is_custom_stereo_on);
11776 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11777 rc = dolby_dap_set_custom_stereo_onoff(
11778 msm_bedais[be_index].port_id,
11779 idx, is_custom_stereo_on);
11780 else
11781 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11782 (msm_bedais[be_index].port_id,
11783 idx, session_id,
11784 op_FL_ip_FL_weight,
11785 op_FL_ip_FR_weight,
11786 op_FR_ip_FL_weight,
11787 op_FR_ip_FR_weight);
11788 if (rc < 0)
11789skip_send_custom_stereo:
11790 pr_err("%s: err setting custom stereo\n",
11791 __func__);
11792 }
11793
11794 }
11795 }
11796 return 0;
11797}
11798
11799static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11800 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11801 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11802 msm_routing_put_stereo_to_custom_stereo_control),
11803};
11804
11805static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11806 struct snd_ctl_elem_value *ucontrol)
11807{
11808 return 0;
11809}
11810
11811static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11812 struct snd_ctl_elem_value *ucontrol)
11813{
11814 int i = 0, j;
11815 int num_app_types = ucontrol->value.integer.value[i++];
11816
11817 pr_debug("%s\n", __func__);
11818
11819 memset(app_type_cfg, 0, MAX_APP_TYPES*
11820 sizeof(struct msm_pcm_routing_app_type_data));
11821 if (num_app_types > MAX_APP_TYPES) {
11822 pr_err("%s: number of app types exceed the max supported\n",
11823 __func__);
11824 return -EINVAL;
11825 }
11826 for (j = 0; j < num_app_types; j++) {
11827 app_type_cfg[j].app_type =
11828 ucontrol->value.integer.value[i++];
11829 app_type_cfg[j].sample_rate =
11830 ucontrol->value.integer.value[i++];
11831 app_type_cfg[j].bit_width =
11832 ucontrol->value.integer.value[i++];
11833 }
11834
11835 return 0;
11836}
11837
11838static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
11839 struct snd_ctl_elem_value *ucontrol)
11840{
11841 int j, fe_id, be_id, port_type;
11842 int ret = 0;
11843 unsigned long copp;
11844 struct msm_pcm_routing_bdai_data *bedai;
11845 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11846 SESSION_TYPE_RX;
11847 int app_type = ucontrol->value.integer.value[1];
11848 int gain = (ucontrol->value.integer.value[2] +
11849 ucontrol->value.integer.value[3])/2;
11850
11851 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11852 MSM_AFE_PORT_TYPE_TX;
11853
11854 mutex_lock(&routing_lock);
11855 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11856 if (is_be_dai_extproc(be_id))
11857 continue;
11858
11859 bedai = &msm_bedais[be_id];
11860 if (afe_get_port_type(bedai->port_id) != port_type)
11861 continue;
11862
11863 if (!bedai->active)
11864 continue;
11865
11866 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11867 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11868 continue;
11869
11870 if (app_type !=
11871 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11872 continue;
11873
11874 copp = session_copp_map[fe_id][dir][be_id];
11875 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
11876 if (!test_bit(j, &copp))
11877 continue;
11878 ret |= adm_set_volume(bedai->port_id, j, gain);
11879 }
11880 }
11881 }
11882 mutex_unlock(&routing_lock);
11883 return ret ? -EINVAL : 0;
11884}
11885
11886static const struct snd_kcontrol_new app_type_cfg_controls[] = {
11887 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
11888 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
11889 msm_routing_put_app_type_cfg_control),
11890 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
11891 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
11892};
11893
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070011894static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
11895 struct snd_ctl_elem_value *ucontrol)
11896{
11897 int copp_idx, fe_id, be_id, port_type;
11898 int ret = 0;
11899 unsigned long copp;
11900 struct msm_pcm_routing_bdai_data *bedai;
11901 char *param_data = NULL;
11902 uint32_t *update_param_data = NULL;
11903 uint32_t param_size = sizeof(uint32_t) +
11904 sizeof(struct adm_param_data_v5);
11905 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11906 SESSION_TYPE_RX;
11907 int app_type = ucontrol->value.integer.value[1];
11908 int module_id = ucontrol->value.integer.value[2];
11909 int instance_id = ucontrol->value.integer.value[3];
11910 int param_id = ucontrol->value.integer.value[4];
11911 int param_value = ucontrol->value.integer.value[5];
11912
11913 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11914 MSM_AFE_PORT_TYPE_TX;
11915 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
11916 __func__, app_type, module_id,
11917 instance_id, param_id, param_value);
11918
11919 param_data = kzalloc(param_size, GFP_KERNEL);
11920 if (!param_data)
11921 return -ENOMEM;
11922
11923 update_param_data = (uint32_t *)param_data;
11924 *update_param_data++ = module_id;
11925 *update_param_data++ = param_id;
11926 *update_param_data++ = sizeof(uint32_t);
11927 *update_param_data++ = param_value;
11928
11929 mutex_lock(&routing_lock);
11930 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11931 if (is_be_dai_extproc(be_id))
11932 continue;
11933
11934 bedai = &msm_bedais[be_id];
11935 if (afe_get_port_type(bedai->port_id) != port_type)
11936 continue;
11937
11938 if (!bedai->active)
11939 continue;
11940
11941 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11942 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11943 continue;
11944
11945 if (app_type !=
11946 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11947 continue;
11948
11949 copp = session_copp_map[fe_id][dir][be_id];
11950 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
11951 copp_idx++) {
11952 if (!test_bit(copp_idx, &copp))
11953 continue;
11954
11955 ret = adm_send_params_v5(bedai->port_id,
11956 copp_idx,
11957 param_data,
11958 param_size);
11959 if (ret) {
11960 pr_err("%s: Setting param failed with err=%d\n",
11961 __func__, ret);
11962 ret = -EINVAL;
11963 goto done;
11964 }
11965 }
11966 }
11967 }
11968done:
11969 mutex_unlock(&routing_lock);
11970 kfree(param_data);
11971 return ret;
11972}
11973
11974static const struct snd_kcontrol_new module_cfg_controls[] = {
11975 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
11976 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
11977};
11978
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011979static int msm_routing_get_lsm_app_type_cfg_control(
11980 struct snd_kcontrol *kcontrol,
11981 struct snd_ctl_elem_value *ucontrol)
11982{
11983 return 0;
11984}
11985
11986static int msm_routing_put_lsm_app_type_cfg_control(
11987 struct snd_kcontrol *kcontrol,
11988 struct snd_ctl_elem_value *ucontrol)
11989{
11990 int i = 0, j;
11991 int num_app_types = ucontrol->value.integer.value[i++];
11992
11993 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
11994 sizeof(struct msm_pcm_routing_app_type_data));
11995 if (num_app_types > MAX_APP_TYPES) {
11996 pr_err("%s: number of app types exceed the max supported\n",
11997 __func__);
11998 return -EINVAL;
11999 }
12000 for (j = 0; j < num_app_types; j++) {
12001 lsm_app_type_cfg[j].app_type =
12002 ucontrol->value.integer.value[i++];
12003 lsm_app_type_cfg[j].sample_rate =
12004 ucontrol->value.integer.value[i++];
12005 lsm_app_type_cfg[j].bit_width =
12006 ucontrol->value.integer.value[i++];
12007 }
12008
12009 return 0;
12010}
12011
12012static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
12013 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
12014 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
12015 msm_routing_put_lsm_app_type_cfg_control),
12016};
12017
12018static int msm_routing_get_use_ds1_or_ds2_control(
12019 struct snd_kcontrol *kcontrol,
12020 struct snd_ctl_elem_value *ucontrol)
12021{
12022 ucontrol->value.integer.value[0] = is_ds2_on;
12023 return 0;
12024}
12025
12026static int msm_routing_put_use_ds1_or_ds2_control(
12027 struct snd_kcontrol *kcontrol,
12028 struct snd_ctl_elem_value *ucontrol)
12029{
12030 is_ds2_on = ucontrol->value.integer.value[0];
12031 return 0;
12032}
12033
12034static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
12035 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
12036 1, 0, msm_routing_get_use_ds1_or_ds2_control,
12037 msm_routing_put_use_ds1_or_ds2_control),
12038};
12039
12040int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
12041 struct snd_ctl_elem_value *ucontrol) {
12042 int rc = 0;
12043 int be_idx = 0;
12044 char *param_value;
12045 int *update_param_value;
12046 uint32_t param_length = sizeof(uint32_t);
12047 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
12048
12049 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
12050 if (!param_value)
12051 return -ENOMEM;
12052
12053 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
12054 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
12055 break;
12056 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
12057 rc = adm_get_params(SLIMBUS_0_TX, 0,
12058 RMS_MODULEID_APPI_PASSTHRU,
12059 RMS_PARAM_FIRST_SAMPLE,
12060 param_length + param_payload_len,
12061 param_value);
12062 if (rc) {
12063 pr_err("%s: get parameters failed:%d\n", __func__, rc);
12064 kfree(param_value);
12065 return -EINVAL;
12066 }
12067 update_param_value = (int *)param_value;
12068 ucontrol->value.integer.value[0] = update_param_value[0];
12069
12070 pr_debug("%s: FROM DSP value[0] 0x%x\n",
12071 __func__, update_param_value[0]);
12072 }
12073 kfree(param_value);
12074 return 0;
12075}
12076
12077static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
12078 struct snd_ctl_elem_value *ucontrol)
12079{
12080 voc_session_id = ucontrol->value.integer.value[0];
12081
12082 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
12083
12084 return 0;
12085}
12086
12087static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
12088 struct snd_ctl_elem_value *ucontrol)
12089{
12090 ucontrol->value.integer.value[0] = voc_session_id;
12091
12092 return 0;
12093}
12094
12095static struct snd_kcontrol_new msm_voc_session_controls[] = {
12096 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
12097 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
12098 msm_voc_session_id_put),
12099};
12100
12101static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
12102 struct snd_ctl_elem_info *uinfo)
12103{
12104 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12105 uinfo->count = sizeof(struct sound_focus_param);
12106
12107 return 0;
12108}
12109
12110static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
12111 struct snd_ctl_elem_value *ucontrol)
12112{
12113 int ret = 0;
12114 struct sound_focus_param soundFocusData;
12115
12116 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12117 sizeof(struct sound_focus_param));
12118 ret = voc_set_sound_focus(soundFocusData);
12119 if (ret) {
12120 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12121 __func__, ret);
12122
12123 ret = -EINVAL;
12124 }
12125
12126 return ret;
12127}
12128
12129static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
12130 struct snd_ctl_elem_value *ucontrol)
12131{
12132 int ret = 0;
12133 struct sound_focus_param soundFocusData;
12134
12135 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
12136
12137 ret = voc_get_sound_focus(&soundFocusData);
12138 if (ret) {
12139 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12140 __func__, ret);
12141
12142 ret = -EINVAL;
12143 goto done;
12144 }
12145 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12146 sizeof(struct sound_focus_param));
12147
12148done:
12149 return ret;
12150}
12151
12152static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
12153 struct snd_ctl_elem_info *uinfo)
12154{
12155 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12156 uinfo->count = sizeof(struct source_tracking_param);
12157
12158 return 0;
12159}
12160
12161static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
12162 struct snd_ctl_elem_value *ucontrol)
12163{
12164 int ret = 0;
12165 struct source_tracking_param sourceTrackingData;
12166
12167 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
12168
12169 ret = voc_get_source_tracking(&sourceTrackingData);
12170 if (ret) {
12171 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12172 __func__, ret);
12173
12174 ret = -EINVAL;
12175 goto done;
12176 }
12177 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12178 sizeof(struct source_tracking_param));
12179
12180done:
12181 return ret;
12182}
12183
12184static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
12185 int *copp_idx)
12186{
12187 int i, idx, be_idx;
12188 int ret = 0;
12189 unsigned long copp;
12190
12191 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
12192
12193 ret = q6audio_validate_port(port_id);
12194 if (ret < 0) {
12195 pr_err("%s: port validation failed id 0x%x ret %d\n",
12196 __func__, port_id, ret);
12197
12198 ret = -EINVAL;
12199 goto done;
12200 }
12201
12202 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
12203 if (msm_bedais[be_idx].port_id == port_id)
12204 break;
12205 }
12206 if (be_idx >= MSM_BACKEND_DAI_MAX) {
12207 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
12208
12209 ret = -EINVAL;
12210 goto done;
12211 }
12212
12213 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
12214 MSM_FRONTEND_DAI_MM_SIZE) {
12215 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
12216 copp = session_copp_map[i]
12217 [session_type][be_idx];
12218 if (test_bit(idx, &copp))
12219 break;
12220 }
12221 if (idx >= MAX_COPPS_PER_PORT)
12222 continue;
12223 else
12224 break;
12225 }
12226 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
12227 pr_err("%s: Invalid FE, exiting\n", __func__);
12228
12229 ret = -EINVAL;
12230 goto done;
12231 }
12232 *copp_idx = idx;
12233 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
12234
12235done:
12236 return ret;
12237}
12238
12239static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
12240 const char *prefix, int *port_id)
12241{
12242 int ret = 0;
12243
12244 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
12245
12246 /*
12247 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
12248 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
12249 * and compare the string with the backend name to derive the port id.
12250 */
12251 if (!strcmp(kcontrol->id.name + strlen(prefix),
12252 "SLIMBUS_0")) {
12253 *port_id = SLIMBUS_0_TX;
12254 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12255 "TERT_MI2S")) {
12256 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
12257 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12258 "INT3_MI2S")) {
12259 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
12260 } else {
12261 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
12262 __func__, kcontrol->id.name);
12263
12264 ret = -EINVAL;
12265 goto done;
12266 }
12267 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
12268 __func__, kcontrol->id.name, *port_id);
12269
12270done:
12271 return ret;
12272}
12273
12274static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
12275 struct snd_ctl_elem_value *ucontrol)
12276{
12277 int ret = 0;
12278 struct sound_focus_param soundFocusData;
12279 int port_id, copp_idx;
12280
12281 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12282 "Sound Focus Audio Tx ", &port_id);
12283 if (ret != 0) {
12284 pr_err("%s: Error in deriving port id, err=%d\n",
12285 __func__, ret);
12286
12287 ret = -EINVAL;
12288 goto done;
12289 }
12290
12291 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12292 &copp_idx);
12293 if (ret) {
12294 pr_err("%s: Could not get copp idx for port_id=%d\n",
12295 __func__, port_id);
12296
12297 ret = -EINVAL;
12298 goto done;
12299 }
12300
12301 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12302 sizeof(struct sound_focus_param));
12303
12304 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
12305 if (ret) {
12306 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12307 __func__, ret);
12308
12309 ret = -EINVAL;
12310 goto done;
12311 }
12312
12313done:
12314 return ret;
12315}
12316
12317static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
12318 struct snd_ctl_elem_value *ucontrol)
12319{
12320 int ret = 0;
12321 struct sound_focus_param soundFocusData;
12322 int port_id, copp_idx;
12323
12324 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12325 "Sound Focus Audio Tx ", &port_id);
12326 if (ret) {
12327 pr_err("%s: Error in deriving port id, err=%d\n",
12328 __func__, ret);
12329
12330 ret = -EINVAL;
12331 goto done;
12332 }
12333
12334 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12335 &copp_idx);
12336 if (ret) {
12337 pr_err("%s: Could not get copp idx for port_id=%d\n",
12338 __func__, port_id);
12339
12340 ret = -EINVAL;
12341 goto done;
12342 }
12343
12344 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
12345 if (ret) {
12346 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12347 __func__, ret);
12348
12349 ret = -EINVAL;
12350 goto done;
12351 }
12352
12353 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12354 sizeof(struct sound_focus_param));
12355
12356done:
12357 return ret;
12358}
12359
12360static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
12361 struct snd_ctl_elem_value *ucontrol)
12362{
12363 int ret = 0;
12364 struct source_tracking_param sourceTrackingData;
12365 int port_id, copp_idx;
12366
12367 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12368 "Source Tracking Audio Tx ", &port_id);
12369 if (ret) {
12370 pr_err("%s: Error in deriving port id, err=%d\n",
12371 __func__, ret);
12372
12373 ret = -EINVAL;
12374 goto done;
12375 }
12376
12377 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12378 &copp_idx);
12379 if (ret) {
12380 pr_err("%s: Could not get copp idx for port_id=%d\n",
12381 __func__, port_id);
12382
12383 ret = -EINVAL;
12384 goto done;
12385 }
12386
12387 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
12388 if (ret) {
12389 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12390 __func__, ret);
12391
12392 ret = -EINVAL;
12393 goto done;
12394 }
12395
12396 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12397 sizeof(struct source_tracking_param));
12398
12399done:
12400 return ret;
12401}
12402
12403static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12404 {
12405 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12406 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12407 .name = "Sound Focus Voice Tx SLIMBUS_0",
12408 .info = msm_sound_focus_info,
12409 .get = msm_voice_sound_focus_get,
12410 .put = msm_voice_sound_focus_put,
12411 },
12412 {
12413 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12414 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12415 .name = "Source Tracking Voice Tx SLIMBUS_0",
12416 .info = msm_source_tracking_info,
12417 .get = msm_voice_source_tracking_get,
12418 },
12419 {
12420 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12421 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12422 .name = "Sound Focus Audio Tx SLIMBUS_0",
12423 .info = msm_sound_focus_info,
12424 .get = msm_audio_sound_focus_get,
12425 .put = msm_audio_sound_focus_put,
12426 },
12427 {
12428 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12429 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12430 .name = "Source Tracking Audio Tx SLIMBUS_0",
12431 .info = msm_source_tracking_info,
12432 .get = msm_audio_source_tracking_get,
12433 },
12434 {
12435 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12436 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12437 .name = "Sound Focus Voice Tx TERT_MI2S",
12438 .info = msm_sound_focus_info,
12439 .get = msm_voice_sound_focus_get,
12440 .put = msm_voice_sound_focus_put,
12441 },
12442 {
12443 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12444 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12445 .name = "Source Tracking Voice Tx TERT_MI2S",
12446 .info = msm_source_tracking_info,
12447 .get = msm_voice_source_tracking_get,
12448 },
12449 {
12450 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12451 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12452 .name = "Sound Focus Audio Tx TERT_MI2S",
12453 .info = msm_sound_focus_info,
12454 .get = msm_audio_sound_focus_get,
12455 .put = msm_audio_sound_focus_put,
12456 },
12457 {
12458 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12459 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12460 .name = "Source Tracking Audio Tx TERT_MI2S",
12461 .info = msm_source_tracking_info,
12462 .get = msm_audio_source_tracking_get,
12463 },
12464 {
12465 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12466 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12467 .name = "Sound Focus Voice Tx INT3_MI2S",
12468 .info = msm_sound_focus_info,
12469 .get = msm_voice_sound_focus_get,
12470 .put = msm_voice_sound_focus_put,
12471 },
12472 {
12473 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12474 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12475 .name = "Source Tracking Voice Tx INT3_MI2S",
12476 .info = msm_source_tracking_info,
12477 .get = msm_voice_source_tracking_get,
12478 },
12479 {
12480 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12481 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12482 .name = "Sound Focus Audio Tx INT3_MI2S",
12483 .info = msm_sound_focus_info,
12484 .get = msm_audio_sound_focus_get,
12485 .put = msm_audio_sound_focus_put,
12486 },
12487 {
12488 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12489 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12490 .name = "Source Tracking Audio Tx INT3_MI2S",
12491 .info = msm_source_tracking_info,
12492 .get = msm_audio_source_tracking_get,
12493 },
12494};
12495
12496static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12497 struct snd_ctl_elem_value *ucontrol)
12498{
12499 int ret = 0;
12500 int item;
12501 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12502
12503 pr_debug("%s item is %d\n", __func__,
12504 ucontrol->value.enumerated.item[0]);
12505 mutex_lock(&routing_lock);
12506 item = ucontrol->value.enumerated.item[0];
12507 if (item < e->items) {
12508 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12509 __func__, e->shift_l, e->values[item]);
12510 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12511 e->values[item] < MSM_BACKEND_DAI_MAX)
12512 /* Enable feedback TX path */
12513 ret = afe_spk_prot_feed_back_cfg(
12514 msm_bedais[e->values[item]].port_id,
12515 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12516 else {
12517 pr_debug("%s values are out of range item %d\n",
12518 __func__, e->values[item]);
12519 /* Disable feedback TX path */
12520 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12521 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12522 else
12523 ret = -EINVAL;
12524 }
12525 } else {
12526 pr_err("%s item value is out of range item\n", __func__);
12527 ret = -EINVAL;
12528 }
12529 mutex_unlock(&routing_lock);
12530 return ret;
12531}
12532
12533static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12534 struct snd_ctl_elem_value *ucontrol)
12535{
12536 int ret = 0;
12537 int item;
12538 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12539
12540 pr_debug("%s item is %d\n", __func__,
12541 ucontrol->value.enumerated.item[0]);
12542 mutex_lock(&routing_lock);
12543 item = ucontrol->value.enumerated.item[0];
12544 if (item < e->items) {
12545 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12546 __func__, e->shift_l, e->values[item]);
12547 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12548 e->values[item] < MSM_BACKEND_DAI_MAX)
12549 /* Enable feedback TX path */
12550 ret = afe_spk_prot_feed_back_cfg(
12551 msm_bedais[e->values[item]].port_id,
12552 msm_bedais[e->shift_l].port_id,
12553 1, 1, 1);
12554 else {
12555 pr_debug("%s values are out of range item %d\n",
12556 __func__, e->values[item]);
12557 /* Disable feedback TX path */
12558 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12559 ret = afe_spk_prot_feed_back_cfg(0,
12560 0, 0, 0, 0);
12561 else
12562 ret = -EINVAL;
12563 }
12564 } else {
12565 pr_err("%s item value is out of range item\n", __func__);
12566 ret = -EINVAL;
12567 }
12568 mutex_unlock(&routing_lock);
12569 return ret;
12570}
12571
12572static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12573 struct snd_ctl_elem_value *ucontrol)
12574{
12575 pr_debug("%s\n", __func__);
12576 return 0;
12577}
12578
12579static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12580 struct snd_ctl_elem_value *ucontrol)
12581{
12582 pr_debug("%s\n", __func__);
12583 ucontrol->value.enumerated.item[0] = 0;
12584 return 0;
12585}
12586
12587static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12588 "ZERO", "SLIM4_TX"
12589};
12590
12591static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12592 "ZERO", "SLIM4_TX"
12593};
12594
12595static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12596 "ZERO", "SENARY_TX"
12597};
12598
12599static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12600 "ZERO", "INT5_MI2S_TX"
12601};
12602
12603static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12604 "ZERO", "INT5_MI2S_TX"
12605};
12606
12607static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12608 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12609};
12610
12611static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12612 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12613};
12614
12615static const int const mi2s_rx_vi_fb_tx_value[] = {
12616 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12617};
12618
12619static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12620 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12621};
12622
12623static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12624 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12625};
12626
12627static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
12628 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12629 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12630 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12631
12632static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
12633 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12634 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12635 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12636
12637static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
12638 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
12639 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12640 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12641
12642static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
12643 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12644 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12645 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12646 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12647
12648static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
12649 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12650 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12651 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12652 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12653
12654static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12655 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12656 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12657 spkr_prot_put_vi_lch_port);
12658
12659static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12660 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12661 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12662 spkr_prot_put_vi_rch_port);
12663
12664static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12665 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12666 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12667 spkr_prot_put_vi_lch_port);
12668
12669static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12670 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12671 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12672 spkr_prot_put_vi_lch_port);
12673
12674static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12675 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12676 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12677 spkr_prot_put_vi_rch_port);
12678
12679static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12680 /* Frontend AIF */
12681 /* Widget name equals to Front-End DAI name<Need confirmation>,
12682 * Stream name must contains substring of front-end dai name
12683 */
12684 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12685 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12686 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12687 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12688 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12689 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12690 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12691 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12692 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12693 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12694 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12695 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12696 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12697 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12698 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12699 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12700 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12701 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12702 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12703 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12704 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12705 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12706 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12707 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12708 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12709 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012710 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012711 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012712 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12713 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12714 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12715 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012716 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12717 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12718 "VoiceMMode1 Playback", 0, 0, 0, 0),
12719 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12720 "VoiceMMode1 Capture", 0, 0, 0, 0),
12721 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12722 "VoiceMMode2 Playback", 0, 0, 0, 0),
12723 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12724 "VoiceMMode2 Capture", 0, 0, 0, 0),
12725 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12726 0, 0, 0, 0),
12727 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12728 0, 0, 0, 0),
12729 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12730 0, 0, 0, 0),
12731 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12732 0, 0, 0, 0),
12733 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12734 0, 0, 0, 0),
12735 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12736 0, 0, 0, 0),
12737 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12738 0, 0, 0, 0),
12739 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12740 0, 0, 0, 0),
12741 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12742 0, 0, 0, 0),
12743 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12744 0, 0, 0, 0),
12745 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12746 0, 0, 0, 0),
12747 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12748 0, 0, 0, 0),
12749 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12750 0, 0, 0, 0),
12751 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12752 0, 0, 0, 0),
12753 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12754 0, 0, 0, 0),
12755 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12756 0, 0, 0, 0),
12757 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12758 0, 0, 0, 0),
12759 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12760 0, 0, 0, 0),
12761 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12762 0, 0, 0, 0),
12763 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12764 0, 0, 0, 0),
12765 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12766 0, 0, 0, 0),
12767 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12768 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12769 0, 0, 0, 0),
12770 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12771 "INT0 MI2S_RX Hostless Playback",
12772 0, 0, 0, 0),
12773 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12774 "INT4 MI2S_RX Hostless Playback",
12775 0, 0, 0, 0),
12776 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12777 "Primary MI2S_RX Hostless Playback",
12778 0, 0, 0, 0),
12779 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12780 "Secondary MI2S_RX Hostless Playback",
12781 0, 0, 0, 0),
12782 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12783 "Tertiary MI2S_RX Hostless Playback",
12784 0, 0, 0, 0),
12785 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12786 "Quaternary MI2S_RX Hostless Playback",
12787 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012788 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12789 "Quinary MI2S_RX Hostless Playback",
12790 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012791
12792 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12793 0, 0, 0, 0),
12794 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
12795 0, 0, 0, 0),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080012796 SND_SOC_DAPM_AIF_IN("SEC_AUXPCM_DL_HL", "SEC_AUXPCM_HOSTLESS Playback",
12797 0, 0, 0, 0),
12798 SND_SOC_DAPM_AIF_OUT("SEC_AUXPCM_UL_HL", "SEC_AUXPCM_HOSTLESS Capture",
12799 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012800 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
12801 0, 0, 0, 0),
12802 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
12803 "INT3 MI2S_TX Hostless Capture",
12804 0, 0, 0, 0),
12805 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
12806 "Tertiary MI2S_TX Hostless Capture",
12807 0, 0, 0, 0),
12808 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
12809 "Secondary MI2S_TX Hostless Capture",
12810 0, 0, 0, 0),
12811 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
12812 "Primary MI2S_TX Hostless Capture",
12813 0, 0, 0, 0),
12814 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
12815 0, 0, 0, 0),
12816 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
12817 0, 0, 0, 0),
12818 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
12819 "Quaternary MI2S_TX Hostless Capture",
12820 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012821 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
12822 "Quinary MI2S_TX Hostless Capture",
12823 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012824
12825 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
12826 "Primary TDM0 Hostless Playback",
12827 0, 0, 0, 0),
12828 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
12829 "Primary TDM0 Hostless Capture",
12830 0, 0, 0, 0),
12831 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
12832 "Primary TDM1 Hostless Playback",
12833 0, 0, 0, 0),
12834 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
12835 "Primary TDM1 Hostless Capture",
12836 0, 0, 0, 0),
12837 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
12838 "Primary TDM2 Hostless Playback",
12839 0, 0, 0, 0),
12840 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
12841 "Primary TDM2 Hostless Capture",
12842 0, 0, 0, 0),
12843 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
12844 "Primary TDM3 Hostless Playback",
12845 0, 0, 0, 0),
12846 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
12847 "Primary TDM3 Hostless Capture",
12848 0, 0, 0, 0),
12849 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
12850 "Primary TDM4 Hostless Playback",
12851 0, 0, 0, 0),
12852 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
12853 "Primary TDM4 Hostless Capture",
12854 0, 0, 0, 0),
12855 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
12856 "Primary TDM5 Hostless Playback",
12857 0, 0, 0, 0),
12858 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
12859 "Primary TDM5 Hostless Capture",
12860 0, 0, 0, 0),
12861 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
12862 "Primary TDM6 Hostless Playback",
12863 0, 0, 0, 0),
12864 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
12865 "Primary TDM6 Hostless Capture",
12866 0, 0, 0, 0),
12867 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
12868 "Primary TDM7 Hostless Playback",
12869 0, 0, 0, 0),
12870 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
12871 "Primary TDM7 Hostless Capture",
12872 0, 0, 0, 0),
12873 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
12874 "Secondary TDM0 Hostless Playback",
12875 0, 0, 0, 0),
12876 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
12877 "Secondary TDM0 Hostless Capture",
12878 0, 0, 0, 0),
12879 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
12880 "Secondary TDM1 Hostless Playback",
12881 0, 0, 0, 0),
12882 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
12883 "Secondary TDM1 Hostless Capture",
12884 0, 0, 0, 0),
12885 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
12886 "Secondary TDM2 Hostless Playback",
12887 0, 0, 0, 0),
12888 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
12889 "Secondary TDM2 Hostless Capture",
12890 0, 0, 0, 0),
12891 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
12892 "Secondary TDM3 Hostless Playback",
12893 0, 0, 0, 0),
12894 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
12895 "Secondary TDM3 Hostless Capture",
12896 0, 0, 0, 0),
12897 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
12898 "Secondary TDM4 Hostless Playback",
12899 0, 0, 0, 0),
12900 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
12901 "Secondary TDM4 Hostless Capture",
12902 0, 0, 0, 0),
12903 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
12904 "Secondary TDM5 Hostless Playback",
12905 0, 0, 0, 0),
12906 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
12907 "Secondary TDM5 Hostless Capture",
12908 0, 0, 0, 0),
12909 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
12910 "Secondary TDM6 Hostless Playback",
12911 0, 0, 0, 0),
12912 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
12913 "Secondary TDM6 Hostless Capture",
12914 0, 0, 0, 0),
12915 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
12916 "Secondary TDM7 Hostless Playback",
12917 0, 0, 0, 0),
12918 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
12919 "Secondary TDM7 Hostless Capture",
12920 0, 0, 0, 0),
12921 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
12922 "Tertiary TDM0 Hostless Playback",
12923 0, 0, 0, 0),
12924 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
12925 "Tertiary TDM0 Hostless Capture",
12926 0, 0, 0, 0),
12927 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
12928 "Tertiary TDM1 Hostless Playback",
12929 0, 0, 0, 0),
12930 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
12931 "Tertiary TDM1 Hostless Capture",
12932 0, 0, 0, 0),
12933 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
12934 "Tertiary TDM2 Hostless Playback",
12935 0, 0, 0, 0),
12936 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
12937 "Tertiary TDM2 Hostless Capture",
12938 0, 0, 0, 0),
12939 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
12940 "Tertiary TDM3 Hostless Playback",
12941 0, 0, 0, 0),
12942 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
12943 "Tertiary TDM3 Hostless Capture",
12944 0, 0, 0, 0),
12945 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
12946 "Tertiary TDM4 Hostless Playback",
12947 0, 0, 0, 0),
12948 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
12949 "Tertiary TDM4 Hostless Capture",
12950 0, 0, 0, 0),
12951 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
12952 "Tertiary TDM5 Hostless Playback",
12953 0, 0, 0, 0),
12954 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
12955 "Tertiary TDM5 Hostless Capture",
12956 0, 0, 0, 0),
12957 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
12958 "Tertiary TDM6 Hostless Playback",
12959 0, 0, 0, 0),
12960 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
12961 "Tertiary TDM6 Hostless Capture",
12962 0, 0, 0, 0),
12963 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
12964 "Tertiary TDM7 Hostless Playback",
12965 0, 0, 0, 0),
12966 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
12967 "Tertiary TDM7 Hostless Capture",
12968 0, 0, 0, 0),
12969 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
12970 "Quaternary TDM0 Hostless Playback",
12971 0, 0, 0, 0),
12972 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
12973 "Quaternary TDM0 Hostless Capture",
12974 0, 0, 0, 0),
12975 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
12976 "Quaternary TDM1 Hostless Playback",
12977 0, 0, 0, 0),
12978 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
12979 "Quaternary TDM1 Hostless Capture",
12980 0, 0, 0, 0),
12981 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
12982 "Quaternary TDM2 Hostless Playback",
12983 0, 0, 0, 0),
12984 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
12985 "Quaternary TDM2 Hostless Capture",
12986 0, 0, 0, 0),
12987 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
12988 "Quaternary TDM3 Hostless Playback",
12989 0, 0, 0, 0),
12990 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
12991 "Quaternary TDM3 Hostless Capture",
12992 0, 0, 0, 0),
12993 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
12994 "Quaternary TDM4 Hostless Playback",
12995 0, 0, 0, 0),
12996 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
12997 "Quaternary TDM4 Hostless Capture",
12998 0, 0, 0, 0),
12999 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
13000 "Quaternary TDM5 Hostless Playback",
13001 0, 0, 0, 0),
13002 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
13003 "Quaternary TDM5 Hostless Capture",
13004 0, 0, 0, 0),
13005 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
13006 "Quaternary TDM6 Hostless Playback",
13007 0, 0, 0, 0),
13008 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
13009 "Quaternary TDM6 Hostless Capture",
13010 0, 0, 0, 0),
13011 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
13012 "Quaternary TDM7 Hostless Playback",
13013 0, 0, 0, 0),
13014 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
13015 "Quaternary TDM7 Hostless Capture",
13016 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013017 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
13018 "Quinary TDM0 Hostless Playback",
13019 0, 0, 0, 0),
13020 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
13021 "Quinary TDM0 Hostless Capture",
13022 0, 0, 0, 0),
13023 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
13024 "Quinary TDM1 Hostless Playback",
13025 0, 0, 0, 0),
13026 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
13027 "Quinary TDM1 Hostless Capture",
13028 0, 0, 0, 0),
13029 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
13030 "Quinary TDM2 Hostless Playback",
13031 0, 0, 0, 0),
13032 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
13033 "Quinary TDM2 Hostless Capture",
13034 0, 0, 0, 0),
13035 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
13036 "Quinary TDM3 Hostless Playback",
13037 0, 0, 0, 0),
13038 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
13039 "Quinary TDM3 Hostless Capture",
13040 0, 0, 0, 0),
13041 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
13042 "Quinary TDM4 Hostless Playback",
13043 0, 0, 0, 0),
13044 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
13045 "Quinary TDM4 Hostless Capture",
13046 0, 0, 0, 0),
13047 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
13048 "Quinary TDM5 Hostless Playback",
13049 0, 0, 0, 0),
13050 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
13051 "Quinary TDM5 Hostless Capture",
13052 0, 0, 0, 0),
13053 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
13054 "Quinary TDM6 Hostless Playback",
13055 0, 0, 0, 0),
13056 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
13057 "Quinary TDM6 Hostless Capture",
13058 0, 0, 0, 0),
13059 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
13060 "Quinary TDM7 Hostless Playback",
13061 0, 0, 0, 0),
13062 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
13063 "Quinary TDM7 Hostless Capture",
13064 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013065
13066 /* LSM */
13067 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
13068 0, 0, 0, 0),
13069 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
13070 0, 0, 0, 0),
13071 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
13072 0, 0, 0, 0),
13073 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
13074 0, 0, 0, 0),
13075 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
13076 0, 0, 0, 0),
13077 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
13078 0, 0, 0, 0),
13079 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
13080 0, 0, 0, 0),
13081 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
13082 0, 0, 0, 0),
13083 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
13084 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
13085 /* Backend AIF */
13086 /* Stream name equals to backend dai link stream name */
13087 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
13088 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
13089 0, 0, 0, 0),
13090 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
13091 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
13092 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
13093 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
13094 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
13095 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
13096 0, 0, 0, 0),
13097 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
13098 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
13099 0, 0, 0, 0),
13100 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
13101 0, 0, 0, 0),
13102 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
13103 0, 0, 0, 0),
13104 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
13105 "Secondary MI2S Playback SD1",
13106 0, 0, 0, 0),
13107 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
13108 0, 0, 0, 0),
13109 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
13110 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013111 SND_SOC_DAPM_AIF_OUT("INT2_MI2S_RX", "INT2 MI2S Playback",
13112 0, 0, 0, 0),
13113 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_RX", "INT3 MI2S Playback",
13114 0, 0, 0, 0),
13115 SND_SOC_DAPM_AIF_OUT("INT5_MI2S_RX", "INT5 MI2S Playback",
13116 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013117 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
13118 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013119 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_TX", "INT4 MI2S Capture",
13120 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013121 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
13122 0, 0, 0, 0),
13123 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
13124 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
13125 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
13126 0, 0, 0, 0),
13127 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
13128 0, 0, 0, 0),
13129 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
13130 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013131 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_TX", "INT0 MI2S Capture",
13132 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013133 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
13134 0, 0, 0, 0),
13135 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
13136 0, 0, 0, 0),
13137 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
13138 0, 0, 0, 0),
13139 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
13140 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
13141 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
13142 0, 0, 0, 0),
13143 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
13144 0, 0, 0, 0),
13145 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
13146 0, 0, 0, 0),
13147 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
13148 0, 0, 0, 0),
13149 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
13150 0, 0, 0, 0),
13151 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
13152 0, 0, 0, 0),
13153 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
13154 0, 0, 0, 0),
13155 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
13156 0, 0, 0, 0),
13157 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
13158 0, 0, 0, 0),
13159 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
13160 0, 0, 0, 0),
13161 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
13162 0, 0, 0, 0),
13163 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
13164 0, 0, 0, 0),
13165 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
13166 0, 0, 0, 0),
13167 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
13168 0, 0, 0, 0),
13169 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
13170 0, 0, 0, 0),
13171 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
13172 0, 0, 0, 0),
13173 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
13174 0, 0, 0, 0),
13175 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
13176 0, 0, 0, 0),
13177 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
13178 0, 0, 0, 0),
13179 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
13180 0, 0, 0, 0),
13181 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
13182 0, 0, 0, 0),
13183 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
13184 0, 0, 0, 0),
13185 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
13186 0, 0, 0, 0),
13187 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
13188 0, 0, 0, 0),
13189 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
13190 0, 0, 0, 0),
13191 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
13192 0, 0, 0, 0),
13193 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
13194 0, 0, 0, 0),
13195 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
13196 0, 0, 0, 0),
13197 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
13198 0, 0, 0, 0),
13199 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
13200 0, 0, 0, 0),
13201 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
13202 0, 0, 0, 0),
13203 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
13204 0, 0, 0, 0),
13205 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
13206 0, 0, 0, 0),
13207 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
13208 0, 0, 0, 0),
13209 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
13210 0, 0, 0, 0),
13211 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
13212 0, 0, 0, 0),
13213 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
13214 0, 0, 0, 0),
13215 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
13216 0, 0, 0, 0),
13217 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
13218 0, 0, 0, 0),
13219 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
13220 0, 0, 0, 0),
13221 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
13222 0, 0, 0, 0),
13223 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
13224 0, 0, 0, 0),
13225 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
13226 0, 0, 0, 0),
13227 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
13228 0, 0, 0, 0),
13229 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
13230 0, 0, 0, 0),
13231 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
13232 0, 0, 0, 0),
13233 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
13234 0, 0, 0, 0),
13235 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
13236 0, 0, 0, 0),
13237 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
13238 0, 0, 0, 0),
13239 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
13240 0, 0, 0, 0),
13241 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
13242 0, 0, 0, 0),
13243 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
13244 0, 0, 0, 0),
13245 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
13246 0, 0, 0, 0),
13247 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
13248 0, 0, 0, 0),
13249 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
13250 0, 0, 0, 0),
13251 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
13252 0, 0, 0, 0),
13253 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
13254 0, 0, 0, 0),
13255 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
13256 0, 0, 0, 0),
13257 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
13258 0, 0, 0, 0),
13259 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
13260 0, 0, 0, 0),
13261 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
13262 0, 0, 0, 0),
13263 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
13264 0, 0, 0, 0),
13265 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
13266 0, 0, 0, 0),
13267 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
13268 0, 0, 0, 0),
13269 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
13270 0, 0, 0, 0),
13271 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
13272 0, 0, 0, 0),
13273 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
13274 0, 0, 0, 0),
13275 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
13276 0, 0, 0, 0),
13277 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
13278 0, 0, 0, 0),
13279 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
13280 0, 0, 0, 0),
13281 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
13282 0, 0, 0, 0),
13283 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
13284 0, 0, 0, 0),
13285 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
13286 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013287 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
13288 0, 0, 0, 0),
13289 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
13290 0, 0, 0, 0),
13291 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
13292 0, 0, 0, 0),
13293 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
13294 0, 0, 0, 0),
13295 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
13296 0, 0, 0, 0),
13297 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
13298 0, 0, 0, 0),
13299 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
13300 0, 0, 0, 0),
13301 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
13302 0, 0, 0, 0),
13303 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
13304 0, 0, 0, 0),
13305 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
13306 0, 0, 0, 0),
13307 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
13308 0, 0, 0, 0),
13309 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
13310 0, 0, 0, 0),
13311 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
13312 0, 0, 0, 0),
13313 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
13314 0, 0, 0, 0),
13315 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
13316 0, 0, 0, 0),
13317 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
13318 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013319 /* incall */
13320 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
13321 0, 0, 0, 0),
13322 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
13323 0, 0, 0, 0),
13324 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
13325 0, 0, 0, 0),
13326 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
13327 0, 0, 0, 0),
13328 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
13329 0, 0, 0, 0),
13330 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
13331 0, 0, 0, 0),
13332 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
13333 0, 0, 0, 0),
13334 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
13335 0, 0, 0, 0),
13336 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
13337
13338 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
13339 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
13340 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
13341 0, 0, 0, 0),
13342 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
13343 0, 0, 0, 0),
13344 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
13345 0, 0, 0, 0),
13346 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
13347 0, 0, 0, 0),
13348 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
13349 0, 0, 0, 0),
13350 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
13351 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013352 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
13353 0, 0, 0, 0),
13354 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
13355 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013356 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
13357 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
13358 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
13359 0, 0, 0, 0),
13360 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
13361 0, 0, 0, 0),
13362 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
13363 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
13364 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
13365 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
13366 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
13367 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
13368 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
13369 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
13370 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
13371 /* In- call recording */
13372 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
13373 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
13374
13375 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
13376 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
13377
13378 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
13379 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
13380 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
13381 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
13382
13383 /* Switch Definitions */
13384 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
13385 &slim_fm_switch_mixer_controls),
13386 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
13387 &slim1_fm_switch_mixer_controls),
13388 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
13389 &slim3_fm_switch_mixer_controls),
13390 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
13391 &slim4_fm_switch_mixer_controls),
13392 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
13393 &slim6_fm_switch_mixer_controls),
13394 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13395 &pcm_rx_switch_mixer_controls),
13396 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13397 &int0_mi2s_rx_switch_mixer_controls),
13398 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13399 &int4_mi2s_rx_switch_mixer_controls),
13400 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13401 &pri_mi2s_rx_switch_mixer_controls),
13402 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13403 &sec_mi2s_rx_switch_mixer_controls),
13404 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13405 &tert_mi2s_rx_switch_mixer_controls),
13406 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13407 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013408 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13409 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013410 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13411 &hfp_pri_aux_switch_mixer_controls),
13412 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13413 &hfp_aux_switch_mixer_controls),
13414 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13415 &hfp_int_switch_mixer_controls),
13416 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13417 &hfp_slim7_switch_mixer_controls),
13418 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13419 &usb_switch_mixer_controls),
13420
13421 /* Mixer definitions */
13422 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13423 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13424 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13425 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13426 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13427 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13428 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13429 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13430 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13431 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13432 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13433 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13434 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13435 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13436 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13437 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13438 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13439 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13440 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13441 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13442 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13443 quaternary_mi2s_rx_mixer_controls,
13444 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13445 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13446 tertiary_mi2s_rx_mixer_controls,
13447 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13448 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13449 secondary_mi2s_rx_mixer_controls,
13450 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13451 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13452 secondary_mi2s_rx2_mixer_controls,
13453 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13454 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13455 primary_mi2s_rx_mixer_controls,
13456 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13457 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13458 int0_mi2s_rx_mixer_controls,
13459 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13460 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13461 int4_mi2s_rx_mixer_controls,
13462 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13463 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13464 quinary_mi2s_rx_mixer_controls,
13465 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13466 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13467 pri_tdm_rx_0_mixer_controls,
13468 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13469 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13470 pri_tdm_rx_1_mixer_controls,
13471 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13472 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13473 pri_tdm_rx_2_mixer_controls,
13474 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13475 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13476 pri_tdm_rx_3_mixer_controls,
13477 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13478 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13479 pri_tdm_tx_0_mixer_controls,
13480 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13481 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13482 sec_tdm_rx_0_mixer_controls,
13483 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13484 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13485 sec_tdm_rx_1_mixer_controls,
13486 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13487 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13488 sec_tdm_rx_2_mixer_controls,
13489 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13490 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13491 sec_tdm_rx_3_mixer_controls,
13492 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13493 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13494 sec_tdm_tx_0_mixer_controls,
13495 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13496 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13497 tert_tdm_rx_0_mixer_controls,
13498 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13499 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13500 tert_tdm_tx_0_mixer_controls,
13501 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13502 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13503 tert_tdm_rx_1_mixer_controls,
13504 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13505 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13506 tert_tdm_rx_2_mixer_controls,
13507 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13508 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13509 tert_tdm_rx_3_mixer_controls,
13510 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13511 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13512 tert_tdm_rx_4_mixer_controls,
13513 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13514 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13515 quat_tdm_rx_0_mixer_controls,
13516 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13517 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13518 quat_tdm_tx_0_mixer_controls,
13519 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13520 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13521 quat_tdm_rx_1_mixer_controls,
13522 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13523 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13524 quat_tdm_rx_2_mixer_controls,
13525 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13526 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13527 quat_tdm_rx_3_mixer_controls,
13528 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013529 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13530 quin_tdm_rx_0_mixer_controls,
13531 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13532 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13533 quin_tdm_tx_0_mixer_controls,
13534 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13535 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13536 quin_tdm_rx_1_mixer_controls,
13537 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13538 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13539 quin_tdm_rx_2_mixer_controls,
13540 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13541 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13542 quin_tdm_rx_3_mixer_controls,
13543 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013544 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13545 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13546 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13547 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13548 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13549 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13550 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13551 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13552 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13553 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13554 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13555 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13556 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13557 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13558 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13559 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013560 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13561 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013562 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13563 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013564 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13565 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13566 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13567 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13568 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13569 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13570 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13571 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053013572 SND_SOC_DAPM_MIXER("MultiMedia28 Mixer", SND_SOC_NOPM, 0, 0,
13573 mmul28_mixer_controls, ARRAY_SIZE(mmul28_mixer_controls)),
13574 SND_SOC_DAPM_MIXER("MultiMedia29 Mixer", SND_SOC_NOPM, 0, 0,
13575 mmul29_mixer_controls, ARRAY_SIZE(mmul29_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013576 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13577 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13578 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13579 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13580 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13581 tert_auxpcm_rx_mixer_controls,
13582 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13583 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13584 quat_auxpcm_rx_mixer_controls,
13585 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013586 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13587 quin_auxpcm_rx_mixer_controls,
13588 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013589 /* incall */
13590 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13591 incall_music_delivery_mixer_controls,
13592 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13593 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13594 incall_music2_delivery_mixer_controls,
13595 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13596 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13597 slimbus_4_rx_mixer_controls,
13598 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13599 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13600 slimbus_6_rx_mixer_controls,
13601 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13602 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13603 usb_audio_rx_mixer_controls,
13604 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13605 /* Voice Mixer */
13606 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13607 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13608 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13609 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13610 SND_SOC_NOPM, 0, 0,
13611 sec_i2s_rx_voice_mixer_controls,
13612 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13613 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13614 SND_SOC_NOPM, 0, 0,
13615 sec_mi2s_rx_voice_mixer_controls,
13616 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13617 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13618 SND_SOC_NOPM, 0, 0,
13619 slimbus_rx_voice_mixer_controls,
13620 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13621 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13622 SND_SOC_NOPM, 0, 0,
13623 bt_sco_rx_voice_mixer_controls,
13624 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13625 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13626 SND_SOC_NOPM, 0, 0,
13627 afe_pcm_rx_voice_mixer_controls,
13628 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13629 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13630 SND_SOC_NOPM, 0, 0,
13631 aux_pcm_rx_voice_mixer_controls,
13632 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13633 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13634 SND_SOC_NOPM, 0, 0,
13635 sec_aux_pcm_rx_voice_mixer_controls,
13636 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13637 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13638 SND_SOC_NOPM, 0, 0,
13639 tert_aux_pcm_rx_voice_mixer_controls,
13640 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13641 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13642 SND_SOC_NOPM, 0, 0,
13643 quat_aux_pcm_rx_voice_mixer_controls,
13644 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013645 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13646 SND_SOC_NOPM, 0, 0,
13647 quin_aux_pcm_rx_voice_mixer_controls,
13648 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013649 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13650 SND_SOC_NOPM, 0, 0,
13651 hdmi_rx_voice_mixer_controls,
13652 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13653 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13654 SND_SOC_NOPM, 0, 0,
13655 mi2s_rx_voice_mixer_controls,
13656 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13657 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13658 SND_SOC_NOPM, 0, 0,
13659 pri_mi2s_rx_voice_mixer_controls,
13660 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13661 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13662 SND_SOC_NOPM, 0, 0,
13663 int0_mi2s_rx_voice_mixer_controls,
13664 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13665 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13666 SND_SOC_NOPM, 0, 0,
13667 int4_mi2s_rx_voice_mixer_controls,
13668 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13669 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13670 SND_SOC_NOPM, 0, 0,
13671 tert_mi2s_rx_voice_mixer_controls,
13672 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13673 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13674 SND_SOC_NOPM, 0, 0,
13675 quat_mi2s_rx_voice_mixer_controls,
13676 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13677 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13678 SND_SOC_NOPM, 0, 0,
13679 quin_mi2s_rx_voice_mixer_controls,
13680 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
Raja Mallik321d5712018-05-04 17:22:11 +053013681 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0_Voice Mixer",
13682 SND_SOC_NOPM, 0, 0,
13683 pri_tdm_rx_0_voice_mixer_controls,
13684 ARRAY_SIZE(pri_tdm_rx_0_voice_mixer_controls)),
13685 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1_Voice Mixer",
13686 SND_SOC_NOPM, 0, 0,
13687 pri_tdm_rx_1_voice_mixer_controls,
13688 ARRAY_SIZE(pri_tdm_rx_1_voice_mixer_controls)),
13689 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2_Voice Mixer",
13690 SND_SOC_NOPM, 0, 0,
13691 pri_tdm_rx_2_voice_mixer_controls,
13692 ARRAY_SIZE(pri_tdm_rx_2_voice_mixer_controls)),
13693 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3_Voice Mixer",
13694 SND_SOC_NOPM, 0, 0,
13695 pri_tdm_rx_3_voice_mixer_controls,
13696 ARRAY_SIZE(pri_tdm_rx_3_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013697 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13698 SND_SOC_NOPM, 0, 0,
13699 quat_tdm_rx_2_voice_mixer_controls,
13700 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013701 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13702 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13703 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013704 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13705 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13706 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13707 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13708 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13709 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13710 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13711 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13712 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13713 int_bt_a2dp_rx_mixer_controls,
13714 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13715 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13716 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13717 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13718 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13719 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13720 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13721 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13722 tx_voice2_stub_mixer_controls,
13723 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13724 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13725 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13726 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13727 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13728 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13729 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13730 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13731 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13732 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13733 SND_SOC_NOPM, 0, 0,
13734 slimbus_6_rx_voice_mixer_controls,
13735 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13736 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13737 slimbus_7_rx_voice_mixer_controls,
13738 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13739 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13740 slimbus_8_rx_voice_mixer_controls,
13741 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13742 /* port mixer */
13743 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13744 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13745 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13746 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13747 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13748 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13749 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13750 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13751 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13752 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13753 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13754 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13755 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13756 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13757 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013758 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13759 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13760 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013761 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13762 sbus_1_rx_port_mixer_controls,
13763 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13764 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13765 bt_sco_rx_port_mixer_controls,
13766 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13767 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13768 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13769 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13770 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13771 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13772 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13773 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13774 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13775 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13776 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13777 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13778 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13779 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13780 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13781 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13782 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13783 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13784 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13785 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13786 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13787 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13788 primary_mi2s_rx_port_mixer_controls,
13789 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13790 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13791 sec_mi2s_rx_port_mixer_controls,
13792 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
13793 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13794 tert_mi2s_rx_port_mixer_controls,
13795 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
13796 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13797 quat_mi2s_rx_port_mixer_controls,
13798 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013799 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13800 quin_mi2s_rx_port_mixer_controls,
13801 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013802 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13803 pri_tdm_rx_0_port_mixer_controls,
13804 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
13805 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13806 pri_tdm_rx_1_port_mixer_controls,
13807 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
13808 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13809 pri_tdm_rx_2_port_mixer_controls,
13810 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
13811 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13812 pri_tdm_rx_3_port_mixer_controls,
13813 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
13814 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13815 sec_tdm_rx_0_port_mixer_controls,
13816 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
13817 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13818 sec_tdm_rx_1_port_mixer_controls,
13819 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
13820 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13821 sec_tdm_rx_2_port_mixer_controls,
13822 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
13823 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13824 sec_tdm_rx_3_port_mixer_controls,
13825 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
13826 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13827 tert_tdm_rx_0_port_mixer_controls,
13828 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
13829 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13830 tert_tdm_rx_1_port_mixer_controls,
13831 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
13832 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13833 tert_tdm_rx_2_port_mixer_controls,
13834 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
13835 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13836 tert_tdm_rx_3_port_mixer_controls,
13837 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
13838 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13839 quat_tdm_rx_0_port_mixer_controls,
13840 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
13841 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13842 quat_tdm_rx_1_port_mixer_controls,
13843 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
13844 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13845 quat_tdm_rx_2_port_mixer_controls,
13846 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
13847 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13848 quat_tdm_rx_3_port_mixer_controls,
13849 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013850 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13851 quin_tdm_rx_0_port_mixer_controls,
13852 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
13853 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13854 quin_tdm_rx_1_port_mixer_controls,
13855 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
13856 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13857 quin_tdm_rx_2_port_mixer_controls,
13858 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
13859 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13860 quin_tdm_rx_3_port_mixer_controls,
13861 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013862 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13863 int0_mi2s_rx_port_mixer_controls,
13864 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
13865 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13866 int4_mi2s_rx_port_mixer_controls,
13867 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
13868 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
13869 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
13870 ARRAY_SIZE(tx_qchat_mixer_controls)),
13871 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
13872 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
13873 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
13874 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
13875 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
13876 ARRAY_SIZE(usb_rx_port_mixer_controls)),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080013877 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
13878 SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
13879 ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013880 /* lsm mixer definitions */
13881 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
13882 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
13883 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
13884 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
13885 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
13886 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
13887 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
13888 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
13889 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
13890 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
13891 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
13892 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
13893 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
13894 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
13895 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
13896 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
13897 /* Virtual Pins to force backends ON atm */
13898 SND_SOC_DAPM_OUTPUT("BE_OUT"),
13899 SND_SOC_DAPM_INPUT("BE_IN"),
13900
13901 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
13902 &slim0_rx_vi_fb_lch_mux),
13903 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
13904 &slim0_rx_vi_fb_rch_mux),
13905 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
13906 &mi2s_rx_vi_fb_mux),
13907 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
13908 &int4_mi2s_rx_vi_fb_mono_ch_mux),
13909 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
13910 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
13911
13912 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
13913 &voc_ext_ec_mux),
13914 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
13915 &ext_ec_ref_mux_ul1),
13916 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
13917 &ext_ec_ref_mux_ul2),
13918 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
13919 &ext_ec_ref_mux_ul3),
13920 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
13921 &ext_ec_ref_mux_ul4),
13922 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
13923 &ext_ec_ref_mux_ul5),
13924 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
13925 &ext_ec_ref_mux_ul6),
13926 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
13927 &ext_ec_ref_mux_ul8),
13928 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
13929 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013930 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
13931 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013932 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
13933 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013934 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
13935 &ext_ec_ref_mux_ul17),
13936 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
13937 &ext_ec_ref_mux_ul18),
13938 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
13939 &ext_ec_ref_mux_ul19),
13940};
13941
13942static const struct snd_soc_dapm_route intercon[] = {
13943 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13944 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13945 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13946 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13947 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13948 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13949 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13950 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13951 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13952 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13953 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13954 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13955 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13956 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13957 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13958 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13959 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
13960
13961 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13962 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13963 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13964 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13965 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13966 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13967 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13968 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13969 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13970 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13971 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13972 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13973 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13974 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13975 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13976 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13977 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
13978
13979 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13980 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13981 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13982 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13983 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13984 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13985 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13986 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13987 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13988 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13989 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13990 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13991 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13992 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13993 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13994 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13995 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
13996
13997 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13998 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13999 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14000 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14001 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14002 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14003 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14004 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14005 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14006 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14007 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14008 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14009 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14010 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14011 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14012 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14013 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
14014
14015 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14016 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14017 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14018 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14019 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14020 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14021 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14022 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14023 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14024 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14025 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14026 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14027 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14028 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14029 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14030 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14031 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
14032
14033 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
14034 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
14035 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
14036 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
14037 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
14038 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
14039 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
14040 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
14041 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
14042 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
14043 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
14044 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
14045 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
14046 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
14047 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
14048 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
14049 {"HDMI", NULL, "HDMI Mixer"},
14050
14051 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
14052 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
14053 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
14054 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
14055 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
14056 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
14057 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
14058 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
14059 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
14060 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
14061 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
14062 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
14063 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
14064 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
14065 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
14066 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
14067 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
14068
14069 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14070 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14071 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14072 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14073 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14074 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14075 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14076 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14077 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14078 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14079 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14080 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14081 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14082 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14083 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14084 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14085 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
14086
14087 /* incall */
14088 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
14089 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
14090 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
14091 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
14092 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
14093 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14094 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14095 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14096 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14097 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
14098 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14099 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14100 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14101 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14102 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
14103
14104 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14105 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14106 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14107 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14108 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14109 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14110 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14111 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14112 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14113 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14114 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14115 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14116 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14117 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14118 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14119 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14120 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
14121
14122 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14123 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14124 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14125 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14126 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14127 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14128 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14129 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14130 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14131 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14132 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14133 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14134 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14135 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14136 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14137 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14138 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
14139
14140 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14141 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14142 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14143 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14144 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14145 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14146 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14147 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14148 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14149 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14150 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14151 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14152 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14153 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14154 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14155 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14156 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
14157
14158 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14159 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14160 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14161 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14162 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14163 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14164 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
14165 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14166 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14167 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14168 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14169 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14170 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14171 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14172 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14173 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014174 {"MultiMedia28 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14175 {"MultiMedia29 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014176 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14177 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14178 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14179 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14180 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14181 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014182 {"MultiMedia28 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14183 {"MultiMedia29 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014184 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014185 {"MultiMedia17 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14186 {"MultiMedia18 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14187 {"MultiMedia19 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14188 {"MultiMedia28 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14189 {"MultiMedia29 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14190 {"MultiMedia17 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014191 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014192 {"MultiMedia19 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14193 {"MultiMedia28 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14194 {"MultiMedia29 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014195 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14196 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14197 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014198 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014199 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014200 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14201 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014202 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014203 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14204 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14205 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14206 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14207 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14208 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14209 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14210 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14211 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14212 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14213 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14214 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14215 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14216 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14217 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14218 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14219 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
14220
14221 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14222 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14223 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14224 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14225 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14226 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14227 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14228 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14229 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14230 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14231 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14232 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14233 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14234 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14235 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14236 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
14237
14238 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14239 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14240 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14241 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14242 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14243 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14244 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14245 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14246 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14247 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14248 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14249 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14250 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14251 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14252 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
14253
14254 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14255 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14256 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14257 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14258 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14259 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14260 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14261 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14262 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14263 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14264 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14265 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14266 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14267 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14268 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
14269
14270 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14271 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
14272
14273 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14274 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14275
14276 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14277 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14278 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14279 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14280 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14281 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14282 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14283 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14284 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14285 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14286 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14287 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14288 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14289 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14290 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14291 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
14292
14293 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14294 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14295 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14296 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14297 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14298 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14299 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14300 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14301 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14302 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14303 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14304 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14305 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14306 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14307 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14308 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
14309
14310 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14311 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14312 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14313 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14314 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14315 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14316 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14317 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14318 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14319 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14320 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14321 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14322 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14323 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14324 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14325 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
14326
14327 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14328 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14329 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14330 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14331 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14332 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14333 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14334 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14335 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14336 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14337 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14338 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14339 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14340 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14341 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14342 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14343 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14344 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
14345
14346 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14347 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14348 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14349 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14350 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14351 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14352 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14353 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14354 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14355 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14356 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14357 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14358 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14359 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14360 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14361 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14362 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
14363
14364 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14365 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14366 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14367 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14368 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14369 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14370 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14371 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14372 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14373 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14374 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14375 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14376 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14377 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14378 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14379 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14380 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
14381
14382 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14383 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14384 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14385 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14386 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14387 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14388 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14389 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14390 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14391 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14392 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14393 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14394 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14395 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14396 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14397 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14398 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
14399
14400 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14401 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14402 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14403 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14404 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14405 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14406 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14407 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14408 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14409 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14410 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14411 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14412 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14413 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14414 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14415 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14416 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
14417
14418 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14419 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14420 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14421 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14422 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14423 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14424 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14425 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14426 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14427 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14428 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14429 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14430 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14431 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14432 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14433 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14434 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14435
14436 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14437 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14438 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14439 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14440 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14441 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14442 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14443 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14444 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14445 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14446 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14447 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14448 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14449 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14450 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14451 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14452 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14453
14454 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14455 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14456 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14457 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14458 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14459 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14460 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14461 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14462 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14463 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14464 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14465 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14466 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14467 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14468 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14469 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14470 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14471
14472 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14473 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14474 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14475 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14476 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14477 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14478 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14479 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14480 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14481 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14482 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14483 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14484 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14485 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14486 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14487 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14488 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14489
14490 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14491 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14492 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14493 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14494 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14495 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14496 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14497 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14498 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14499 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14500 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14501 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14502 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14503 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14504 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14505 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14506 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14507
14508 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14509 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14510 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14511 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14512 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14513 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14514 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14515 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14516 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14517 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14518 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14519 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14520 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14521 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14522 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14523 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14524 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14525
14526 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14527 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14528 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14529 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14530 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14531 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14532 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14533 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14534 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14535 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14536 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14537 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14538 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14539 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14540 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14541 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14542 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14543
14544 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14545 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14546 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14547 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14548 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14549 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14550 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14551 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14552 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14553 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14554 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14555 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14556 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14557 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14558 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14559 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14560 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14561
14562 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14563 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14564 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14565 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14566 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14567 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14568 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14569 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14570 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14571 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14572 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14573 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14574 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14575 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14576 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14577 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14578 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14579
14580 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14581 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14582 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14583 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14584 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14585 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14586 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14587 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14588 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14589 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14590 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14591 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14592 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14593 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14594 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14595 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14596 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14597
14598 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14599 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14600 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14601 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14602 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14603 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14604 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14605 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14606 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14607 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14608 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14609 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14610 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14611 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14612 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14613 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14614 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14615
14616 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14617 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14618 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14619 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14620 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14621 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14622 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14623 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14624 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14625 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14626 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14627 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14628 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14629 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14630 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14631 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14632 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14633
14634 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14635 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14636 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14637 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14638 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14639 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14640 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14641 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14642 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14643 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14644 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14645 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14646 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14647 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14648 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14649 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14650 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14651 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14652
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014653 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14654 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14655 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14656 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14657 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14658 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14659 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14660 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14661 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14662 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14663 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14664 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14665 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14666 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14667 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14668 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14669 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14670
14671 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14672 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14673 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14674 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14675 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14676 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14677 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14678 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14679 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14680 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14681 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14682 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14683 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14684 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14685 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14686 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14687 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14688 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14689
14690 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14691 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14692 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14693 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14694 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14695 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14696 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14697 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14698 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14699 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14700 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14701 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14702 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14703 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14704 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14705 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14706 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14707 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14708
14709 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14710 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14711 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14712 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14713 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14714 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14715 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14716 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14717 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14718 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14719 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14720 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14721 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14722 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14723 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14724 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14725 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14726 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14727
Rohit Kumara5077932017-09-10 22:05:05 +053014728 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14729 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14730 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14731 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14732 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14733 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14734 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14735 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14736 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14737 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14738 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14739 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14740 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14741 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14742 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14743 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14744 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14745 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14746
14747 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14748 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14749 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14750 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14751 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14752 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14753 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14754 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14755 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14756 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14757 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14758 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14759 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14760 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14761 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14762 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14763 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14764
14765 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14766 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14767 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14768 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14769 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14770 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14771 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14772 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14773 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14774 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14775 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14776 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14777 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14778 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14779 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14780 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14781 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14782 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14783
14784 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14785 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14786 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14787 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14788 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14789 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14790 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14791 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14792 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14793 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14794 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14795 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14796 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14797 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14798 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14799 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14800 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14801 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
14802
14803 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14804 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14805 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14806 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14807 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14808 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14809 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14810 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14811 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14812 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14813 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14814 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14815 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14816 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14817 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14818 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14819 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14820 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
14821
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014822 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
14823 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
14824 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
14825 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
14826 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014827 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014828 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014829 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14830 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14831 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14832 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14833 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14834 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14835 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14836 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14837 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14838 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14839 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14840 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14841 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14842 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14843 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014844 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014845 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14846 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
14847 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014848 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014849 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14850 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014851 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14852 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
14853 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014854 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014855 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14856 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
14857 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014858 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014859 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014860 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
14861 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
14862 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014863 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14864 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14865 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14866 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14867 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14868 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14869 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14870 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14871 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14872 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14873 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014874 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014875 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14876 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14877 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014878 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014879 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014880 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14881 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14882 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014883 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014884 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014885 {"MultiMedia17 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14886 {"MultiMedia18 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14887 {"MultiMedia19 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14888 {"MultiMedia28 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14889 {"MultiMedia29 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014890 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14891 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14892 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14893 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014894 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014895
14896 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14897 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14898 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14899 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14900 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14901 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14902 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14903 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14904 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14905 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14906 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14907 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14908 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14909 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14910 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14911 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014912 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14913 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14914 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14915 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014916
14917 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14918 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14919 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14920 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14921 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14922 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14923 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14924 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14925 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14926 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14927 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14928 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14929 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14930 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14931 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14932 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014933 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14934 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14935 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14936 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014937
14938 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14939 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14940 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14941 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14942 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14943 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14944 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14945 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14946 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14947 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14948 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14949 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14950 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14951 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14952 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14953 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014954 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14955 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14956 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14957 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014958
14959 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14960 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14961 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14962 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14963 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14964 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14965 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14966 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14967 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14968 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14969 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14970 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14971 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14972 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14973 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14974 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014975 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14976 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14977 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14978 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014979
14980 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14981 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14982 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14983 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14984 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14985 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14986 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14987 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14988 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14989 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14990 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14991 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14992 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14993 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14994 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14995 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014996 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14997 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14998 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14999 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015000
15001 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15002 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15003 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15004 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15005 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15006 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15007 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15008 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15009 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15010 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15011 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15012 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15013 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15014 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15015 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15016 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015017 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15018 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15019 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15020 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015021
15022 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15023 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15024 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15025 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15026 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15027 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15028 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15029 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15030 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15031 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15032 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15033 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15034 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15035 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15036 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15037 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015038 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15039 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15040 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15041 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015042
15043 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15044 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15045 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15046 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15047 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15048 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15049 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15050 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015051 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15052 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15053 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15054 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015055
Laxminath Kasam38070be2017-08-17 18:21:59 +053015056 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15057 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15058 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15059 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15060 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15061 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15062 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15063 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015064 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15065 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15066 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15067 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015068 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015069 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15070 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15071 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15072 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15073 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15074 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15075 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15076 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15077 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15078 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15079 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15080 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15081 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15082 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15083 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15084 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015085 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15086 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15087 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15088 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015089
15090 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15091 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15092 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15093 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15094 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15095 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015096 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015097
Asish Bhattacharya34504582017-08-08 12:55:01 +053015098 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15099 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15100 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15101 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15102 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15103 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15104 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15105 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15106 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15107 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15108 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15109 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15110 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15111 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15112 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15113 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15114 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15115
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015116 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15117 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15118 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15119 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15120 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15121 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15122 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15123 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15124 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15125 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15126 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15127 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15128 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15129 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15130 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15131 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15132 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15133 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
15134
15135 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15136 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15137 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15138 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15139 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15140 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15141 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15142 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15143 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15144 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15145 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15146 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15147 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15148 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15149 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15150 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15151 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15152 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
15153
15154 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15155 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15156 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15157 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15158 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15159 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15160 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15161 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15162 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15163 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15164 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15165 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15166 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15167 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15168 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15169 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15170 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
15171
15172 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15173 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15174 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15175 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15176 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15177 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15178 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15179 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15180 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15181 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15182 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15183 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15184 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15185 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15186 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15187 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15188 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
15189
15190 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15191 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15192 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015193 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015194 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15195 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15196 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015197 {"MultiMedia28 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15198 {"MultiMedia29 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015199 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15200 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015201 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015202 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15203 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015204 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015205 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15206 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15207 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015208 {"MultiMedia28 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15209 {"MultiMedia29 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015210 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15211 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15212 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15213
15214 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
15215 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
15216 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015217 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015218 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
15219 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
15220 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015221 {"MultiMedia28 Mixer", "AFE_PCM_TX", "PCM_TX"},
15222 {"MultiMedia29 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015223 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
15224 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015225 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015226 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
15227 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15228 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
15229 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
15230 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
15231 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
15232 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
15233 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
15234 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015235 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015236 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015237 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
15238 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
15239 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
15240 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015241 {"MM_UL28", NULL, "MultiMedia28 Mixer"},
15242 {"MM_UL29", NULL, "MultiMedia29 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015243
15244 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15245 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15246 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15247 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15248 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15249 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15250 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15251 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15252 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15253 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15254 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15255 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15256 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15257 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15258 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15259 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15260 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
15261
15262 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15263 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15264 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15265 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15266 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15267 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15268 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15269 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15270 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15271 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15272 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15273 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15274 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15275 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15276 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15277 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15278 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
15279
15280 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15281 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15282 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15283 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15284 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15285 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15286 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15287 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15288 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15289 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15290 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15291 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15292 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15293 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15294 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15295 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15296 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
15297
15298 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15299 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15300 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15301 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15302 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15303 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15304 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15305 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15306 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15307 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15308 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15309 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15310 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15311 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15312 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15313 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15314 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
15315
Rohit Kumara5077932017-09-10 22:05:05 +053015316 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15317 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15318 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15319 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15320 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15321 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15322 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15323 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15324 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15325 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15326 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15327 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15328 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15329 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15330 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15331 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15332 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
15333
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015334 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15335 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15336 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15337 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15338 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15339 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
15340
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015341 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
15342 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15343 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15344 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
15345
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015346 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15347 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15348 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15349 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15350 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15351 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
15352
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015353 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
15354 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015355 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15356 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15357 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15358 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
15359
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015360 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
15361 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015362 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15363 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15364 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15365 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
15366
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015367 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15368 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015369 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15370 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15371 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15372 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
15373
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015374 {"DISPLAY_PORT_RX_Voice Mixer", "Voip", "VOIP_DL"},
15375 {"DISPLAY_PORT_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015376 {"DISPLAY_PORT_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15377 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15378 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15379 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
15380
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015381 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15382 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15383 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15384 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15385 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015386 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
15387
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015388 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15389 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15390 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15391 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15392 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15393 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
15394
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015395 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15396 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015397 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15398 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15399 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15400 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
15401
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015402 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15403 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015404 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15405 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15406 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15407 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
15408
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015409 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15410 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015411 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15412 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15413 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15414 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
15415
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015416 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15417 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015418 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15419 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15420 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15421 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
15422
Rohit Kumara5077932017-09-10 22:05:05 +053015423 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15424 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015425 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15426 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15427 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15428 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
15429
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015430 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15431 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15432 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15433 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15434 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15435 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
15436 {"HDMI", NULL, "HDMI_DL_HL"},
15437
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015438 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015439 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15440 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15441 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080015442 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015443 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15444
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015445 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015446 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15447 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15448 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15449 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15450 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15451
15452 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15453 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15454 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15455 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15456 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15457 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15458
15459 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15460 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15461 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15462 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15463 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15464 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15465
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015466 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015467 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15468 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15469 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15470 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15471 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15472
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015473 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015474 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15475 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15476 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15477 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15478
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015479 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015480 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15481 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15482 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15483 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15484
Raja Mallik321d5712018-05-04 17:22:11 +053015485 {"PRI_TDM_RX_0_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15486 {"PRI_TDM_RX_0_Voice Mixer", "Voice2", "VOICE2_DL"},
15487 {"PRI_TDM_RX_0_Voice Mixer", "Voip", "VOIP_DL"},
15488 {"PRI_TDM_RX_0_Voice Mixer", "VoLTE", "VoLTE_DL"},
15489 {"PRI_TDM_RX_0_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15490 {"PRI_TDM_RX_0_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15491 {"PRI_TDM_RX_0_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15492 {"PRI_TDM_RX_0_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15493 {"PRI_TDM_RX_0_Voice Mixer", "QCHAT", "QCHAT_DL"},
15494 {"PRI_TDM_RX_0_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15495 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15496 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15497 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_Voice Mixer"},
15498
15499 {"PRI_TDM_RX_1_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15500 {"PRI_TDM_RX_1_Voice Mixer", "Voice2", "VOICE2_DL"},
15501 {"PRI_TDM_RX_1_Voice Mixer", "Voip", "VOIP_DL"},
15502 {"PRI_TDM_RX_1_Voice Mixer", "VoLTE", "VoLTE_DL"},
15503 {"PRI_TDM_RX_1_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15504 {"PRI_TDM_RX_1_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15505 {"PRI_TDM_RX_1_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15506 {"PRI_TDM_RX_1_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15507 {"PRI_TDM_RX_1_Voice Mixer", "QCHAT", "QCHAT_DL"},
15508 {"PRI_TDM_RX_1_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15509 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15510 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15511 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_Voice Mixer"},
15512
15513 {"PRI_TDM_RX_2_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15514 {"PRI_TDM_RX_2_Voice Mixer", "Voice2", "VOICE2_DL"},
15515 {"PRI_TDM_RX_2_Voice Mixer", "Voip", "VOIP_DL"},
15516 {"PRI_TDM_RX_2_Voice Mixer", "VoLTE", "VoLTE_DL"},
15517 {"PRI_TDM_RX_2_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15518 {"PRI_TDM_RX_2_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15519 {"PRI_TDM_RX_2_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15520 {"PRI_TDM_RX_2_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15521 {"PRI_TDM_RX_2_Voice Mixer", "QCHAT", "QCHAT_DL"},
15522 {"PRI_TDM_RX_2_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15523 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15524 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15525 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_Voice Mixer"},
15526
15527 {"PRI_TDM_RX_3_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15528 {"PRI_TDM_RX_3_Voice Mixer", "Voice2", "VOICE2_DL"},
15529 {"PRI_TDM_RX_3_Voice Mixer", "Voip", "VOIP_DL"},
15530 {"PRI_TDM_RX_3_Voice Mixer", "VoLTE", "VoLTE_DL"},
15531 {"PRI_TDM_RX_3_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15532 {"PRI_TDM_RX_3_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15533 {"PRI_TDM_RX_3_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15534 {"PRI_TDM_RX_3_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15535 {"PRI_TDM_RX_3_Voice Mixer", "QCHAT", "QCHAT_DL"},
15536 {"PRI_TDM_RX_3_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15537 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15538 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15539 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_Voice Mixer"},
15540
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015541 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15542 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15543
15544 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15545 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15546 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15547 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015548 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015549 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015550 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015551 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15552 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15553
15554 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15555 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15556 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15557 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15558 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15559 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15560 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15561 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15562 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15563 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15564
15565 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15566 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15567 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15568 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15569
15570 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15571 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15572 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15573 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15574
15575 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15576 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15577 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15578 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15579
15580 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15581 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15582 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15583 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15584
15585 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15586 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15587 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15588 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15589
15590 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15591 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15592 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15593 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15594
15595 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15596 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15597 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15598 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15599
Laxminath Kasam38070be2017-08-17 18:21:59 +053015600 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15601 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15602 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15603 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15604 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15605 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15606 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15607 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15608 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15609 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015610
15611 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15612 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15613 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15614 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15615
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015616 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15617 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15618 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15619 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15620
15621 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15622 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15623 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15624 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15625
15626 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15627 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15628 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15629 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15630
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015631 {"AUDIO_REF_EC_UL28 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15632 {"AUDIO_REF_EC_UL28 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15633 {"AUDIO_REF_EC_UL28 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15634 {"AUDIO_REF_EC_UL28 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15635
15636 {"AUDIO_REF_EC_UL29 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15637 {"AUDIO_REF_EC_UL29 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15638 {"AUDIO_REF_EC_UL29 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15639 {"AUDIO_REF_EC_UL29 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Yunfei Zhang3efc4a22017-11-07 16:30:13 +080015640
15641 {"LSM1_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15642 {"LSM2_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15643 {"LSM3_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15644 {"LSM4_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15645 {"LSM5_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15646 {"LSM6_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15647 {"LSM7_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15648 {"LSM8_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15649
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015650 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15651 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15652 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15653 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15654 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15655 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15656 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15657 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015658 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015659 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015660 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15661 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15662 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015663 {"MM_UL28", NULL, "AUDIO_REF_EC_UL28 MUX"},
15664 {"MM_UL29", NULL, "AUDIO_REF_EC_UL29 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015665
Raja Mallik321d5712018-05-04 17:22:11 +053015666 {"Voice_Tx Mixer", "PRI_TX_Voice", "PRI_I2S_TX"},
15667 {"Voice_Tx Mixer", "PRI_MI2S_TX_Voice", "PRI_MI2S_TX"},
15668 {"Voice_Tx Mixer", "MI2S_TX_Voice", "MI2S_TX"},
15669 {"Voice_Tx Mixer", "TERT_MI2S_TX_Voice", "TERT_MI2S_TX"},
15670 {"Voice_Tx Mixer", "SLIM_0_TX_Voice", "SLIMBUS_0_TX"},
15671 {"Voice_Tx Mixer", "INTERNAL_BT_SCO_TX_Voice", "INT_BT_SCO_TX"},
15672 {"Voice_Tx Mixer", "AFE_PCM_TX_Voice", "PCM_TX"},
15673 {"Voice_Tx Mixer", "AUX_PCM_TX_Voice", "AUX_PCM_TX"},
15674 {"Voice_Tx Mixer", "SEC_AUX_PCM_TX_Voice", "SEC_AUX_PCM_TX"},
15675 {"Voice_Tx Mixer", "SEC_MI2S_TX_Voice", "SEC_MI2S_TX"},
15676 {"Voice_Tx Mixer", "PRI_TDM_TX_3_Voice", "PRI_TDM_TX_3"},
15677 {"CS-VOICE_UL1", NULL, "Voice_Tx Mixer"},
15678
15679 {"Voice2_Tx Mixer", "PRI_TX_Voice2", "PRI_I2S_TX"},
15680 {"Voice2_Tx Mixer", "PRI_MI2S_TX_Voice2", "PRI_MI2S_TX"},
15681 {"Voice2_Tx Mixer", "MI2S_TX_Voice2", "MI2S_TX"},
15682 {"Voice2_Tx Mixer", "TERT_MI2S_TX_Voice2", "TERT_MI2S_TX"},
15683 {"Voice2_Tx Mixer", "SLIM_0_TX_Voice2", "SLIMBUS_0_TX"},
15684 {"Voice2_Tx Mixer", "INTERNAL_BT_SCO_TX_Voice2", "INT_BT_SCO_TX"},
15685 {"Voice2_Tx Mixer", "AFE_PCM_TX_Voice2", "PCM_TX"},
15686 {"Voice2_Tx Mixer", "AUX_PCM_TX_Voice2", "AUX_PCM_TX"},
15687 {"Voice2_Tx Mixer", "SEC_AUX_PCM_TX_Voice2", "SEC_AUX_PCM_TX"},
15688 {"Voice2_Tx Mixer", "PRI_TDM_TX_3_Voice2", "PRI_TDM_TX_3"},
15689 {"VOICE2_UL", NULL, "Voice2_Tx Mixer"},
15690
15691 {"VoLTE_Tx Mixer", "PRI_TX_VoLTE", "PRI_I2S_TX"},
15692 {"VoLTE_Tx Mixer", "SLIM_0_TX_VoLTE", "SLIMBUS_0_TX"},
15693 {"VoLTE_Tx Mixer", "INTERNAL_BT_SCO_TX_VoLTE", "INT_BT_SCO_TX"},
15694 {"VoLTE_Tx Mixer", "AFE_PCM_TX_VoLTE", "PCM_TX"},
15695 {"VoLTE_Tx Mixer", "AUX_PCM_TX_VoLTE", "AUX_PCM_TX"},
15696 {"VoLTE_Tx Mixer", "SEC_AUX_PCM_TX_VoLTE", "SEC_AUX_PCM_TX"},
15697 {"VoLTE_Tx Mixer", "MI2S_TX_VoLTE", "MI2S_TX"},
15698 {"VoLTE_Tx Mixer", "PRI_MI2S_TX_VoLTE", "PRI_MI2S_TX"},
15699 {"VoLTE_Tx Mixer", "TERT_MI2S_TX_VoLTE", "TERT_MI2S_TX"},
15700 {"VoLTE_Tx Mixer", "PRI_TDM_TX_3_VoLTE", "PRI_TDM_TX_3"},
15701 {"VoLTE_UL", NULL, "VoLTE_Tx Mixer"},
15702
15703 {"VoWLAN_Tx Mixer", "PRI_TX_VoWLAN", "PRI_I2S_TX"},
15704 {"VoWLAN_Tx Mixer", "SLIM_0_TX_VoWLAN", "SLIMBUS_0_TX"},
15705 {"VoWLAN_Tx Mixer", "INTERNAL_BT_SCO_TX_VoWLAN", "INT_BT_SCO_TX"},
15706 {"VoWLAN_Tx Mixer", "AFE_PCM_TX_VoWLAN", "PCM_TX"},
15707 {"VoWLAN_Tx Mixer", "AUX_PCM_TX_VoWLAN", "AUX_PCM_TX"},
15708 {"VoWLAN_Tx Mixer", "SEC_AUX_PCM_TX_VoWLAN", "SEC_AUX_PCM_TX"},
15709 {"VoWLAN_Tx Mixer", "MI2S_TX_VoWLAN", "MI2S_TX"},
15710 {"VoWLAN_Tx Mixer", "PRI_MI2S_TX_VoWLAN", "PRI_MI2S_TX"},
15711 {"VoWLAN_Tx Mixer", "TERT_MI2S_TX_VoWLAN", "TERT_MI2S_TX"},
15712 {"VoWLAN_Tx Mixer", "PRI_TDM_TX_3_VoWLAN", "PRI_TDM_TX_3"},
15713 {"VoWLAN_UL", NULL, "VoWLAN_Tx Mixer"},
15714
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015715 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15716 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15717 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15718 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15719 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15720 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15721 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15722 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15723 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15724 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15725 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15726 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15727 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15728 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15729 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015730 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015731 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
Raja Mallik321d5712018-05-04 17:22:11 +053015732 {"VoiceMMode1_Tx Mixer", "PRI_TDM_TX_3_MMode1", "PRI_TDM_TX_3"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015733 {"VoiceMMode1_Tx Mixer", "QUAT_MI2S_TX_MMode1", "QUAT_MI2S_TX"},
15734 {"VoiceMMode1_Tx Mixer", "QUIN_MI2S_TX_MMode1", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015735 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15736
15737 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15738 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15739 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15740 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15741 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15742 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15743 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15744 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15745 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15746 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15747 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15748 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15749 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15750 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15751 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015752 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015753 {"VoiceMMode2_Tx Mixer", "QUAT_MI2S_TX_MMode2", "QUAT_MI2S_TX"},
15754 {"VoiceMMode2_Tx Mixer", "QUIN_MI2S_TX_MMode2", "QUIN_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015755 {"VoiceMMode2_Tx Mixer", "PRI_TDM_TX_3_MMode2", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015756 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15757
15758 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15759 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15760 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15761 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15762 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15763 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15764 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15765 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15766 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15767 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15768 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15769 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15770 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15771 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015772 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015773 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015774 {"Voip_Tx Mixer", "PRI_TDM_TX_3_Voip", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015775 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15776
15777 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15778 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15779 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15780 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15781 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15782 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15783 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15784 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15785 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15786 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15787 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15788 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15789 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15790 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15791 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15792
15793 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15794 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15795 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15796 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15797 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15798 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15799 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15800 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015801 {"LSM1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15802 {"LSM1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015803 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15804
15805 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15806 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15807 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15808 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15809 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15810 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15811 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15812 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015813 {"LSM2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15814 {"LSM2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015815 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
15816
15817
15818 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15819 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15820 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15821 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15822 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15823 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15824 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15825 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015826 {"LSM3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15827 {"LSM3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015828 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
15829
15830
15831 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15832 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15833 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15834 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15835 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15836 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15837 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15838 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015839 {"LSM4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15840 {"LSM4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015841 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
15842
15843 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15844 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15845 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15846 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15847 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15848 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15849 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15850 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015851 {"LSM5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15852 {"LSM5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015853 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
15854
15855 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15856 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15857 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15858 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15859 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15860 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015861 {"LSM6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15862 {"LSM6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015863 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
15864
15865 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15866 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15867 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15868 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15869 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15870 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015871 {"LSM7 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15872 {"LSM7 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015873 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
15874
15875 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15876 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15877 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15878 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15879 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15880 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015881 {"LSM8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15882 {"LSM8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015883 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
15884
15885
15886 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
15887 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
15888 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
15889 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
15890 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
15891 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
15892 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
15893 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
15894 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
15895 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
15896 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015897 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015898 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
15899 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
15900 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
15901 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
15902 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
15903 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
15904
15905 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
15906 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
15907 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
15908 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
15909 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
15910 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
15911 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
15912 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
15913 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
15914 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
15915 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
15916 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015917 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015918 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015919 {"SEC_AUXPCM_UL_HL", NULL, "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015920 {"MI2S_RX", NULL, "MI2S_DL_HL"},
15921 {"MI2S_UL_HL", NULL, "MI2S_TX"},
15922 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
15923 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
15924
15925 /* connect to INT4_MI2S_DL_HL since same pcm_id */
15926 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15927 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
15928 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15929 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
15930 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
15931 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
15932 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
15933 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
15934 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
15935 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
15936
15937 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
15938 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015939 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
15940 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015941 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15942 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
15943 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15944 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
15945 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
15946 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
15947 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
15948 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
15949 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
15950 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
15951
15952 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
15953 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
15954 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
15955 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
15956 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
15957 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
15958 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
15959 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
15960 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
15961 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
15962 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
15963 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
15964 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
15965 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
15966 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
15967 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
15968 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
15969 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
15970 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
15971 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
15972 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
15973 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
15974 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
15975 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
15976 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
15977 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
15978 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
15979 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
15980 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
15981 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
15982 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
15983 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015984 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
15985 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
15986 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
15987 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
15988 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
15989 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
15990 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
15991 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015992
15993 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15994 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15995 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15996 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15997 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15998 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15999 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16000 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16001 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16002 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16003 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16004 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16005 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16006 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16007 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16008 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016009 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16010 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16011 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16012 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016013 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
16014
16015 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16016 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16017 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16018 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16019 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16020 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16021 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16022 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16023 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16024 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16025 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16026 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16027 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16028 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16029 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16030 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016031 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16032 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16033 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16034 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016035 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
16036
16037 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16038 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16039 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16040 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16041 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16042 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16043 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16044 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16045 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16046 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16047 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16048 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16049 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16050 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16051 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16052 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016053 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16054 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16055 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16056 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016057 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
16058
16059 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16060 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16061 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16062 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16063 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16064 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16065 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16066 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16067 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16068 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16069 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16070 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16071 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16072 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16073 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16074 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016075 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16076 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16077 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16078 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016079 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
16080
16081 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16082 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16083 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16084 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16085 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16086 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16087 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16088 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16089 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16090 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16091 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16092 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16093 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16094 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16095 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16096 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016097 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16098 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16099 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16100 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016101 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
16102
16103 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16104 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16105 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16106 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16107 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16108 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16109 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16110 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16111 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16112 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16113 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16114 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16115 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16116 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16117 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16118 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016119 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16120 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16121 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16122 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016123 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
16124
16125 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16126 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16127 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16128 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16129 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16130 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16131 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16132 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16133 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16134 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16135 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16136 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16137 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16138 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16139 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16140 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016141 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16142 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16143 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16144 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016145 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
16146
16147 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16148 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16149 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16150 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16151 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16152 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16153 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16154 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16155 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16156 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16157 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16158 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16159 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16160 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16161 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16162 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016163 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16164 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16165 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16166 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016167 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
16168
16169 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16170 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16171 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16172 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16173 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16174 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16175 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16176 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16177 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16178 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16179 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16180 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16181 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16182 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16183 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16184 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016185 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16186 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16187 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16188 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016189 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
16190
16191 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16192 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16193 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16194 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16195 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16196 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16197 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16198 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16199 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16200 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16201 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16202 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16203 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16204 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16205 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16206 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016207 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16208 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16209 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16210 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016211 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
16212
16213 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16214 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16215 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16216 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16217 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16218 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16219 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16220 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16221 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16222 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16223 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16224 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16225 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16226 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16227 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16228 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016229 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16230 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16231 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16232 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016233 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
16234
16235 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16236 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16237 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16238 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16239 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16240 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16241 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16242 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16243 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16244 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16245 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16246 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16247 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16248 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16249 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16250 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016251 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16252 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16253 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16254 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016255 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
16256
16257 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16258 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16259 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16260 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16261 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16262 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16263 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16264 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16265 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16266 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16267 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16268 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16269 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16270 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16271 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16272 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016273 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16274 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16275 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16276 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016277 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
16278
16279 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16280 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16281 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16282 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16283 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16284 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16285 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16286 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16287 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16288 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16289 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16290 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16291 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16292 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16293 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16294 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016295 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16296 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16297 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16298 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016299 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
16300
16301 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16302 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16303 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16304 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16305 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16306 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16307 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16308 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16309 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16310 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16311 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16312 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16313 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16314 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16315 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16316 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016317 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16318 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16319 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16320 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016321 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
16322
16323 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16324 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16325 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16326 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16327 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16328 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16329 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16330 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16331 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16332 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16333 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16334 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16335 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16336 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16337 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16338 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016339 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16340 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16341 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16342 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016343 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
16344
Rohit Kumara5077932017-09-10 22:05:05 +053016345 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16346 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16347 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16348 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16349 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16350 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16351 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16352 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16353 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16354 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16355 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16356 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16357 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16358 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16359 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16360 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16361 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16362 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16363 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16364 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016365 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016366
16367 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16368 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16369 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16370 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16371 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16372 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16373 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16374 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16375 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16376 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16377 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16378 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16379 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16380 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16381 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16382 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16383 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16384 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16385 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16386 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016387 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016388
16389 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16390 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16391 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16392 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16393 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16394 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16395 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16396 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16397 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16398 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16399 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16400 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16401 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16402 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16403 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16404 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16405 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16406 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16407 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16408 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016409 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016410
16411 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16412 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16413 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16414 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16415 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16416 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16417 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16418 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16419 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16420 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16421 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16422 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16423 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16424 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16425 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16426 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16427 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16428 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16429 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16430 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016431 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016432
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016433 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16434 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16435 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16436 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016437 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016438 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16439 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16440 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16441 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16442 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16443 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
16444
16445 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16446 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16447 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16448 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016449 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016450 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16451 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16452 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16453 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16454 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16455 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
16456
16457 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16458 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16459 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16460 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16461 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16462 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16463 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16464 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16465 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016466 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016467 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16468 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16469 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16470 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16471 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016472 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016473 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16474 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
16475 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16476 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16477 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
16478 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
16479 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
16480 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
16481 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
16482 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
16483
16484
16485 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16486 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16487 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16488 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16489 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016490 {"AUX_PCM_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016491 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
16492
16493 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16494 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16495 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016496 {"SEC_AUXPCM_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016497 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
16498
16499 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16500 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16501 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16502 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
16503
16504 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16505 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
16506 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16507 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
16508
Rohit Kumara5077932017-09-10 22:05:05 +053016509 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16510 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
16511 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16512 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
16513
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016514 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16515 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16516 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16517 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16518 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16519 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16520 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16521 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016522 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016523 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
16524 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16525 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16526 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16527 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16528 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16529 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16530 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16531 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16532 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16533 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
16534
16535 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16536 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16537 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16538 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16539 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16540 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16541 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16542 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16543 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16544 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16545 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16546 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
16547
16548 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16549 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16550 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16551 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16552 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16553 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16554 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16555 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16556 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16557 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16558 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16559 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
16560
kunleizdf5a00a2017-11-27 15:27:36 +080016561 {"STUB_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16562 {"STUB_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016563 {"STUB_RX", NULL, "STUB_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016564
16565 {"SLIMBUS_1_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16566 {"SLIMBUS_1_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016567 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016568
16569 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16570 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016571 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
16572
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016573 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
16574 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016575 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16576 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16577 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16578 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
16579
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016580 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
16581 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016582 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16583 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16584 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16585 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16586
16587 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16588 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16589 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16590 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16591 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16592 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16593 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16594 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16595 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16596 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16597 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16598 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16599 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16600
16601 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16602 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16603 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16604 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16605 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16606 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16607 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16608 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16609 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16610 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16611 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16612 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16613 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16614
16615 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16616 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16617
16618 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16619 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16620
16621 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16622 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16623
16624 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16625 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16626 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16627
16628 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16629 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16630 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16631 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016632 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016633 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16634 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16635 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16636 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016637 {"PRI_MI2S_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016638 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16639
16640 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16641 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16642 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16643 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016644 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016645 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16646 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16647 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016648 {"SEC_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016649 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16650
16651 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16652 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16653 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16654 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016655 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016656 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16657 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16658 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16659
16660 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16661 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16662 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16663 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016664 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016665 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16666 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16667 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16668 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16669 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16670
Rohit Kumara5077932017-09-10 22:05:05 +053016671 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16672 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16673 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16674 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16675 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16676 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16677 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16678 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16679
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016680 /* Backend Enablement */
16681
16682 {"BE_OUT", NULL, "PRI_I2S_RX"},
16683 {"BE_OUT", NULL, "SEC_I2S_RX"},
16684 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16685 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16686 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16687 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16688 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16689 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16690 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16691 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16692 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16693 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16694 {"BE_OUT", NULL, "HDMI"},
16695 {"BE_OUT", NULL, "DISPLAY_PORT"},
16696 {"BE_OUT", NULL, "SPDIF_RX"},
16697 {"BE_OUT", NULL, "MI2S_RX"},
16698 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16699 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16700 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16701 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16702 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16703 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16704 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16705 {"BE_OUT", NULL, "INT4_MI2S_RX"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016706 {"BE_OUT", NULL, "INT2_MI2S_RX"},
16707 {"BE_OUT", NULL, "INT3_MI2S_RX"},
16708 {"BE_OUT", NULL, "INT5_MI2S_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016709 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16710 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16711 {"BE_OUT", NULL, "INT_FM_RX"},
16712 {"BE_OUT", NULL, "PCM_RX"},
16713 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16714 {"BE_OUT", NULL, "AUX_PCM_RX"},
16715 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16716 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16717 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016718 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016719 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16720 {"BE_OUT", NULL, "INT_FM_RX"},
16721 {"BE_OUT", NULL, "PCM_RX"},
16722 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16723 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16724 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16725 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16726 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16727 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16728 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16729 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16730 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16731 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16732 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16733 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16734 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16735 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16736 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16737 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16738 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16739 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16740 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16741 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016742 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16743 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16744 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16745 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016746
16747 {"PRI_I2S_TX", NULL, "BE_IN"},
16748 {"MI2S_TX", NULL, "BE_IN"},
16749 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16750 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16751 {"PRI_MI2S_TX", NULL, "BE_IN"},
16752 {"TERT_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016753 {"INT0_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016754 {"INT2_MI2S_TX", NULL, "BE_IN"},
16755 {"INT3_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016756 {"INT4_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016757 {"INT5_MI2S_TX", NULL, "BE_IN"},
16758 {"SEC_MI2S_TX", NULL, "BE_IN"},
16759 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16760 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16761 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16762 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16763 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16764 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16765 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16766 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16767 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16768 {"USB_AUDIO_TX", NULL, "BE_IN" },
16769 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16770 {"INT_FM_TX", NULL, "BE_IN"},
16771 {"PCM_TX", NULL, "BE_IN"},
16772 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16773 {"BE_OUT", NULL, "STUB_RX"},
16774 {"STUB_TX", NULL, "BE_IN"},
16775 {"STUB_1_TX", NULL, "BE_IN"},
16776 {"BE_OUT", NULL, "AUX_PCM_RX"},
16777 {"AUX_PCM_TX", NULL, "BE_IN"},
16778 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16779 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16780 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016781 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016782 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16783 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16784 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16785 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16786 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16787 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16788 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16789 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16790 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16791 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16792 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16793 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16794 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16795 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16796 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16797 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16798 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16799 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16800 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16801 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16802 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16803 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16804 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16805 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16806 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16807 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16808 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16809 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016810 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16811 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16812 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16813 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016814};
16815
16816static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16817 struct snd_pcm_hw_params *params)
16818{
16819 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16820 unsigned int be_id = rtd->dai_link->id;
16821
16822 if (be_id >= MSM_BACKEND_DAI_MAX) {
16823 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16824 return -EINVAL;
16825 }
16826
16827 mutex_lock(&routing_lock);
16828 msm_bedais[be_id].sample_rate = params_rate(params);
16829 msm_bedais[be_id].channel = params_channels(params);
16830 msm_bedais[be_id].format = params_format(params);
16831 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
16832 __func__, msm_bedais[be_id].sample_rate,
16833 msm_bedais[be_id].format, be_id);
16834 mutex_unlock(&routing_lock);
16835 return 0;
16836}
16837
16838static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
16839{
16840 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16841 unsigned int be_id = rtd->dai_link->id;
16842 int i, session_type, path_type, topology;
16843 struct msm_pcm_routing_bdai_data *bedai;
16844 struct msm_pcm_routing_fdai_data *fdai;
16845
16846 pr_debug("%s: substream->pcm->id:%s\n",
16847 __func__, substream->pcm->id);
16848
16849 if (be_id >= MSM_BACKEND_DAI_MAX) {
16850 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16851 return -EINVAL;
16852 }
16853
16854 bedai = &msm_bedais[be_id];
16855 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
16856 0 : 1);
16857 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16858 path_type = ADM_PATH_PLAYBACK;
16859 else
16860 path_type = ADM_PATH_LIVE_REC;
16861
16862 mutex_lock(&routing_lock);
16863 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16864 if (!is_mm_lsm_fe_id(i))
16865 continue;
16866 fdai = &fe_dai_map[i][session_type];
16867 if (fdai->strm_id != INVALID_SESSION) {
16868 int idx;
16869 int port_id;
16870 unsigned long copp =
16871 session_copp_map[i][session_type][be_id];
16872 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
16873 if (test_bit(idx, &copp))
16874 break;
16875 fdai->be_srate = bedai->sample_rate;
16876 port_id = bedai->port_id;
16877 topology = adm_get_topology_for_port_copp_idx(port_id,
16878 idx);
16879 adm_close(bedai->port_id, fdai->perf_mode, idx);
16880 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
16881 __func__, copp, i, session_type, be_id,
16882 topology);
16883 clear_bit(idx,
16884 &session_copp_map[i][session_type][be_id]);
16885 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16886 (bedai->passthr_mode[i] == LEGACY_PCM))
16887 msm_pcm_routing_deinit_pp(bedai->port_id,
16888 topology);
16889 }
16890 }
16891
16892 bedai->active = 0;
16893 bedai->sample_rate = 0;
16894 bedai->channel = 0;
16895 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
16896 if (bedai->passthr_mode[i] != LISTEN)
16897 bedai->passthr_mode[i] = LEGACY_PCM;
16898 }
16899 mutex_unlock(&routing_lock);
16900
16901 return 0;
16902}
16903
16904static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
16905{
16906 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16907 unsigned int be_id = rtd->dai_link->id;
16908 int i, path_type, topology;
16909 int session_type = INVALID_SESSION;
16910 struct msm_pcm_routing_bdai_data *bedai;
16911 u32 channels, sample_rate;
16912 uint16_t bits_per_sample = 16, voc_path_type;
16913 struct msm_pcm_routing_fdai_data *fdai;
16914 u32 session_id;
16915 struct media_format_info voc_be_media_format;
16916 bool is_lsm;
16917
16918 pr_debug("%s: substream->pcm->id:%s\n",
16919 __func__, substream->pcm->id);
16920
16921 if (be_id >= MSM_BACKEND_DAI_MAX) {
16922 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16923 return -EINVAL;
16924 }
16925
16926 bedai = &msm_bedais[be_id];
16927
16928 mutex_lock(&routing_lock);
16929 if (bedai->active == 1)
16930 goto done; /* Ignore prepare if back-end already active */
16931
16932 /* AFE port is not active at this point. However, still
16933 * go ahead setting active flag under the notion that
16934 * QDSP6 is able to handle ADM starting before AFE port
16935 * is started.
16936 */
16937 bedai->active = 1;
16938
16939 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16940 if (!(is_mm_lsm_fe_id(i) &&
16941 route_check_fe_id_adm_support(i)))
16942 continue;
16943
16944 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
16945 if (bedai->passthr_mode[i] != LEGACY_PCM)
16946 path_type = ADM_PATH_COMPRESSED_RX;
16947 else
16948 path_type = ADM_PATH_PLAYBACK;
16949 session_type = SESSION_TYPE_RX;
16950 } else {
16951 path_type = ADM_PATH_LIVE_REC;
16952 session_type = SESSION_TYPE_TX;
16953 }
16954
16955 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
16956 (i <= MSM_FRONTEND_DAI_LSM8);
16957 fdai = &fe_dai_map[i][session_type];
16958 if (fdai->strm_id != INVALID_SESSION) {
16959 int app_type, app_type_idx, copp_idx, acdb_dev_id;
16960
16961 if (session_type == SESSION_TYPE_TX &&
16962 fdai->be_srate &&
16963 (fdai->be_srate != bedai->sample_rate)) {
16964 pr_debug("%s: flush strm %d diff BE rates\n",
16965 __func__,
16966 fdai->strm_id);
16967
16968 if (fdai->event_info.event_func)
16969 fdai->event_info.event_func(
16970 MSM_PCM_RT_EVT_BUF_RECFG,
16971 fdai->event_info.priv_data);
16972 fdai->be_srate = 0; /* might not need it */
16973 }
16974 bits_per_sample = msm_routing_get_bit_width(
16975 bedai->format);
16976
16977 app_type =
16978 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
16979 if (app_type && is_lsm) {
16980 app_type_idx =
16981 msm_pcm_routing_get_lsm_app_type_idx(app_type);
16982 sample_rate =
16983 fe_dai_app_type_cfg[i][session_type][be_id]
16984 .sample_rate;
16985 bits_per_sample =
16986 lsm_app_type_cfg[app_type_idx].bit_width;
16987 } else if (app_type) {
16988 app_type_idx =
16989 msm_pcm_routing_get_app_type_idx(app_type);
16990 sample_rate =
16991 fe_dai_app_type_cfg[i][session_type]
16992 [be_id].sample_rate;
16993 bits_per_sample =
16994 app_type_cfg[app_type_idx].bit_width;
16995 } else
16996 sample_rate = bedai->sample_rate;
16997 /*
16998 * check if ADM needs to be configured with different
16999 * channel mapping than backend
17000 */
17001 if (!bedai->adm_override_ch)
17002 channels = bedai->channel;
17003 else
17004 channels = bedai->adm_override_ch;
17005 acdb_dev_id =
17006 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
17007 topology = msm_routing_get_adm_topology(i, session_type,
17008 be_id);
17009 copp_idx = adm_open(bedai->port_id, path_type,
17010 sample_rate, channels, topology,
17011 fdai->perf_mode, bits_per_sample,
17012 app_type, acdb_dev_id);
17013 if ((copp_idx < 0) ||
17014 (copp_idx >= MAX_COPPS_PER_PORT)) {
17015 pr_err("%s: adm open failed\n", __func__);
17016 mutex_unlock(&routing_lock);
17017 return -EINVAL;
17018 }
17019 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
17020 __func__, i, session_type, be_id);
17021 set_bit(copp_idx,
17022 &session_copp_map[i][session_type][be_id]);
17023
17024 if (msm_is_resample_needed(
17025 sample_rate,
17026 bedai->sample_rate))
17027 adm_copp_mfc_cfg(
17028 bedai->port_id, copp_idx,
17029 bedai->sample_rate);
17030
17031 msm_pcm_routing_build_matrix(i, session_type, path_type,
17032 fdai->perf_mode,
17033 bedai->passthr_mode[i]);
17034 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
17035 (bedai->passthr_mode[i] == LEGACY_PCM))
17036 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
17037 topology, channels);
17038 }
17039 }
17040
17041 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17042 session_id = msm_pcm_routing_get_voc_sessionid(i);
17043 if (session_id) {
17044 pr_debug("%s voice session_id: 0x%x\n", __func__,
17045 session_id);
17046
17047 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
17048 voc_path_type = RX_PATH;
17049 else
17050 voc_path_type = TX_PATH;
17051
17052 voc_set_route_flag(session_id, voc_path_type, 1);
17053
17054 memset(&voc_be_media_format, 0,
17055 sizeof(struct media_format_info));
17056
17057 voc_be_media_format.port_id = bedai->port_id;
17058 voc_be_media_format.num_channels = bedai->channel;
17059 voc_be_media_format.sample_rate = bedai->sample_rate;
17060 voc_be_media_format.bits_per_sample = bedai->format;
17061 /* Defaulting this to 1 for voice call usecases */
17062 voc_be_media_format.channel_mapping[0] = 1;
17063
17064 voc_set_device_config(session_id, voc_path_type,
17065 &voc_be_media_format);
17066
17067 if (voc_get_route_flag(session_id, RX_PATH) &&
17068 voc_get_route_flag(session_id, TX_PATH))
17069 voc_enable_device(session_id);
17070 }
17071 }
17072
17073 /* Check if backend is an external ec ref port and set as needed */
17074 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
17075
17076 memset(&voc_be_media_format, 0,
17077 sizeof(struct media_format_info));
17078
17079 /* Get format info for ec ref port from msm_bedais[] */
17080 voc_be_media_format.port_id = bedai->port_id;
17081 voc_be_media_format.num_channels = bedai->channel;
17082 voc_be_media_format.bits_per_sample = bedai->format;
17083 voc_be_media_format.sample_rate = bedai->sample_rate;
17084 /* Defaulting this to 1 for voice call usecases */
17085 voc_be_media_format.channel_mapping[0] = 1;
17086 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
17087 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
17088 __func__, voc_be_media_format.port_id,
17089 voc_be_media_format.num_channels,
17090 voc_be_media_format.bits_per_sample,
17091 voc_be_media_format.sample_rate);
17092 }
17093
17094done:
17095 mutex_unlock(&routing_lock);
17096
17097 return 0;
17098}
17099
17100static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
17101 int fe_id)
17102{
17103 int index, topo_id, be_idx;
17104 unsigned long pp_config = 0;
17105 bool mute_on;
17106 int latency;
17107 bool compr_passthr_mode = true;
17108
17109 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
17110
17111 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
17112 pr_err("%s: Device pp params on invalid port %d\n",
17113 __func__, port_id);
17114 return -EINVAL;
17115 }
17116
17117 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17118 if (port_id == msm_bedais[be_idx].port_id)
17119 break;
17120 }
17121
17122 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17123 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17124 return -EINVAL;
17125 }
17126
17127 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17128 if (msm_bedais_pp_params[index].port_id == port_id)
17129 break;
17130 }
17131 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17132 pr_err("%s: Invalid backend pp params index %d\n",
17133 __func__, index);
17134 return -EINVAL;
17135 }
17136
17137 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
17138 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
17139 pr_err("%s: Invalid passthrough topology 0x%x\n",
17140 __func__, topo_id);
17141 return -EINVAL;
17142 }
17143
17144 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
17145 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
17146 compr_passthr_mode = false;
17147
17148 pp_config = msm_bedais_pp_params[index].pp_params_config;
17149 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
17150 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17151 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
17152 mute_on = msm_bedais_pp_params[index].mute_on;
17153 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17154 adm_send_compressed_device_mute(port_id,
17155 copp_idx,
17156 mute_on);
17157 }
17158 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
17159 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17160 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
17161 &pp_config);
17162 latency = msm_bedais_pp_params[index].latency;
17163 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17164 adm_send_compressed_device_latency(port_id,
17165 copp_idx,
17166 latency);
17167 }
17168 return 0;
17169}
17170
17171static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17172 struct snd_ctl_elem_value *ucontrol)
17173{
17174 int pp_id = ucontrol->value.integer.value[0];
17175 int port_id = 0;
17176 int index, be_idx, i, topo_id, idx;
17177 bool mute;
17178 int latency;
17179 bool compr_passthr_mode = true;
17180
17181 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
17182
17183 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17184 port_id = msm_bedais[be_idx].port_id;
17185 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
17186 break;
17187 }
17188
17189 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17190 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17191 return -EINVAL;
17192 }
17193
17194 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17195 if (msm_bedais_pp_params[index].port_id == port_id)
17196 break;
17197 }
17198 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17199 pr_err("%s: Invalid pp params backend index %d\n",
17200 __func__, index);
17201 return -EINVAL;
17202 }
17203
17204 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
17205 MSM_FRONTEND_DAI_MM_SIZE) {
17206 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
17207 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
17208 compr_passthr_mode = false;
17209
17210 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17211 unsigned long copp =
17212 session_copp_map[i]
17213 [SESSION_TYPE_RX][be_idx];
17214 if (!test_bit(idx, &copp))
17215 continue;
17216 topo_id = adm_get_topology_for_port_copp_idx(port_id,
17217 idx);
17218 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
17219 continue;
17220 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
17221 __func__, port_id, copp, msm_bedais[be_idx].active,
17222 msm_bedais[be_idx].passthr_mode[i]);
17223 switch (pp_id) {
17224 case ADM_PP_PARAM_MUTE_ID:
17225 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17226 mute = ucontrol->value.integer.value[1] ? true : false;
17227 msm_bedais_pp_params[index].mute_on = mute;
17228 set_bit(ADM_PP_PARAM_MUTE_BIT,
17229 &msm_bedais_pp_params[index].pp_params_config);
17230 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17231 adm_send_compressed_device_mute(port_id,
17232 idx, mute);
17233 break;
17234 case ADM_PP_PARAM_LATENCY_ID:
17235 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17236 msm_bedais_pp_params[index].latency =
17237 ucontrol->value.integer.value[1];
17238 set_bit(ADM_PP_PARAM_LATENCY_BIT,
17239 &msm_bedais_pp_params[index].pp_params_config);
17240 latency = msm_bedais_pp_params[index].latency =
17241 ucontrol->value.integer.value[1];
17242 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17243 adm_send_compressed_device_latency(port_id,
17244 idx, latency);
17245 break;
17246 default:
17247 pr_info("%s, device pp param %d not supported\n",
17248 __func__, pp_id);
17249 break;
17250 }
17251 }
17252 }
17253 return 0;
17254}
17255
17256static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17257 struct snd_ctl_elem_value *ucontrol)
17258{
17259 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
17260 return 0;
17261}
17262
17263static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
17264 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
17265 0, 3, msm_routing_get_device_pp_params_mixer,
17266 msm_routing_put_device_pp_params_mixer),
17267};
17268
17269static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
17270 struct snd_ctl_elem_value *ucontrol)
17271{
17272 ucontrol->value.integer.value[0] =
17273 core_get_license_status(ASM_MEDIA_FMT_APTX);
17274 pr_debug("%s: status %ld\n", __func__,
17275 ucontrol->value.integer.value[0]);
17276 return 0;
17277}
17278
17279static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
17280 struct snd_ctl_elem_value *ucontrol)
17281{
17282 int32_t status = 0;
17283
17284 status = core_set_license(ucontrol->value.integer.value[0],
17285 APTX_CLASSIC_DEC_LICENSE_ID);
17286 pr_debug("%s: status %d\n", __func__, status);
17287 return status;
17288}
17289
17290static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
17291 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
17292 0xFFFF, 0, msm_aptx_dec_license_control_get,
17293 msm_aptx_dec_license_control_put),
17294};
17295
17296static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
17297 struct snd_ctl_elem_info *uinfo)
17298{
17299 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
17300 uinfo->count = sizeof(be_dai_name_table);
17301 return 0;
17302}
17303
17304static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
17305 unsigned int __user *bytes,
17306 unsigned int size)
17307{
17308 int i;
17309 int ret;
17310
17311 if (size < sizeof(be_dai_name_table)) {
17312 pr_err("%s: invalid size %d requested, returning\n",
17313 __func__, size);
17314 ret = -EINVAL;
17315 goto done;
17316 }
17317
17318 /*
17319 * Fill be_dai_name_table from msm_bedais table to reduce code changes
17320 * needed when adding new backends
17321 */
17322 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17323 be_dai_name_table[i].be_id = i;
17324 strlcpy(be_dai_name_table[i].be_name,
17325 msm_bedais[i].name,
17326 LPASS_BE_NAME_MAX_LENGTH);
17327 }
17328
17329 ret = copy_to_user(bytes, &be_dai_name_table,
17330 sizeof(be_dai_name_table));
17331 if (ret) {
17332 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
17333 ret = -EFAULT;
17334 }
17335
17336done:
17337 return ret;
17338}
17339
17340static const struct snd_kcontrol_new
17341 msm_routing_be_dai_name_table_mixer_controls[] = {
17342 {
17343 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
17344 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
17345 .info = msm_routing_be_dai_name_table_info,
17346 .name = "Backend DAI Name Table",
17347 .tlv.c = snd_soc_bytes_tlv_callback,
17348 .private_value = (unsigned long) &(struct soc_bytes_ext) {
17349 .max = sizeof(be_dai_name_table),
17350 .get = msm_routing_be_dai_name_table_tlv_get,
17351 }
17352 },
17353};
17354
17355static int msm_routing_stereo_channel_reverse_control_get(
17356 struct snd_kcontrol *kcontrol,
17357 struct snd_ctl_elem_value *ucontrol)
17358{
17359 ucontrol->value.integer.value[0] = swap_ch;
17360 pr_debug("%s: Swap channel value: %ld\n", __func__,
17361 ucontrol->value.integer.value[0]);
17362 return 0;
17363}
17364
17365static int msm_routing_stereo_channel_reverse_control_put(
17366 struct snd_kcontrol *kcontrol,
17367 struct snd_ctl_elem_value *ucontrol)
17368{
17369 int i, idx, be_index, port_id;
17370 int ret = 0;
17371 unsigned long copp;
17372
17373 pr_debug("%s Swap channel value:%ld\n", __func__,
17374 ucontrol->value.integer.value[0]);
17375
17376 swap_ch = ucontrol->value.integer.value[0];
17377
17378 mutex_lock(&routing_lock);
17379 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
17380 port_id = msm_bedais[be_index].port_id;
17381 if (!msm_bedais[be_index].active)
17382 continue;
17383
17384 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
17385 MSM_FRONTEND_DAI_MM_SIZE) {
17386 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
17387 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17388 if (!test_bit(idx, &copp))
17389 continue;
17390
17391 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
17392 __func__, port_id, idx);
17393 ret = adm_swap_speaker_channels(
17394 port_id, idx,
17395 msm_bedais[be_index].sample_rate,
17396 swap_ch);
17397 if (ret) {
17398 pr_err("%s:Swap_channel failed, err=%d\n",
17399 __func__, ret);
17400 goto done;
17401 }
17402 }
17403 }
17404 }
17405done:
17406 mutex_unlock(&routing_lock);
17407 return ret;
17408}
17409
17410static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
17411 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
17412 1, 0, msm_routing_stereo_channel_reverse_control_get,
17413 msm_routing_stereo_channel_reverse_control_put),
17414};
17415
17416static const struct snd_pcm_ops msm_routing_pcm_ops = {
17417 .hw_params = msm_pcm_routing_hw_params,
17418 .close = msm_pcm_routing_close,
17419 .prepare = msm_pcm_routing_prepare,
17420};
17421
17422/* Not used but frame seems to require it */
17423static int msm_routing_probe(struct snd_soc_platform *platform)
17424{
17425 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
17426 ARRAY_SIZE(msm_qdsp6_widgets));
17427 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
17428 ARRAY_SIZE(intercon));
17429
17430 snd_soc_dapm_new_widgets(platform->component.dapm.card);
17431
17432 snd_soc_add_platform_controls(platform, lsm_controls,
17433 ARRAY_SIZE(lsm_controls));
17434
17435 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
17436 ARRAY_SIZE(aanc_slim_0_rx_mux));
17437
17438 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
17439 ARRAY_SIZE(msm_voc_session_controls));
17440
17441 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
17442 ARRAY_SIZE(app_type_cfg_controls));
17443
17444 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
17445 ARRAY_SIZE(lsm_app_type_cfg_controls));
17446
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070017447 snd_soc_add_platform_controls(platform, module_cfg_controls,
17448 ARRAY_SIZE(module_cfg_controls));
17449
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017450 snd_soc_add_platform_controls(platform,
17451 stereo_to_custom_stereo_controls,
17452 ARRAY_SIZE(stereo_to_custom_stereo_controls));
17453
17454 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
17455 ARRAY_SIZE(ec_ref_param_controls));
17456
17457 snd_soc_add_platform_controls(platform, channel_mixer_controls,
17458 ARRAY_SIZE(channel_mixer_controls));
17459
17460 msm_qti_pp_add_controls(platform);
17461
17462 msm_dts_srs_tm_add_controls(platform);
17463
17464 msm_dolby_dap_add_controls(platform);
17465
17466 snd_soc_add_platform_controls(platform,
17467 use_ds1_or_ds2_controls,
17468 ARRAY_SIZE(use_ds1_or_ds2_controls));
17469
17470 snd_soc_add_platform_controls(platform,
17471 device_pp_params_mixer_controls,
17472 ARRAY_SIZE(device_pp_params_mixer_controls));
17473
17474 snd_soc_add_platform_controls(platform,
17475 msm_routing_be_dai_name_table_mixer_controls,
17476 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
17477
17478 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
17479 ARRAY_SIZE(msm_source_tracking_controls));
17480 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
17481 ARRAY_SIZE(adm_channel_config_controls));
17482
17483 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
17484 ARRAY_SIZE(aptx_dec_license_controls));
17485 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
17486 ARRAY_SIZE(stereo_channel_reverse_control));
17487 return 0;
17488}
17489
17490int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
17491{
17492 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
17493}
17494
17495void msm_routing_pcm_free(struct snd_pcm *pcm)
17496{
17497 msm_pcm_routing_hwdep_free(pcm);
17498}
17499
17500static struct snd_soc_platform_driver msm_soc_routing_platform = {
17501 .ops = &msm_routing_pcm_ops,
17502 .probe = msm_routing_probe,
17503 .pcm_new = msm_routing_pcm_new,
17504 .pcm_free = msm_routing_pcm_free,
17505};
17506
17507static int msm_routing_pcm_probe(struct platform_device *pdev)
17508{
17509
17510 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
17511 return snd_soc_register_platform(&pdev->dev,
17512 &msm_soc_routing_platform);
17513}
17514
17515static int msm_routing_pcm_remove(struct platform_device *pdev)
17516{
17517 snd_soc_unregister_platform(&pdev->dev);
17518 return 0;
17519}
17520
17521static const struct of_device_id msm_pcm_routing_dt_match[] = {
17522 {.compatible = "qcom,msm-pcm-routing"},
17523 {}
17524};
17525MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
17526
17527static struct platform_driver msm_routing_pcm_driver = {
17528 .driver = {
17529 .name = "msm-pcm-routing",
17530 .owner = THIS_MODULE,
17531 .of_match_table = msm_pcm_routing_dt_match,
17532 },
17533 .probe = msm_routing_pcm_probe,
17534 .remove = msm_routing_pcm_remove,
17535};
17536
17537int msm_routing_check_backend_enabled(int fedai_id)
17538{
17539 int i;
17540
17541 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
17542 /* bad ID assigned in machine driver */
17543 pr_err("%s: bad MM ID\n", __func__);
17544 return 0;
17545 }
17546 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17547 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
17548 return msm_bedais[i].active;
17549 }
17550 return 0;
17551}
17552
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017553static int get_cal_type_index(int32_t cal_type)
17554{
17555 int ret = -EINVAL;
17556
17557 switch (cal_type) {
17558 case ADM_TOPOLOGY_CAL_TYPE:
17559 ret = ADM_TOPOLOGY_CAL_TYPE_IDX;
17560 break;
17561 case ADM_LSM_TOPOLOGY_CAL_TYPE:
17562 ret = ADM_LSM_TOPOLOGY_CAL_TYPE_IDX;
17563 break;
17564 default:
17565 pr_err("%s: Invalid cal type %d\n", __func__, cal_type);
17566 }
17567 return ret;
17568}
17569
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017570static int msm_routing_set_cal(int32_t cal_type,
17571 size_t data_size, void *data)
17572{
17573 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017574 int cal_index;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017575 pr_debug("%s\n", __func__);
17576
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017577 cal_index = get_cal_type_index(cal_type);
17578 if (cal_index < 0) {
17579 pr_err("%s: Could not get cal index %d\n",
17580 __func__, cal_index);
17581 ret = -EINVAL;
17582 goto done;
17583 }
17584
17585 ret = cal_utils_set_cal(data_size, data, cal_data[cal_index], 0, NULL);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017586 if (ret < 0) {
17587 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17588 __func__, ret, cal_type);
17589 ret = -EINVAL;
17590 goto done;
17591 }
17592done:
17593 return ret;
17594}
17595
17596static void msm_routing_delete_cal_data(void)
17597{
17598 pr_debug("%s\n", __func__);
17599
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017600 cal_utils_destroy_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017601}
17602
17603static int msm_routing_init_cal_data(void)
17604{
17605 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017606 struct cal_type_info cal_type_info[] = {
17607 {{ADM_TOPOLOGY_CAL_TYPE,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017608 {NULL, NULL, NULL,
17609 msm_routing_set_cal, NULL, NULL} },
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017610 {NULL, NULL, cal_utils_match_buf_num} },
17611
17612 {{ADM_LSM_TOPOLOGY_CAL_TYPE,
17613 {NULL, NULL, NULL,
17614 msm_routing_set_cal, NULL, NULL} },
17615 {NULL, NULL, cal_utils_match_buf_num} },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017616 };
17617 pr_debug("%s\n", __func__);
17618
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017619 ret = cal_utils_create_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0],
17620 &cal_type_info[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017621 if (ret < 0) {
17622 pr_err("%s: could not create cal type!\n",
17623 __func__);
17624 ret = -EINVAL;
17625 goto err;
17626 }
17627
17628 return ret;
17629err:
17630 msm_routing_delete_cal_data();
17631 return ret;
17632}
17633
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017634int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017635{
17636 mutex_init(&routing_lock);
17637 if (msm_routing_init_cal_data())
17638 pr_err("%s: could not init cal data!\n", __func__);
17639
17640 afe_set_routing_callback(
17641 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17642
17643 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17644 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17645
17646 return platform_driver_register(&msm_routing_pcm_driver);
17647}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017648
Asish Bhattacharya5faacb32017-12-04 17:23:15 +053017649void msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017650{
17651 msm_routing_delete_cal_data();
17652 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17653 mutex_destroy(&routing_lock);
17654 platform_driver_unregister(&msm_routing_pcm_driver);
17655}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017656
17657MODULE_DESCRIPTION("MSM routing platform driver");
17658MODULE_LICENSE("GPL v2");